feat(neovim): update config
This commit is contained in:
parent
5e0b72ca74
commit
0a772c90b0
10 changed files with 251 additions and 215 deletions
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…
Add table
Add a link
Reference in a new issue