feat(neovim): migrate most vimscript to lua
This commit is contained in:
parent
09d1037a2a
commit
a102a8000b
|
@ -1,9 +0,0 @@
|
||||||
nnoremap <leader>dc <cmd>lua require'dap'.continue()<CR>
|
|
||||||
nnoremap <leader>db <cmd>lua require'dap'.toggle_breakpoint()<CR>
|
|
||||||
nnoremap <leader>do <cmd>lua require'dap'.step_over()<CR>
|
|
||||||
nnoremap <leader>di <cmd>lua require'dap'.step_into()<CR>
|
|
||||||
nnoremap <leader>dO <cmd>lua require'dap'.step_out()<CR>
|
|
||||||
nnoremap <leader>dh <cmd>lua require'dap'.goto()<CR>
|
|
||||||
nnoremap <leader>dk <cmd>lua require'dap.ui.variables'.hover()<CR>
|
|
||||||
nnoremap <leader>dr <cmd>lua require'dap'.repl.open()<CR>
|
|
||||||
nnoremap <leader>dl <cmd>lua require'dap'.repl.run_last()<CR>
|
|
11
home/editors/neovim/dap/mappings.lua
Normal file
11
home/editors/neovim/dap/mappings.lua
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
|
||||||
|
map("n", "<leader>dc", "<cmd>lua require'dap'.continue()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>db", "<cmd>lua require'dap'.toggle_breakpoint()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>do", "<cmd>lua require'dap'.step_over()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>di", "<cmd>lua require'dap'.step_into()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>dO", "<cmd>lua require'dap'.step_out()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>dh", "<cmd>lua require'dap'.goto()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>dk", "<cmd>lua require'dap.ui.variables'.hover()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>dr", "<cmd>lua require'dap'.repl.open()<CR>", { noremap = true })
|
||||||
|
map("n", "<leader>dl", "<cmd>lua require'dap'.repl.run_last()<CR>", { noremap = true })
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
vimLua = lua: ''
|
vimLua = lua: ''
|
||||||
|
@ -20,6 +20,7 @@ in {
|
||||||
fzf-vim
|
fzf-vim
|
||||||
lightline-vim
|
lightline-vim
|
||||||
nerdtree
|
nerdtree
|
||||||
|
toggleterm-nvim
|
||||||
vim-startify
|
vim-startify
|
||||||
vim-visual-multi
|
vim-visual-multi
|
||||||
vim-surround
|
vim-surround
|
||||||
|
@ -55,12 +56,21 @@ in {
|
||||||
vim-orgmode
|
vim-orgmode
|
||||||
];
|
];
|
||||||
extraConfig = with builtins;
|
extraConfig = with builtins;
|
||||||
readFile ./init.vim # + readFile ./vim-surround-fix.vim
|
# readFile ./vim-surround-fix.vim +
|
||||||
+ vimLua (readFile ./which-key.lua) + vimLua (readFile ./gitsigns.lua)
|
vimLua (lib.foldl (r: f: r + "\n" + readFile f) "" [
|
||||||
+ readFile ./test.vim + vimLua (readFile ./lsp/extensions.lua)
|
./init.lua
|
||||||
+ readFile ./lsp/lsp.vim + vimLua (readFile ./lsp/lsp.lua)
|
./startify.lua
|
||||||
+ readFile ./dap/dap.vim + vimLua (readFile ./dap/dap.lua)
|
./lightline.lua
|
||||||
+ vimLua (readFile ./treesitter.lua);
|
./which-key.lua
|
||||||
|
./gitsigns.lua
|
||||||
|
./test.lua
|
||||||
|
./lsp/extensions.lua
|
||||||
|
./lsp/lsp.lua
|
||||||
|
./lsp/mappings.lua
|
||||||
|
./dap/dap.lua
|
||||||
|
./dap/mappings.lua
|
||||||
|
./treesitter.lua
|
||||||
|
]);
|
||||||
withNodeJs = false;
|
withNodeJs = false;
|
||||||
withPython3 = false;
|
withPython3 = false;
|
||||||
};
|
};
|
||||||
|
|
48
home/editors/neovim/init.lua
Normal file
48
home/editors/neovim/init.lua
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
-- vim.opt.shell = "/bin/sh"
|
||||||
|
|
||||||
|
vim.opt.title = true
|
||||||
|
vim.opt.titlestring = "%t - nvim"
|
||||||
|
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.timeoutlen = 500
|
||||||
|
|
||||||
|
-- reduce CursorHold delay
|
||||||
|
vim.opt.updatetime = 500
|
||||||
|
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = ","
|
||||||
|
vim.g.camelcasemotion_key = "<leader>"
|
||||||
|
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
|
||||||
|
vim.g.nvcode_termcolors = 256
|
||||||
|
vim.cmd("syntax on")
|
||||||
|
vim.cmd("colorscheme nvcode")
|
||||||
|
vim.cmd("hi TSCurrentScope guifg=NONE ctermfg=NONE guibg=#252526 ctermbg=235 gui=NONE cterm=NONE")
|
||||||
|
|
||||||
|
-- vim-closetag
|
||||||
|
vim.g.closetag_filenames = "*.html,*.jsx,*.tsx,*.vue,*.xhml,*.xml"
|
||||||
|
vim.g.closetag_regions = {
|
||||||
|
["typescript.tsx"] = "jsxRegion,tsxRegion",
|
||||||
|
["javascript.jsx"] = "jsxRegion",
|
||||||
|
}
|
||||||
|
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
|
||||||
|
map("", ";", ":Files<CR>", {})
|
||||||
|
map("n", "<C-p>", ":NERDTreeToggle<CR>", {})
|
||||||
|
-- map("n", "<C-p>" ":Lexplore<CR>", { silent = true })
|
||||||
|
|
||||||
|
vim.g.netrw_banner = 0
|
||||||
|
vim.g.netrw_liststyle = 3
|
||||||
|
vim.g.netrw_browse_split = 4
|
||||||
|
vim.g.netrw_altv = 1
|
||||||
|
vim.g.netrw_winsize = 20
|
||||||
|
|
||||||
|
require("toggleterm").setup{
|
||||||
|
open_mapping = "<A-t>",
|
||||||
|
}
|
|
@ -1,144 +0,0 @@
|
||||||
" set shell=/bin/sh
|
|
||||||
|
|
||||||
set ignorecase
|
|
||||||
set smartcase
|
|
||||||
|
|
||||||
set termguicolors
|
|
||||||
set timeoutlen=500
|
|
||||||
|
|
||||||
" reduce CursorHold delay
|
|
||||||
set updatetime=500
|
|
||||||
|
|
||||||
let g:nvcode_termcolors=256
|
|
||||||
syntax on
|
|
||||||
colorscheme nvcode
|
|
||||||
hi TSCurrentScope guifg=NONE ctermfg=NONE guibg=#252526 ctermbg=235 gui=NONE cterm=NONE
|
|
||||||
|
|
||||||
function! s:gitModified()
|
|
||||||
let files = systemlist('git ls-files -m 2>/dev/null')
|
|
||||||
return map(files, "{'line': v:val, 'path': v:val}")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:gitUntracked()
|
|
||||||
let files = systemlist('git ls-files -o --exclude-standard 2>/dev/null')
|
|
||||||
return map(files, "{'line': v:val, 'path': v:val}")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:list_projects() abort
|
|
||||||
return map(['/etc/nixos/'] + finddir('.git', $HOME . '/dev/**4', -1),
|
|
||||||
\ {_, dir -> {
|
|
||||||
\ 'line': fnamemodify(dir, ':h:s?' . $HOME . '??'),
|
|
||||||
\ 'path': fnamemodify(dir, ':h')}})
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let g:startify_commands = [
|
|
||||||
\ {'h': ['Vim Help', 'help']},
|
|
||||||
\ {'r': ['Vim Reference', 'help reference']},
|
|
||||||
\ ]
|
|
||||||
|
|
||||||
let g:startify_lists = [
|
|
||||||
\ { 'header': [' Sessions'], 'type': 'sessions' },
|
|
||||||
\ { 'header': [' git modified'], 'type': function('s:gitModified') },
|
|
||||||
\ { 'header': [' git untracked'], 'type': function('s:gitUntracked') },
|
|
||||||
\ { 'header': [' Projects'], 'type': function('s:list_projects') },
|
|
||||||
\ { 'header': [' Recent files'], 'type': 'files' },
|
|
||||||
\ { 'header': [' Commands'], 'type': 'commands' },
|
|
||||||
\ ]
|
|
||||||
|
|
||||||
let mapleader=" "
|
|
||||||
let maplocalleader=","
|
|
||||||
let g:camelcasemotion_key = '<leader>'
|
|
||||||
|
|
||||||
function! LspStatus() abort
|
|
||||||
let sl = ''
|
|
||||||
if luaeval('not vim.tbl_isempty(vim.lsp.buf_get_clients(0))')
|
|
||||||
let errors = luaeval("#vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })")
|
|
||||||
let warnings = luaeval("#vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })")
|
|
||||||
let infos = luaeval("#vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO })")
|
|
||||||
let hints = luaeval("#vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT })")
|
|
||||||
if (errors || warnings || infos || hints)
|
|
||||||
if errors
|
|
||||||
let sl .= 'E' . errors
|
|
||||||
endif
|
|
||||||
if warnings
|
|
||||||
let sl .= ' W' . warnings
|
|
||||||
endif
|
|
||||||
if infos
|
|
||||||
let sl .= ' I' . infos
|
|
||||||
endif
|
|
||||||
if hints
|
|
||||||
let sl .= ' H' . hints
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let sl .= '🗸'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
return trim(sl)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! GitStatus()
|
|
||||||
return get(b:,'gitsigns_status','')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let g:lightline = {
|
|
||||||
\ 'colorscheme': 'powerline',
|
|
||||||
\ 'active': {
|
|
||||||
\ 'left': [ [ 'mode', 'paste' ],
|
|
||||||
\ [ 'lspstatus', 'readonly', 'filename', 'gitstatus', 'modified' ] ]
|
|
||||||
\ },
|
|
||||||
\ 'component_function': {
|
|
||||||
\ 'lspstatus': 'LspStatus',
|
|
||||||
\ 'gitstatus': 'GitStatus'
|
|
||||||
\ },
|
|
||||||
\ }
|
|
||||||
|
|
||||||
set relativenumber
|
|
||||||
set splitbelow
|
|
||||||
|
|
||||||
map ; :Files<CR>
|
|
||||||
nmap <C-p> :NERDTreeToggle<CR>
|
|
||||||
" nmap <silent> <C-p> :Lexplore<CR>
|
|
||||||
|
|
||||||
let g:netrw_banner = 0
|
|
||||||
let g:netrw_liststyle = 3
|
|
||||||
let g:netrw_browse_split = 4
|
|
||||||
let g:netrw_altv = 1
|
|
||||||
let g:netrw_winsize = 20
|
|
||||||
|
|
||||||
" Terminal Function
|
|
||||||
let g:term_buf = 0
|
|
||||||
let g:term_win = 0
|
|
||||||
function! TermToggle(height)
|
|
||||||
if win_gotoid(g:term_win)
|
|
||||||
hide
|
|
||||||
else
|
|
||||||
botright new
|
|
||||||
exec "resize " . a:height
|
|
||||||
try
|
|
||||||
exec "buffer " . g:term_buf
|
|
||||||
catch
|
|
||||||
call termopen($SHELL, {"detach": 0})
|
|
||||||
let g:term_buf = bufnr("")
|
|
||||||
set nonumber
|
|
||||||
set norelativenumber
|
|
||||||
set signcolumn=no
|
|
||||||
endtry
|
|
||||||
startinsert!
|
|
||||||
let g:term_win = win_getid()
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Toggle terminal on/off (neovim)
|
|
||||||
nnoremap <A-t> :call TermToggle(12)<CR>
|
|
||||||
inoremap <A-t> <Esc>:call TermToggle(12)<CR>
|
|
||||||
tnoremap <A-t> <C-\><C-n>:call TermToggle(12)<CR>
|
|
||||||
|
|
||||||
" Terminal go back to normal mode
|
|
||||||
tnoremap :q! <C-\><C-n>:q!<CR>
|
|
||||||
|
|
||||||
" vim-closetag
|
|
||||||
let g:closetag_filenames = "*.html,*.jsx,*.tsx,*.vue,*.xhml,*.xml"
|
|
||||||
let g:closetag_regions = {
|
|
||||||
\ 'typescript.tsx': 'jsxRegion,tsxRegion',
|
|
||||||
\ 'javascript.jsx': 'jsxRegion',
|
|
||||||
\ }
|
|
54
home/editors/neovim/lightline.lua
Normal file
54
home/editors/neovim/lightline.lua
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
function LspStatus()
|
||||||
|
local sl = ""
|
||||||
|
if not vim.tbl_isempty(vim.lsp.buf_get_clients(0)) then
|
||||||
|
local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })
|
||||||
|
local warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
|
||||||
|
local infos = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO })
|
||||||
|
local hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT })
|
||||||
|
if (errors > 0 or warnings > 0 or infos > 0 or hints > 0) then
|
||||||
|
if errors > 0 then
|
||||||
|
sl = sl .. "E" .. errors
|
||||||
|
end
|
||||||
|
if warnings > 0 then
|
||||||
|
sl = sl .. " W" .. warnings
|
||||||
|
end
|
||||||
|
if infos > 0 then
|
||||||
|
sl = sl .. " I" .. infos
|
||||||
|
end
|
||||||
|
if hints > 0 then
|
||||||
|
sl = sl .. " H" .. hints
|
||||||
|
end
|
||||||
|
else
|
||||||
|
sl = sl .. "🗸"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return sl
|
||||||
|
end
|
||||||
|
|
||||||
|
function GitStatus()
|
||||||
|
local status = vim.b.gitsigns_status
|
||||||
|
return status ~= nil and status or ""
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.lightline = {
|
||||||
|
colorscheme = "powerline",
|
||||||
|
active = {
|
||||||
|
left = {
|
||||||
|
{ "mode", "paste" },
|
||||||
|
{ "lspstatus", "readonly", "filename", "gitstatus", "modified" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
component_expand = {
|
||||||
|
lspstatus = "{ -> luaeval('LspStatus()')}",
|
||||||
|
gitstatus = "{ -> luaeval('GitStatus()')}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- update on lsp status changes
|
||||||
|
vim.cmd([[
|
||||||
|
augroup lightline_diagnostics
|
||||||
|
autocmd!
|
||||||
|
autocmd User LspProgressUpdate call lightline#update()
|
||||||
|
autocmd DiagnosticChanged * call lightline#update()
|
||||||
|
augroup END
|
||||||
|
]])
|
|
@ -1,4 +1,18 @@
|
||||||
local config = require'lspconfig'
|
-- autocomplete config
|
||||||
|
vim.opt.completeopt="menuone,noinsert"
|
||||||
|
vim.opt.shortmess:append("c")
|
||||||
|
|
||||||
|
require'compe'.setup {
|
||||||
|
enabled = true,
|
||||||
|
preselect = "always",
|
||||||
|
allow_prefix_unmatch = true,
|
||||||
|
source = {
|
||||||
|
path = true,
|
||||||
|
calc = true,
|
||||||
|
nvim_lsp = true,
|
||||||
|
vsnip = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
local pid = vim.fn.getpid()
|
local pid = vim.fn.getpid()
|
||||||
|
|
||||||
|
@ -21,6 +35,8 @@ end
|
||||||
require('lspfuzzy').setup {}
|
require('lspfuzzy').setup {}
|
||||||
|
|
||||||
-- enable lsp snippets for nvim-compe
|
-- enable lsp snippets for nvim-compe
|
||||||
|
|
||||||
|
local config = require'lspconfig'
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
local servers = {
|
local servers = {
|
||||||
|
@ -32,6 +48,7 @@ local servers = {
|
||||||
"dockerls",
|
"dockerls",
|
||||||
"rnix",
|
"rnix",
|
||||||
"tsserver",
|
"tsserver",
|
||||||
|
"graphql",
|
||||||
"pylsp",
|
"pylsp",
|
||||||
"terraformls",
|
"terraformls",
|
||||||
"hls",
|
"hls",
|
||||||
|
@ -222,7 +239,7 @@ config.diagnosticls.setup {
|
||||||
}
|
}
|
||||||
|
|
||||||
-- nvim-autoclose & nvim-compe compatibility
|
-- nvim-autoclose & nvim-compe compatibility
|
||||||
local remap = vim.api.nvim_set_keymap
|
local map = vim.api.nvim_set_keymap
|
||||||
local npairs = require('nvim-autopairs')
|
local npairs = require('nvim-autopairs')
|
||||||
|
|
||||||
npairs.setup({
|
npairs.setup({
|
||||||
|
@ -244,4 +261,4 @@ MUtils.completion_confirm=function()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
remap('i' , '<CR>','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true})
|
map('i' , '<CR>','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true})
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
" autocomplete config
|
|
||||||
set completeopt=menuone,noinsert
|
|
||||||
set shortmess+=c
|
|
||||||
|
|
||||||
let g:compe = {}
|
|
||||||
let g:compe.enabled = v:true
|
|
||||||
let g:compe.preselect = 'always'
|
|
||||||
let g:compe.allow_prefix_unmatch = v:true
|
|
||||||
let g:compe.source = {}
|
|
||||||
let g:compe.source.path = v:true
|
|
||||||
let g:compe.source.calc = v:true
|
|
||||||
let g:compe.source.nvim_lsp = v:true
|
|
||||||
let g:compe.source.vsnip = v:true
|
|
||||||
|
|
||||||
inoremap <silent><expr> <C-Space> compe#complete()
|
|
||||||
inoremap <silent><expr> <CR> compe#confirm('<CR>')
|
|
||||||
inoremap <silent><expr> <C-e> compe#close('<C-e>')
|
|
||||||
inoremap <silent><expr> <C-f> compe#scroll({ 'delta': +4 })
|
|
||||||
inoremap <silent><expr> <C-d> compe#scroll({ 'delta': -4 })
|
|
||||||
|
|
||||||
" Use <Tab> and <S-Tab> to navigate through popup menu
|
|
||||||
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
|
||||||
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
|
|
||||||
|
|
||||||
" maps
|
|
||||||
nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>
|
|
||||||
nnoremap <silent> gp <cmd>lua peek_definition()<CR>
|
|
||||||
nnoremap <silent> gy <cmd>lua vim.lsp.buf.type_definition()<CR>
|
|
||||||
nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>
|
|
||||||
nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>
|
|
||||||
nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>
|
|
||||||
nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR>
|
|
||||||
nnoremap <silent> <c-k> <cmd>lua vim.lsp.buf.signature_help()<CR>
|
|
||||||
nnoremap <silent> <leader>sd <cmd>lua vim.lsp.buf.document_symbol()<CR>
|
|
||||||
nnoremap <silent> <leader>sw <cmd>lua vim.lsp.buf.workspace_symbol()<CR>
|
|
||||||
nnoremap <silent> <leader>f <cmd>lua vim.lsp.buf.formatting_seq_sync(nil, nil, { 'tsserver', 'diagnosticls' })<CR>
|
|
||||||
nnoremap <silent> <leader>a <cmd>lua vim.lsp.buf.code_action()<CR>
|
|
||||||
nnoremap <silent> <leader>r <cmd>lua vim.lsp.buf.rename()<CR>
|
|
||||||
nnoremap <silent> <leader>i <cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>
|
|
||||||
nnoremap <silent> <leader>q <cmd>lua vim.lsp.diagnostic.set_loclist()<CR>
|
|
||||||
nnoremap <silent> [d <cmd>lua vim.lsp.diagnostic.goto_prev()<CR>
|
|
||||||
nnoremap <silent> ]d <cmd>lua vim.lsp.diagnostic.goto_next()<CR>
|
|
30
home/editors/neovim/lsp/mappings.lua
Normal file
30
home/editors/neovim/lsp/mappings.lua
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
|
||||||
|
map("i", "<C-Space>", "compe#complete()", { noremap = true, expr = true, silent = true })
|
||||||
|
map("i", "<CR>", "compe#confirm('<CR>')", { noremap = true, expr = true, silent = true })
|
||||||
|
map("i", "<C-e>", "compe#close('<C-e>')", { noremap = true, expr = true, silent = true })
|
||||||
|
map("i", "<C-f>", "compe#scroll({ 'delta': +4 })", { noremap = true, expr = true, silent = true })
|
||||||
|
map("i", "<C-d>", "compe#scroll({ 'delta': -4 })", { noremap = true, expr = true, silent = true })
|
||||||
|
|
||||||
|
-- Use <Tab> and <S-Tab> to navigate through popup menu
|
||||||
|
map("i", "<Tab>", "pumvisible() ? '<C-n>' : '<Tab>'", { noremap = true, expr = true })
|
||||||
|
map("i", "<S-Tab>", "pumvisible() ? '<C-p>' : '<S-Tab>'", { noremap = true, expr = true })
|
||||||
|
|
||||||
|
-- maps
|
||||||
|
map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "gp", "<cmd>lua peek_definition()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "gy", "<cmd>lua vim.lsp.buf.type_definition()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<c-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>sd", "<cmd>lua vim.lsp.buf.document_symbol()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>sw", "<cmd>lua vim.lsp.buf.workspace_symbol()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>f", "<cmd>lua vim.lsp.buf.formatting_seq_sync(nil, nil, { 'tsserver', 'diagnosticls' })<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>a", "<cmd>lua vim.lsp.buf.code_action()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>i", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "<leader>q", "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "[d", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", { noremap = true, silent = true })
|
||||||
|
map("n", "]d", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", { noremap = true, silent = true })
|
49
home/editors/neovim/startify.lua
Normal file
49
home/editors/neovim/startify.lua
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
local function formatDirs(files)
|
||||||
|
local results = {}
|
||||||
|
for _, file in ipairs(files) do
|
||||||
|
table.insert(results, { line = file, path = file })
|
||||||
|
end
|
||||||
|
return results
|
||||||
|
end
|
||||||
|
|
||||||
|
local function gitModified()
|
||||||
|
local files = vim.fn.systemlist("git ls-files -m 2>/dev/null")
|
||||||
|
return formatDirs(files)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function gitUntracked()
|
||||||
|
local files = vim.fn.systemlist("git ls-files -o --exclude-standard 2>/dev/null")
|
||||||
|
return formatDirs(files)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function escapePattern(text)
|
||||||
|
return text:gsub("([^%w])", "%%%1")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function listProjects()
|
||||||
|
local gitDirs = vim.fn.finddir(".git", vim.env.HOME .. "/dev/**4", -1)
|
||||||
|
table.insert(gitDirs, 1, "/etc/nixos")
|
||||||
|
return vim.fn.map(gitDirs, function(_, gitDir)
|
||||||
|
local dir = gitDir:gsub(escapePattern(".git"), "")
|
||||||
|
dir = dir == "" and "." or dir
|
||||||
|
local line = dir:gsub(escapePattern(vim.env.HOME), "~")
|
||||||
|
return {
|
||||||
|
line = line,
|
||||||
|
path = dir,
|
||||||
|
} end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.startify_commands = {
|
||||||
|
{h = {"Vim Help", "help"}},
|
||||||
|
{r = {"Vim Reference", "help reference"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.g.startify_lists = {
|
||||||
|
{ header = {" Sessions"}, type = "sessions" },
|
||||||
|
{ header = {" git modified"}, type = gitModified },
|
||||||
|
{ header = {" git untracked"}, type = gitUntracked },
|
||||||
|
{ header = {" Projects"}, type = listProjects },
|
||||||
|
{ header = {" Recent files"}, type = "files" },
|
||||||
|
{ header = {" Commands"}, type = "commands" },
|
||||||
|
}
|
3
home/editors/neovim/test.lua
Normal file
3
home/editors/neovim/test.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
vim.g["test#strategy"] = "neovim"
|
||||||
|
vim.g["test#csharp#runner"] = "dotnettest"
|
||||||
|
-- vim.g["test#csharp#dotnettest#options"] = "-v q"
|
|
@ -1,3 +0,0 @@
|
||||||
let g:test#strategy = 'neovim'
|
|
||||||
let g:test#csharp#runner = 'dotnettest'
|
|
||||||
" let test#csharp#dotnettest#options = '-v q'
|
|
Loading…
Reference in a new issue