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 = [
|
imports = [
|
||||||
../programs/zsh.nix
|
../programs/zsh.nix
|
||||||
../programs/vim.nix
|
../programs/vim
|
||||||
../programs/tmux.nix
|
../programs/tmux.nix
|
||||||
../programs/ssh.nix
|
../programs/ssh.nix
|
||||||
];
|
];
|
||||||
|
@ -35,7 +35,7 @@ desktop: {pkgs, ...}: {
|
||||||
accounts.email.maildirBasePath = "Maildir";
|
accounts.email.maildirBasePath = "Maildir";
|
||||||
accounts.email.accounts = rec {
|
accounts.email.accounts = rec {
|
||||||
lotte = {
|
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 = {
|
gpg = {
|
||||||
encryptByDefault = true;
|
encryptByDefault = true;
|
||||||
key = "B4E3D4801C49EC5E";
|
key = "B4E3D4801C49EC5E";
|
||||||
|
@ -44,7 +44,7 @@ desktop: {pkgs, ...}: {
|
||||||
imap.host = "mail.chir.rs";
|
imap.host = "mail.chir.rs";
|
||||||
imapnotify = {
|
imapnotify = {
|
||||||
enable = true;
|
enable = true;
|
||||||
boxes = ["Inbox"];
|
boxes = [ "Inbox" ];
|
||||||
onNotify = "${pkgs.isync}/bin/mbsync -a || true";
|
onNotify = "${pkgs.isync}/bin/mbsync -a || true";
|
||||||
onNotifyPost =
|
onNotifyPost =
|
||||||
if desktop
|
if desktop
|
||||||
|
@ -77,7 +77,7 @@ desktop: {pkgs, ...}: {
|
||||||
lotte
|
lotte
|
||||||
// {
|
// {
|
||||||
address = "mdelenk@hs-mittweida.de";
|
address = "mdelenk@hs-mittweida.de";
|
||||||
aliases = [];
|
aliases = [ ];
|
||||||
gpg =
|
gpg =
|
||||||
lotte.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