commit 6b3136053c28c2f844b888a19041b006520112ed
parent 91fee4797db86a6742ae041ce487798d0a6ad6b4
Author: Tomas Nemec <nemi@skaut.cz>
Date: Thu, 11 Aug 2022 07:38:36 +0200
update
Diffstat:
4 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/after/plugin/cmp.lua b/after/plugin/cmp.lua
@@ -1,4 +1,10 @@
-if not pcall(require, 'cmp') then return end
+if not pcall(require, 'cmp') then
+ return
+end
+
+-- do
+-- return
+-- end
local cmp = require('cmp')
require('cmp_dictionary').setup({ dic = {} })
@@ -17,7 +23,11 @@ end
cmp.setup({
preselect = cmp.PreselectMode.Item,
window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered() },
- snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end },
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
mapping = {
['<c-e>'] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close() }),
['<c-y>'] = cmp.mapping.confirm({ select = true }),
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua
@@ -5,8 +5,9 @@ end
local lspconfig = require 'lspconfig'
local lsp = require 'tms.lsp';
+local lsp_group = vim.api.nvim_create_augroup('user-lsp', {})
vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('user-lsp', {}),
+ group = lsp_group,
callback = function(args)
local buf = args.buf
local client = vim.lsp.get_client_by_id(args.data.client_id)
@@ -22,7 +23,7 @@ vim.api.nvim_create_autocmd('LspAttach', {
end
if cap.definitionProvider then
vim.keymap.set('n', 'gd', lb.definition, opt 'LSP Definition')
- vim.keymap.set('n', 'gD', '<cmd>vsplit | lua lb.definition()<cr>', opt('LSP definition in vsplit'))
+ vim.keymap.set('n', 'gD', '<cmd>vsplit | lua vim.lsp.buf.definition()<cr>', opt('LSP definition in vsplit'))
end
if cap.typeDefinitionProvider then
vim.keymap.set('n', 'gT', lb.type_definition, opt('LSP Type Definition'))
@@ -44,6 +45,11 @@ vim.api.nvim_create_autocmd('LspAttach', {
if cap.renameProvider then
vim.keymap.set('n', 'gn', lb.rename, opt('LSP Rename'))
end
+ if cap.documentHighlightProvider then
+ vim.keymap.set('n', 'gk', lb.document_highlight, opt('LSP Highlight'))
+ vim.api.nvim_create_autocmd('CursorMoved',
+ { group = lsp_group, buffer = buf, callback = vim.lsp.buf.clear_references })
+ end
local has_aerial, aerial = pcall(require, 'aerial')
if has_aerial then
@@ -52,6 +58,12 @@ vim.api.nvim_create_autocmd('LspAttach', {
end,
})
+require('tms.colors').update(function(t)
+ t.Group.new('LspReferenceText', t.colors.green, t.colors.green, nil)
+ t.Group.new('LspReferenceRead', t.colors.orange, t.colors.orange, nil)
+ t.Group.new('LspReferenceWrite', t.colors.red, t.colors.red, nil)
+end)
+
local handlers = vim.lsp.handlers
local with = vim.lsp.with
handlers['textDocument/hover'] = with(handlers.hover, { border = 'single' })
@@ -64,21 +76,19 @@ handlers['textDocument/signatureHelp'] = with(handlers.signature_help, { border
-- manual
do
- local opts = lsp.make_opts('dartls')
- lspconfig.dartls.setup(opts)
+ lspconfig.dartls.setup(lsp.make_opts('dartls'))
+ lspconfig.tsserver.setup(lsp.make_opts('tsserver'))
end
-- mason
-if not pcall(require, 'mason') then
- return
+if pcall(require, 'mason') then
+ require('mason').setup()
+ local mlsp = require('mason-lspconfig')
+ mlsp.setup()
+ mlsp.setup_handlers {
+ function(name)
+ local opts = lsp.make_opts(name)
+ lspconfig[name].setup(opts)
+ end,
+ }
end
-
-require('mason').setup()
-local mlsp = require('mason-lspconfig')
-mlsp.setup()
-mlsp.setup_handlers {
- function(name)
- local opts = lsp.make_opts(name)
- lspconfig[name].setup(opts)
- end,
-}
diff --git a/lua/tms/ft/dart/bin.lua b/lua/tms/ft/dart/bin.lua
@@ -1,17 +0,0 @@
-local fn = vim.fn
-
-local M = {}
-
-function M.lsp_cmd()
- -- local dart_bin = '/home/tms/.dswitch/old/dart'
- -- local dart_bin_root = '/home/tms/.dswitch/old'
- local dart_bin = fn.resolve(fn.exepath('dart'))
- local dart_bin_root = fn.fnamemodify(dart_bin, ':h')
- local snapshot = dart_bin_root .. '/snapshots/analysis_server.dart.snapshot'
- return {dart_bin, snapshot, '--lsp'}
- -- return {dart_bin, snapshot, '--lsp', '--port=10000'}
- -- return {dart_bin, snapshot, '--lsp', '--port=10000', '--instrumentation-log-file=/tmp/analysis.txt'}
- -- return {'/home/tms/.dswitch/active/dart', '/home/tms/dev/dart/sdk/pkg/analysis_server/bin/server.dart', '--lsp', '--port=10000', '--instrumentation-log-file=/tmp/analysis.txt'}
-end
-
-return M
diff --git a/lua/tms/lsp/servers.lua b/lua/tms/lsp/servers.lua
@@ -29,7 +29,9 @@ M.no_format = { sumneko_lua = true }
M.setup = function(name, opts)
local fn = S[name]
- if fn then opts = fn(opts) end
+ if fn then
+ opts = fn(opts)
+ end
return opts
end
@@ -82,7 +84,8 @@ S.html = function(opts)
end
S.dartls = function(opts)
- opts.cmd = require('tms.ft.dart.bin').lsp_cmd()
+ local dart_bin = vim.fn.resolve(vim.fn.exepath('dart'))
+ opts.cmd = { dart_bin, 'language-server', '--port=10000' }
opts.init_options = { closingLabels = true, outline = true }
-- filetypes = {'dart', 'html'}
opts.settings = { dart = { lineLength = 120, showTodos = true, completeFunctionCalls = true } }