feat(neovim): update config
This commit is contained in:
parent
5e0b72ca74
commit
0a772c90b0
|
@ -1,16 +1,9 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [ ./lsp.nix ./neovim ./vscode.nix ];
|
||||||
./lsp.nix
|
|
||||||
./neovim.nix
|
|
||||||
./vscode.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [ fzf ripgrep ];
|
||||||
fzf
|
|
||||||
ripgrep
|
|
||||||
];
|
|
||||||
|
|
||||||
home.sessionVariables = with pkgs; {
|
home.sessionVariables = with pkgs; {
|
||||||
EDITOR = "nvim";
|
EDITOR = "nvim";
|
||||||
|
|
|
@ -1,194 +0,0 @@
|
||||||
" autocomplete config
|
|
||||||
set completeopt=menu,preview,menuone,noinsert
|
|
||||||
set omnifunc=v:lua.vim.lsp.omnifunc
|
|
||||||
|
|
||||||
let g:deoplete#enable_at_startup = 1
|
|
||||||
let g:deoplete#smart_case = 1
|
|
||||||
|
|
||||||
" Use <c-space> to trigger completion.
|
|
||||||
inoremap <silent><expr> <c-space> deoplete#manual_complete()
|
|
||||||
|
|
||||||
" Autocomplete and cycle from top-to-bottom of suggestions using <Tab>.
|
|
||||||
inoremap <expr><TAB> pumvisible() ? "\<c-n>" : "\<TAB>"
|
|
||||||
|
|
||||||
" <TAB>: completion.
|
|
||||||
inoremap <silent><expr> <TAB>
|
|
||||||
\ pumvisible() ? "\<C-n>" :
|
|
||||||
\ <SID>check_back_space() ? "\<TAB>" :
|
|
||||||
\ deoplete#manual_complete()
|
|
||||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
|
||||||
|
|
||||||
function! s:check_back_space() abort
|
|
||||||
let col = col('.') - 1
|
|
||||||
return !col || getline('.')[col - 1] =~# '\s'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" maps
|
|
||||||
nnoremap <silent> gd <cmd>lua vim.lsp.buf.declaration()<CR>
|
|
||||||
nnoremap <silent> <c-]> <cmd>lua vim.lsp.buf.definition()<CR>
|
|
||||||
nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR>
|
|
||||||
nnoremap <silent> gD <cmd>lua vim.lsp.buf.implementation()<CR>
|
|
||||||
nnoremap <silent> <c-k> <cmd>lua vim.lsp.buf.signature_help()<CR>
|
|
||||||
nnoremap <silent> 1gD <cmd>lua vim.lsp.buf.type_definition()<CR>
|
|
||||||
nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>
|
|
||||||
nnoremap <silent> g0 <cmd>lua vim.lsp.buf.document_symbol()<CR>
|
|
||||||
nnoremap <silent> gW <cmd>lua vim.lsp.buf.workspace_symbol()<CR>
|
|
||||||
nnoremap <silent> <leader>f <cmd>lua vim.lsp.buf.formatting()<CR>
|
|
||||||
nnoremap <silent> <leader>a <cmd>lua vim.lsp.buf.code_action()<CR>
|
|
||||||
nnoremap <silent> <leader>r <cmd>lua vim.lsp.buf.rename()<CR>
|
|
||||||
|
|
||||||
" nvim-lsp config
|
|
||||||
packloadall " https://github.com/neovim/neovim/issues/11407
|
|
||||||
lua << EOF
|
|
||||||
local nvim_lsp = require'nvim_lsp'
|
|
||||||
local configs = require'nvim_lsp/configs'
|
|
||||||
local util = require'nvim_lsp/util'
|
|
||||||
|
|
||||||
-- format on save
|
|
||||||
-- TODO often takes way longer to save than 1000 ms (e.g. 7000 ms in fitnesspilot-web)
|
|
||||||
local diagnosticls_on_attach = function(_, bufnr)
|
|
||||||
vim.api.nvim_command("au BufWritePre <buffer> lua vim.lsp.buf.formatting_sync(nil, 1000)")
|
|
||||||
end
|
|
||||||
|
|
||||||
nvim_lsp.bashls.setup{}
|
|
||||||
nvim_lsp.jsonls.setup{}
|
|
||||||
nvim_lsp.yamlls.setup{}
|
|
||||||
nvim_lsp.html.setup{}
|
|
||||||
nvim_lsp.cssls.setup{}
|
|
||||||
nvim_lsp.vimls.setup{}
|
|
||||||
nvim_lsp.dockerls.setup{}
|
|
||||||
nvim_lsp.rnix.setup{}
|
|
||||||
nvim_lsp.tsserver.setup{}
|
|
||||||
nvim_lsp.omnisharp.setup{
|
|
||||||
cmd = {"omnisharp", "--languageserver"};
|
|
||||||
}
|
|
||||||
nvim_lsp.pyls.setup{}
|
|
||||||
nvim_lsp.terraformls.setup{}
|
|
||||||
nvim_lsp.hls.setup{}
|
|
||||||
|
|
||||||
-- based on: https://github.com/mikew/vimrc/blob/master/src/nvim/coc-settings.json
|
|
||||||
nvim_lsp.diagnosticls.setup{
|
|
||||||
on_attach = diagnosticls_on_attach;
|
|
||||||
filetypes = {
|
|
||||||
"javascript",
|
|
||||||
"javascript.jsx",
|
|
||||||
"javascriptreact",
|
|
||||||
"typescript",
|
|
||||||
"typescript.jsx",
|
|
||||||
"typescriptreact",
|
|
||||||
"json",
|
|
||||||
"yaml",
|
|
||||||
"markdown",
|
|
||||||
"html",
|
|
||||||
"css"
|
|
||||||
};
|
|
||||||
init_options = {
|
|
||||||
linters = {
|
|
||||||
eslint = {
|
|
||||||
command = "eslint";
|
|
||||||
args = {
|
|
||||||
"--stdin",
|
|
||||||
"--stdin-filename",
|
|
||||||
"%filepath",
|
|
||||||
"--format",
|
|
||||||
"json"
|
|
||||||
};
|
|
||||||
rootPatterns = {".git"};
|
|
||||||
debounce = 50;
|
|
||||||
sourceName = "eslint";
|
|
||||||
parseJson = {
|
|
||||||
errorsRoot = "[0].messages";
|
|
||||||
line = "line";
|
|
||||||
column = "column";
|
|
||||||
endLine = "endLine";
|
|
||||||
endColumn = "endColumn";
|
|
||||||
message = "${message} [${ruleId}]";
|
|
||||||
security = "severity";
|
|
||||||
};
|
|
||||||
securities = {
|
|
||||||
["2"] = "error";
|
|
||||||
["1"] = "warning";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
stylelint = {
|
|
||||||
command = "stylelint";
|
|
||||||
args = {
|
|
||||||
"--stdin",
|
|
||||||
"--formatter",
|
|
||||||
"json",
|
|
||||||
"--file",
|
|
||||||
"%filepath"
|
|
||||||
};
|
|
||||||
rootPatterns = {".git"};
|
|
||||||
debounce = 50;
|
|
||||||
sourceName = "stylelint";
|
|
||||||
parseJson = {
|
|
||||||
errorsRoot = "[0].warnings";
|
|
||||||
line = "line";
|
|
||||||
column = "column";
|
|
||||||
message = "${text}";
|
|
||||||
security = "severity";
|
|
||||||
};
|
|
||||||
securities = {
|
|
||||||
error = "error";
|
|
||||||
warning = "warning";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
filetypes = {
|
|
||||||
javascript = {"eslint"};
|
|
||||||
["javascript.jsx"] = {"eslint"};
|
|
||||||
javascriptreact = {"eslint"};
|
|
||||||
typescript = {"eslint"};
|
|
||||||
["typescript.jsx"] = {"eslint"};
|
|
||||||
typescriptreact = {"eslint"};
|
|
||||||
css = {"stylelint"};
|
|
||||||
};
|
|
||||||
formatters = {
|
|
||||||
eslint = {
|
|
||||||
command = "eslint";
|
|
||||||
args = {
|
|
||||||
"--fix",
|
|
||||||
"%file"
|
|
||||||
};
|
|
||||||
rootPatterns = {".git"};
|
|
||||||
isStdout = 1;
|
|
||||||
doesWriteToFile = 1;
|
|
||||||
};
|
|
||||||
stylelint = {
|
|
||||||
command = "stylelint";
|
|
||||||
args = {
|
|
||||||
"--stdin",
|
|
||||||
"--fix",
|
|
||||||
"--file",
|
|
||||||
"%filepath"
|
|
||||||
};
|
|
||||||
rootPatterns = {".git"};
|
|
||||||
};
|
|
||||||
prettier = {
|
|
||||||
command = "prettier";
|
|
||||||
args = {
|
|
||||||
"--stdin",
|
|
||||||
"--stdin-filepath",
|
|
||||||
"%filepath"
|
|
||||||
};
|
|
||||||
rootPatterns = {".git"};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
formatFiletypes = {
|
|
||||||
javascript = {"eslint"};
|
|
||||||
["javascript.jsx"] = {"eslint"};
|
|
||||||
javascriptreact = {"eslint"};
|
|
||||||
typescript = {"eslint"};
|
|
||||||
["typescript.jsx"] = {"eslint"};
|
|
||||||
typescriptreact = {"eslint"};
|
|
||||||
json = {"prettier"};
|
|
||||||
yaml = {"prettier"};
|
|
||||||
markdown = {"prettier"};
|
|
||||||
html = {"prettier"};
|
|
||||||
css = {"stylelint"};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
9
home/editors/neovim/dap.vim
Normal file
9
home/editors/neovim/dap.vim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
nnoremap <silent> <F5> :lua require'dap'.continue()<CR>
|
||||||
|
nnoremap <silent> <F10> :lua require'dap'.step_over()<CR>
|
||||||
|
nnoremap <silent> <F11> :lua require'dap'.step_into()<CR>
|
||||||
|
nnoremap <silent> <F12> :lua require'dap'.step_out()<CR>
|
||||||
|
nnoremap <silent> <leader>b :lua require'dap'.toggle_breakpoint()<CR>
|
||||||
|
nnoremap <silent> <leader>B :lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>
|
||||||
|
nnoremap <silent> <leader>lp :lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>
|
||||||
|
nnoremap <silent> <leader>dr :lua require'dap'.repl.open()<CR>
|
||||||
|
nnoremap <silent> <leader>dl :lua require'dap'.repl.run_last()<CR>
|
|
@ -2,16 +2,14 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
neovim-unwrapped = pkgs.neovim-unwrapped.overrideAttrs (oldAttrs: rec {
|
neovim-unwrapped = pkgs.neovim-unwrapped.overrideAttrs (oldAttrs: rec {
|
||||||
version = "2020-09-16";
|
version = "2020-09-24";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "neovim";
|
owner = "neovim";
|
||||||
repo = "neovim";
|
repo = "neovim";
|
||||||
rev = "c3f4610922b3f26c952281481f65d255ad352ac5";
|
rev = "a958039f0ad7cd4f6a139fde18795c88c623a30e";
|
||||||
sha256 = "1pcrngx26mkxpcdz897nps1v6hvwq9phrx92bsyixsva5z9h468h";
|
sha256 = "04xkms6vvfa0zafvijw6mc88adfsmrksan8hg2p6jp0kwc5i9kqq";
|
||||||
};
|
};
|
||||||
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [
|
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ pkgs.utf8proc ];
|
||||||
pkgs.utf8proc
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
|
|
||||||
buildVimPluginFrom2Nix = pkgs.vimUtils.buildVimPluginFrom2Nix;
|
buildVimPluginFrom2Nix = pkgs.vimUtils.buildVimPluginFrom2Nix;
|
||||||
|
@ -26,8 +24,27 @@ let
|
||||||
sha256 = "15ysbbvxlgy1qx8rjv2i9pgjshldcs3m1ff0my2y5mnr3cpqb3s6";
|
sha256 = "15ysbbvxlgy1qx8rjv2i9pgjshldcs3m1ff0my2y5mnr3cpqb3s6";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
|
||||||
{
|
# not very stable yet, no existing netcoredbg config
|
||||||
|
nvim-dap = buildVimPluginFrom2Nix {
|
||||||
|
pname = "nvim-dap";
|
||||||
|
version = "2020-09-14";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "mfussenegger";
|
||||||
|
repo = "nvim-dap";
|
||||||
|
rev = "d3af0f3b470ee8a46aabb3837b97193dc16046e0";
|
||||||
|
sha256 = "0j09i8hhls8y5xd57vp4sbpp0gvdmwd6wmb355w5j2cda84xagmd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vimLua = lua: ''
|
||||||
|
lua << EOF
|
||||||
|
${lua}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
home.packages = with pkgs; [ graphviz ];
|
||||||
|
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = neovim-unwrapped;
|
package = neovim-unwrapped;
|
||||||
|
@ -56,6 +73,7 @@ in
|
||||||
wmgraphviz-vim
|
wmgraphviz-vim
|
||||||
|
|
||||||
nvim-lsp
|
nvim-lsp
|
||||||
|
nvim-dap
|
||||||
|
|
||||||
# might require :UpdateRemotePlugins
|
# might require :UpdateRemotePlugins
|
||||||
deoplete-nvim
|
deoplete-nvim
|
||||||
|
@ -64,10 +82,12 @@ in
|
||||||
vim-orgmode
|
vim-orgmode
|
||||||
];
|
];
|
||||||
extraConfig = with builtins;
|
extraConfig = with builtins;
|
||||||
readFile ./init.vim +
|
readFile ./init.vim + readFile ./vim-surround-fix.vim
|
||||||
readFile ./vim-surround-fix.vim +
|
+ readFile ./which-key.vim + vimLua (readFile ./lsp/extensions.lua)
|
||||||
readFile ./which-key.vim +
|
+ readFile ./lsp/lsp.vim + ''
|
||||||
readFile ./lsp.vim;
|
packloadall " https://github.com/neovim/neovim/issues/11409
|
||||||
|
${vimLua (readFile ./lsp/lsp.lua)}
|
||||||
|
'';
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
withPython = false;
|
withPython = false;
|
||||||
};
|
};
|
18
home/editors/neovim/lsp/extensions.lua
Normal file
18
home/editors/neovim/lsp/extensions.lua
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
-- extensions for lsp functionality
|
||||||
|
|
||||||
|
local function preview_location_callback(_, method, result)
|
||||||
|
if result == nil or vim.tbl_isempty(result) then
|
||||||
|
vim.lsp.log.info(method, 'No location found')
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
if vim.tbl_islist(result) then
|
||||||
|
vim.lsp.util.preview_location(result[1])
|
||||||
|
else
|
||||||
|
vim.lsp.util.preview_location(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function peek_definition()
|
||||||
|
local params = vim.lsp.util.make_position_params()
|
||||||
|
return vim.lsp.buf_request(0, 'textDocument/definition', params, preview_location_callback)
|
||||||
|
end
|
151
home/editors/neovim/lsp/lsp.lua
Normal file
151
home/editors/neovim/lsp/lsp.lua
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
local nvim_lsp = require'nvim_lsp'
|
||||||
|
local configs = require'nvim_lsp/configs'
|
||||||
|
local util = require'nvim_lsp/util'
|
||||||
|
|
||||||
|
-- format on save
|
||||||
|
-- TODO often takes way longer to save than 1000 ms (e.g. 7000 ms in fitnesspilot-web)
|
||||||
|
local diagnosticls_on_attach = function(_, bufnr)
|
||||||
|
vim.api.nvim_command("au BufWritePre <buffer> lua vim.lsp.buf.formatting_sync(nil, 1000)")
|
||||||
|
end
|
||||||
|
|
||||||
|
nvim_lsp.bashls.setup{}
|
||||||
|
nvim_lsp.jsonls.setup{}
|
||||||
|
nvim_lsp.yamlls.setup{}
|
||||||
|
nvim_lsp.html.setup{}
|
||||||
|
nvim_lsp.cssls.setup{}
|
||||||
|
nvim_lsp.vimls.setup{}
|
||||||
|
nvim_lsp.dockerls.setup{}
|
||||||
|
nvim_lsp.rnix.setup{}
|
||||||
|
nvim_lsp.tsserver.setup{}
|
||||||
|
nvim_lsp.omnisharp.setup{
|
||||||
|
cmd = {"omnisharp", "--languageserver"};
|
||||||
|
}
|
||||||
|
nvim_lsp.pyls.setup{}
|
||||||
|
nvim_lsp.terraformls.setup{}
|
||||||
|
nvim_lsp.hls.setup{}
|
||||||
|
|
||||||
|
-- based on: https://github.com/mikew/vimrc/blob/master/src/nvim/coc-settings.json
|
||||||
|
-- multiple LSP's currently not supported: https://github.com/neovim/neovim/issues/12755
|
||||||
|
-- nvim_lsp.diagnosticls.setup{
|
||||||
|
-- on_attach = diagnosticls_on_attach;
|
||||||
|
-- filetypes = {
|
||||||
|
-- "javascript",
|
||||||
|
-- "javascript.jsx",
|
||||||
|
-- "javascriptreact",
|
||||||
|
-- "typescript",
|
||||||
|
-- "typescript.jsx",
|
||||||
|
-- "typescriptreact",
|
||||||
|
-- "json",
|
||||||
|
-- "yaml",
|
||||||
|
-- "markdown",
|
||||||
|
-- "html",
|
||||||
|
-- "css"
|
||||||
|
-- };
|
||||||
|
-- init_options = {
|
||||||
|
-- linters = {
|
||||||
|
-- eslint = {
|
||||||
|
-- command = "eslint";
|
||||||
|
-- args = {
|
||||||
|
-- "--stdin",
|
||||||
|
-- "--stdin-filename",
|
||||||
|
-- "%filepath",
|
||||||
|
-- "--format",
|
||||||
|
-- "json"
|
||||||
|
-- };
|
||||||
|
-- rootPatterns = {".git"};
|
||||||
|
-- debounce = 50;
|
||||||
|
-- sourceName = "eslint";
|
||||||
|
-- parseJson = {
|
||||||
|
-- errorsRoot = "[0].messages";
|
||||||
|
-- line = "line";
|
||||||
|
-- column = "column";
|
||||||
|
-- endLine = "endLine";
|
||||||
|
-- endColumn = "endColumn";
|
||||||
|
-- message = "${message} [${ruleId}]";
|
||||||
|
-- security = "severity";
|
||||||
|
-- };
|
||||||
|
-- securities = {
|
||||||
|
-- ["2"] = "error";
|
||||||
|
-- ["1"] = "warning";
|
||||||
|
-- };
|
||||||
|
-- };
|
||||||
|
-- stylelint = {
|
||||||
|
-- command = "stylelint";
|
||||||
|
-- args = {
|
||||||
|
-- "--stdin",
|
||||||
|
-- "--formatter",
|
||||||
|
-- "json",
|
||||||
|
-- "--file",
|
||||||
|
-- "%filepath"
|
||||||
|
-- };
|
||||||
|
-- rootPatterns = {".git"};
|
||||||
|
-- debounce = 50;
|
||||||
|
-- sourceName = "stylelint";
|
||||||
|
-- parseJson = {
|
||||||
|
-- errorsRoot = "[0].warnings";
|
||||||
|
-- line = "line";
|
||||||
|
-- column = "column";
|
||||||
|
-- message = "${text}";
|
||||||
|
-- security = "severity";
|
||||||
|
-- };
|
||||||
|
-- securities = {
|
||||||
|
-- error = "error";
|
||||||
|
-- warning = "warning";
|
||||||
|
-- };
|
||||||
|
-- };
|
||||||
|
-- };
|
||||||
|
-- filetypes = {
|
||||||
|
-- javascript = {"eslint"};
|
||||||
|
-- ["javascript.jsx"] = {"eslint"};
|
||||||
|
-- javascriptreact = {"eslint"};
|
||||||
|
-- typescript = {"eslint"};
|
||||||
|
-- ["typescript.jsx"] = {"eslint"};
|
||||||
|
-- typescriptreact = {"eslint"};
|
||||||
|
-- css = {"stylelint"};
|
||||||
|
-- };
|
||||||
|
-- formatters = {
|
||||||
|
-- eslint = {
|
||||||
|
-- command = "eslint";
|
||||||
|
-- args = {
|
||||||
|
-- "--fix",
|
||||||
|
-- "%file"
|
||||||
|
-- };
|
||||||
|
-- rootPatterns = {".git"};
|
||||||
|
-- isStdout = 1;
|
||||||
|
-- doesWriteToFile = 1;
|
||||||
|
-- };
|
||||||
|
-- stylelint = {
|
||||||
|
-- command = "stylelint";
|
||||||
|
-- args = {
|
||||||
|
-- "--stdin",
|
||||||
|
-- "--fix",
|
||||||
|
-- "--file",
|
||||||
|
-- "%filepath"
|
||||||
|
-- };
|
||||||
|
-- rootPatterns = {".git"};
|
||||||
|
-- };
|
||||||
|
-- prettier = {
|
||||||
|
-- command = "prettier";
|
||||||
|
-- args = {
|
||||||
|
-- "--stdin",
|
||||||
|
-- "--stdin-filepath",
|
||||||
|
-- "%filepath"
|
||||||
|
-- };
|
||||||
|
-- rootPatterns = {".git"};
|
||||||
|
-- };
|
||||||
|
-- };
|
||||||
|
-- formatFiletypes = {
|
||||||
|
-- javascript = {"eslint"};
|
||||||
|
-- ["javascript.jsx"] = {"eslint"};
|
||||||
|
-- javascriptreact = {"eslint"};
|
||||||
|
-- typescript = {"eslint"};
|
||||||
|
-- ["typescript.jsx"] = {"eslint"};
|
||||||
|
-- typescriptreact = {"eslint"};
|
||||||
|
-- json = {"prettier"};
|
||||||
|
-- yaml = {"prettier"};
|
||||||
|
-- markdown = {"prettier"};
|
||||||
|
-- html = {"prettier"};
|
||||||
|
-- css = {"stylelint"};
|
||||||
|
-- };
|
||||||
|
-- };
|
||||||
|
-- }
|
39
home/editors/neovim/lsp/lsp.vim
Normal file
39
home/editors/neovim/lsp/lsp.vim
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
" autocomplete config
|
||||||
|
set completeopt=menu,preview,menuone,noinsert
|
||||||
|
set omnifunc=v:lua.vim.lsp.omnifunc
|
||||||
|
|
||||||
|
let g:deoplete#enable_at_startup = 1
|
||||||
|
let g:deoplete#smart_case = 1
|
||||||
|
|
||||||
|
" Use <c-space> to trigger completion.
|
||||||
|
inoremap <silent><expr> <c-space> deoplete#manual_complete()
|
||||||
|
|
||||||
|
" Autocomplete and cycle from top-to-bottom of suggestions using <Tab>.
|
||||||
|
inoremap <expr><TAB> pumvisible() ? "\<c-n>" : "\<TAB>"
|
||||||
|
|
||||||
|
" <TAB>: completion.
|
||||||
|
inoremap <silent><expr> <TAB>
|
||||||
|
\ pumvisible() ? "\<C-n>" :
|
||||||
|
\ <SID>check_back_space() ? "\<TAB>" :
|
||||||
|
\ deoplete#manual_complete()
|
||||||
|
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
||||||
|
|
||||||
|
function! s:check_back_space() abort
|
||||||
|
let col = col('.') - 1
|
||||||
|
return !col || getline('.')[col - 1] =~# '\s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" 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()<CR>
|
||||||
|
nnoremap <silent> <leader>a <cmd>lua vim.lsp.buf.code_action()<CR>
|
||||||
|
nnoremap <silent> <leader>r <cmd>lua vim.lsp.buf.rename()<CR>
|
Loading…
Reference in a new issue