128 lines
3.7 KiB
Nix
128 lines
3.7 KiB
Nix
with import <nixos-unstable> { };
|
|
|
|
neovim.override {
|
|
vimAlias = true;
|
|
|
|
configure = {
|
|
customRC = ''
|
|
source ${pkgs.fzf}/share/vim-plugins/fzf/plugin/fzf.vim
|
|
|
|
set hidden
|
|
|
|
" langserver
|
|
let g:LanguageClient_serverCommands = {
|
|
\ 'go': ['gopls'],
|
|
\ 'python': ['pyls'],
|
|
\ 'rust': ['rust-analyzer'],
|
|
\ }
|
|
|
|
" basic builtin
|
|
set background=dark
|
|
set shiftwidth=4
|
|
set softtabstop=4
|
|
set tabstop=4
|
|
set expandtab
|
|
set ttyfast
|
|
set lazyredraw
|
|
set regexpengine=1
|
|
set synmaxcol=500
|
|
set relativenumber
|
|
set number
|
|
set relativenumber
|
|
set mouse=a
|
|
set shortmess+=c
|
|
set clipboard=unnamedplus
|
|
|
|
" better search
|
|
set incsearch
|
|
set ignorecase
|
|
set smartcase
|
|
set gdefault
|
|
|
|
" autocomplete
|
|
autocmd BufEnter * call ncm2#enable_for_buffer()
|
|
inoremap <c-c> <ESC>
|
|
inoremap <expr> <CR> (pumvisible() ? "\<c-y>\<cr>" : "\<CR>")
|
|
set completeopt=noinsert,menuone,noselect
|
|
let g:LanguageClient_completionPreferTextEdit = 1
|
|
let g:LanguageClient_diagnosticsSignsMax = 0
|
|
|
|
" securemodelines
|
|
let g:secure_modelines_allowed_items = [
|
|
\ "textwidth", "tw",
|
|
\ "softtabstop", "sts",
|
|
\ "tabstop", "ts",
|
|
\ "shiftwidth", "sw",
|
|
\ "expandtab", "et", "noexpandtab", "noet",
|
|
\ "filetype", "ft",
|
|
\ "foldmethod", "fdm",
|
|
\ "readonly", "ro", "noreadonly", "noro",
|
|
\ "rightleft", "rl", "norightleft", "norl",
|
|
\ "colorcolumn"
|
|
\ ]
|
|
|
|
" leader
|
|
let mapleader = " "
|
|
nnoremap <silent> <leader> :WhichKey '<Space>'<CR>
|
|
noremap <leader><space> :Commands<cr>
|
|
noremap <leader><tab> :b#<cr>
|
|
let g:which_key_map = {}
|
|
|
|
let g:which_key_map.f = { 'name': '+files' }
|
|
noremap <leader>ff :Files<cr>
|
|
noremap <leader>fn :NnnPicker %:p:h<cr>
|
|
noremap <leader>fc :saveas %:p:h
|
|
|
|
let g:which_key_map.y = { 'name': '+yank' }
|
|
noremap <leader>yp :read !wl-paste<cr>
|
|
noremap <leader>yy :read !wl-paste<cr>
|
|
noremap <leader>ya :w !wl-copy<cr><cr>
|
|
|
|
let g:which_key_map.b = { 'name': '+buffers' }
|
|
noremap <leader>bb :Buffers<cr>
|
|
noremap <leader>bh :History<cr>
|
|
noremap <leader>bd :bd<cr>
|
|
noremap <leader>bn :bn<cr>
|
|
noremap <leader>bp :bp<cr>
|
|
|
|
let g:which_key_map.m = { 'name': '+lang' }
|
|
noremap <leader>md :call LanguageClient_textDocument_codeAction()<cr>
|
|
noremap <leader>mc :call LanguageClient#textDocument_references()<cr>
|
|
noremap <leader>mf :call LanguageClient#textDocument_formatting()<cr>
|
|
noremap <leader>mgg :call LanguageClient#textDocument_definition()<cr>
|
|
noremap <leader>mh :call LanguageClient#textDocument_documentHighlight()<cr>
|
|
noremap <leader>mm :call LanguageClient#textDocument_hover()<cr>
|
|
noremap <leader>mr :call LanguageClient#textDocument_rename()<cr>
|
|
noremap <leader>ms :call LanguageClient#workspace_symbol()<cr>
|
|
noremap <leader>ma :fzf_lsp_action<cr>
|
|
noremap <leader>ml :fzf_lsp_layout<cr>
|
|
|
|
let g:which_key_map.g = { 'name': '+git' }
|
|
noremap <leader>gs :call LazyGit<cr>
|
|
|
|
" lang specifics
|
|
let g:rustfmt_autosave = 1
|
|
let g:rustfmt_emit_files = 1
|
|
let g:rustfmt_fail_silently = 0
|
|
'';
|
|
packages.myNvim = with pkgs.vimPlugins; {
|
|
start = [
|
|
airline
|
|
easymotion
|
|
editorconfig-vim
|
|
fzf-lsp-nvim
|
|
fzf-vim
|
|
fzfWrapper
|
|
LanguageClient-neovim
|
|
lazygit-nvim
|
|
ncm2
|
|
nnn-vim
|
|
surround
|
|
syntastic
|
|
vim-addon-nix
|
|
vim-highlightedyank
|
|
vim-which-key
|
|
];
|
|
};
|
|
};
|
|
}
|