use lua config and switch to nvim-lsp
This commit is contained in:
parent
d2d6f8c6e7
commit
cded6fcc34
4 changed files with 129 additions and 78 deletions
|
@ -1,7 +1,7 @@
|
|||
desktop: {pkgs, ...}: {
|
||||
desktop: { pkgs, ... }: {
|
||||
imports = [
|
||||
../programs/zsh.nix
|
||||
../programs/vim.nix
|
||||
../programs/vim
|
||||
../programs/tmux.nix
|
||||
../programs/ssh.nix
|
||||
];
|
||||
|
@ -35,7 +35,7 @@ desktop: {pkgs, ...}: {
|
|||
accounts.email.maildirBasePath = "Maildir";
|
||||
accounts.email.accounts = rec {
|
||||
lotte = {
|
||||
aliases = ["darkkirb@darkkirb.de" "postmaster@darkkirb.de" "postmaster@chir.rs" "postmaster@miifox.net"];
|
||||
aliases = [ "darkkirb@darkkirb.de" "postmaster@darkkirb.de" "postmaster@chir.rs" "postmaster@miifox.net" ];
|
||||
gpg = {
|
||||
encryptByDefault = true;
|
||||
key = "B4E3D4801C49EC5E";
|
||||
|
@ -44,7 +44,7 @@ desktop: {pkgs, ...}: {
|
|||
imap.host = "mail.chir.rs";
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
boxes = ["Inbox"];
|
||||
boxes = [ "Inbox" ];
|
||||
onNotify = "${pkgs.isync}/bin/mbsync -a || true";
|
||||
onNotifyPost =
|
||||
if desktop
|
||||
|
@ -77,7 +77,7 @@ desktop: {pkgs, ...}: {
|
|||
lotte
|
||||
// {
|
||||
address = "mdelenk@hs-mittweida.de";
|
||||
aliases = [];
|
||||
aliases = [ ];
|
||||
gpg =
|
||||
lotte.gpg
|
||||
// {
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
dsquotes = "''";
|
||||
in
|
||||
{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
set tabstop=4
|
||||
set shiftwidth=4
|
||||
set expandtab
|
||||
set nocompatible
|
||||
set number relativenumber
|
||||
set mouse=a
|
||||
set hidden
|
||||
set clipboard=unnamedplus " the *correct* default clipboard thank you
|
||||
" Give more space for displaying messages.
|
||||
set cmdheight=2
|
||||
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
|
||||
" delays and poor user experience.
|
||||
set updatetime=300
|
||||
" Don't pass messages to |ins-completion-menu|.
|
||||
set shortmess+=c
|
||||
set signcolumn=number
|
||||
|
||||
|
||||
" NerdTree config
|
||||
" Automatically open NERDTree and move to the previous window
|
||||
autocmd VimEnter * NERDTree | wincmd p
|
||||
" Close vim when NERDTree is the only window left
|
||||
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
|
||||
" Ban replacing NERDTree
|
||||
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
|
||||
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
|
||||
|
||||
" NerdTree git plugin
|
||||
" Use nerdfonts
|
||||
let g:NERDTreeGitStatusUseNerdFonts = 1
|
||||
|
||||
" CtrlP config
|
||||
let g:ctrlp_map = '<c-p>'
|
||||
let g:ctrlp_cmd = 'CtrlP'
|
||||
|
||||
" Tagbar config
|
||||
nmap <F8> :TagbarToggle<CR>
|
||||
|
||||
|
||||
|
||||
" ctags path
|
||||
let g:tagbar_ctags_bin = '${pkgs.universal-ctags}/bin/ctags'
|
||||
|
||||
" use poweernline fonts
|
||||
let g:airline_powerline_fonts = 1
|
||||
let g:airline_highlighting_cache = 1
|
||||
'';
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
nerdtree
|
||||
nerdtree-git-plugin
|
||||
vim-devicons
|
||||
ctrlp-vim
|
||||
vim-nix
|
||||
tagbar
|
||||
vim-airline
|
||||
copilot-vim
|
||||
rust-vim # for proper syntax highlighting
|
||||
tabline-nvim
|
||||
nvim-lspconfig
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
nodejs_latest
|
||||
];
|
||||
};
|
||||
}
|
94
config/programs/vim/base.lua
Normal file
94
config/programs/vim/base.lua
Normal file
|
@ -0,0 +1,94 @@
|
|||
local o = vim.o
|
||||
local wo = vim.wo
|
||||
local bo = vim.bo
|
||||
local map = vim.api.nvim_set_keymap
|
||||
|
||||
o.number = "ar"
|
||||
o.clipboard = "unnamedplus" -- The correct default clipboard
|
||||
o.cmdheight = 2 -- more space for displaying messages
|
||||
-- Having longer updatetime (default is 4000ms = 4s) leads to noticeable delays and poor user experience
|
||||
o.updatetime = 300
|
||||
-- don’t pass messages to |ins-completion-menu|
|
||||
o.shortmess ..= "c"
|
||||
|
||||
wo.number = "relativenumber"
|
||||
wo.signcolumn = "number"
|
||||
|
||||
bo.tabstop = 2
|
||||
bo.shiftwidth = 2
|
||||
bo.expandtab = true
|
||||
|
||||
-- NerdTree config
|
||||
-- Automatically open NERDTre and move to the previous window
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
command = "NERDTree | wincmd p"
|
||||
})
|
||||
-- Close vim when NERDTree is the only window left
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
command = "if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif"
|
||||
})
|
||||
-- Ban replacing NERDTree
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
command = "if bufname('#') =~ 'NERD_tree_\\d\\+' && bufname('%') !~ 'NERD_tree_\\d\\+' && winnr('$') > 1 | let buf=bufnr() | buffer# | execute \"normal! \\<C-W>w\" | execute 'buffer'.buf | endif"
|
||||
})
|
||||
|
||||
-- Use NerdFonts
|
||||
vim.api.nvim_set_var("NERDTreeGitStatusUseNerdFonts", 1)
|
||||
|
||||
-- CtrlP config
|
||||
vim.api.nvim_set_var("ctrlp_map", "<c-p>")
|
||||
vim.api.nvim_set_var("ctrlp_cmd", "CtrlP")
|
||||
|
||||
-- Tagbar config
|
||||
map('n', "<F8>", ":TagbarToggle<CR>")
|
||||
|
||||
-- use powerline fonts
|
||||
vim.api.nvim_set_var("airline_powerline_fonts", 1)
|
||||
vim.api.nvim_set_var("airline_highlighting_cache", 1)
|
||||
|
||||
-- Mappings.
|
||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||
local opts = { noremap=true, silent=true }
|
||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
||||
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
||||
|
||||
-- Use an on_attach function to only map the following keys
|
||||
-- after the language server attaches to the current buffer
|
||||
local on_attach = function(client, bufnr)
|
||||
-- Enable completion triggered by <c-x><c-o>
|
||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||
|
||||
-- Mappings.
|
||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
||||
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||
vim.keymap.set('n', '<space>wl', function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, bufopts)
|
||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
||||
vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
|
||||
end
|
||||
|
||||
-- Use a loop to conveniently call 'setup' on multiple servers and
|
||||
-- map buffer local keybindings when the language server attaches
|
||||
local servers = { 'rust_analyzer' }
|
||||
for _, lsp in pairs(servers) do
|
||||
require('lspconfig')[lsp].setup {
|
||||
on_attach = on_attach,
|
||||
flags = {
|
||||
-- This will be the default in neovim 0.7+
|
||||
debounce_text_changes = 150,
|
||||
}
|
||||
}
|
||||
end
|
30
config/programs/vim/default.nix
Normal file
30
config/programs/vim/default.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
dsquotes = "''";
|
||||
in
|
||||
{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
universal-ctags
|
||||
rust-analyzer
|
||||
];
|
||||
extraConfig = ''
|
||||
lua require("base")
|
||||
'';
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
nerdtree
|
||||
nerdtree-git-plugin
|
||||
vim-devicons
|
||||
ctrlp-vim
|
||||
vim-nix
|
||||
tagbar
|
||||
vim-airline
|
||||
copilot-vim
|
||||
rust-vim # for proper syntax highlighting
|
||||
tabline-nvim
|
||||
nvim-lspconfig
|
||||
];
|
||||
};
|
||||
xdg.configFile."nvim/lua/base.lua".source = ./base.lua;
|
||||
}
|
Loading…
Reference in a new issue