commit a788b10d8e45b76ef4a5d44553d478fd40672d3b
parent 47b205bd344c1eeb71188798deea1f5c2eb22089
Author: Tomas Nemec <owl@gtms.dev>
Date: Fri, 15 Dec 2023 22:48:11 +0100
update
Diffstat:
24 files changed, 233 insertions(+), 270 deletions(-)
diff --git a/after/plugin/cmp.lua b/after/plugin/cmp.lua
@@ -46,18 +46,11 @@ local Codeium = require('tms.p.codeium')
-- cmp.register_source('exe', require('tms.p.cmp.exe_source').new())
local function close()
return function(fallback)
- -- if pcall(require, 'copilot') then
- -- local copilot = require('copilot.suggestion')
- -- if copilot.is_visible() then
- -- fallback = copilot.dismiss
- -- end
- -- end
-
if Codeium.Completions() then
fallback = Codeium.Clear
end
- if not cmp.abort() then
+ if not cmp.close() then
fallback()
end
end
diff --git a/after/plugin/codeium.lua b/after/plugin/codeium.lua
@@ -1,19 +1,18 @@
vim.g.codeium_disable_bindings = true
vim.g.codeium_no_map_tab = true
-local Codeium = require('tms.p.codeium')
-
-vim.keymap.set('i', '<c-y>', Codeium.Accept, { expr = true, desc = 'Codeium Accept' })
-vim.keymap.set('i', '<c-e>', Codeium.Clear, { expr = true, desc = 'Codeium Clear' })
-vim.keymap.set('i', '<c-n>', Codeium.Next, { expr = true, desc = 'Codeium Next' })
-vim.keymap.set('i', '<c-p>', Codeium.Prev, { expr = true, desc = 'Codeium Prev' })
+local codeium = require('tms.p.codeium')
+vim.keymap.set('i', '<c-y>', codeium.Accept, { expr = true, desc = 'Codeium Accept' })
+vim.keymap.set('i', '<c-e>', codeium.Clear, { desc = 'Codeium Clear' })
+vim.keymap.set('i', '<c-n>', codeium.Next, { desc = 'Codeium Next' })
+vim.keymap.set('i', '<c-p>', codeium.Prev, { desc = 'Codeium Prev' })
local toggle = require('tms.toggle')
toggle.fn('p', function()
- if Codeium.isEnabled() then
- Codeium.Disable()
+ if codeium.isEnabled() then
+ codeium.Disable()
else
- Codeium.Enable()
+ codeium.Enable()
end
end, 'Codeium Toggle')
diff --git a/after/plugin/comment.lua b/after/plugin/comment.lua
@@ -1,15 +1,15 @@
if not pcall(require, 'Comment') then
return
end
-local comment = require('Comment')
-local setup = {
- ignore = '^$',
-}
+local comment = require 'Comment'
+local setup = { ignore = '^$' }
+
if pcall(require, 'ts_context_commentstring') then
setup.pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook()
end
+
comment.setup(setup)
-local ft = require('Comment.ft')
+local ft = require 'Comment.ft'
ft.dart = { '//%s', '/*%s*/' }
diff --git a/after/plugin/diagflow.lua b/after/plugin/diagflow.lua
@@ -2,4 +2,12 @@ if not pcall(require, 'diagflow') then
return
end
-require('diagflow').setup { toggle_event = { 'InsertEnter' } }
+require('diagflow').setup {
+ padding_top = 2,
+ scope = 'line',
+ show_borders = true,
+ -- todo
+ -- toggle_event = { 'InsertEnter' },
+ -- render_event = { 'DiagnosticChanged', 'CursorMoved' },
+ -- update_event = { 'DiagnosticChanged', 'BufReadPost' },
+}
diff --git a/after/plugin/hardtime.lua b/after/plugin/hardtime.lua
@@ -2,4 +2,4 @@ if not pcall(require, 'hardtime') then
return
end
-require('hardtime').setup()
+require('hardtime').setup { disabled_filetypes = { 'qf', 'netrw', 'dirbuf', 'mason', 'query' } }
diff --git a/after/plugin/lsp-inlayhints.lua b/after/plugin/lsp-inlayhints.lua
@@ -1,28 +0,0 @@
-if not pcall(require, 'lsp-inlayhints') then
- return
-end
-
-do
- return
-end
-
-local lspih = require('lsp-inlayhints')
-lspih.setup({ inlay_hints = { only_current_line = true } })
-
-local group = vim.api.nvim_create_augroup('user-inlayhints', {})
-
-vim.api.nvim_create_autocmd('LspAttach', {
- group = group,
- callback = function(args)
- if not (args.data and args.data.client_id) then
- return
- end
-
- local buf = args.buf
- local client = vim.lsp.get_client_by_id(args.data.client_id)
- lspih.on_attach(client, buf)
-
- vim.keymap.set('n', '<leader>gh', require('lsp-inlayhints').toggle,
- { silent = true, desc = 'LSP Inlay Hints Toggle' })
- end,
-})
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua
@@ -2,9 +2,6 @@ if not pcall(require, 'lspconfig') then
return
end
-local lspconfig = require 'lspconfig'
-local lsp = require 'tms.lsp';
-
local lsp_group = vim.api.nvim_create_augroup('user-lsp', {})
local function keymap(client, buf)
@@ -40,11 +37,11 @@ local function keymap(client, buf)
if client.supports_method('textDocument/documentHighlight') then
vim.keymap.set('n', '<leader>k', lb.document_highlight, opt('LSP Highlight'))
vim.api.nvim_create_autocmd('CursorMoved',
- { group = lsp_group, buffer = buf, callback = vim.lsp.buf.clear_references })
+ { group = lsp_group, buffer = buf, callback = vim.lsp.buf.clear_references })
end
if client.supports_method('textDocument/inlayHint') then
vim.keymap.set('n', 'gH', function()
- vim.lsp.inlay_hint(0, nil)
+ vim.lsp.inlay_hint.enable(0, not vim.lsp.inlay_hint.is_enabled(0))
end, opt('LSP Inlay hints'))
end
if client.supports_method('textDocument/rename') then
@@ -63,9 +60,9 @@ local function keymap(client, buf)
vim.keymap.set('n', 'gQ', function()
vim.lsp.buf.format()
- if vim.api.nvim_get_option_value('ft', { buf = buf }) == 'dart' then
- vim.cmd.NgHtmlFormat()
- end
+ -- if vim.api.nvim_get_option_value('ft', { buf = buf }) == 'dart' then
+ -- vim.cmd.NgHtmlFormat()
+ -- end
end, { buffer = buf, desc = 'LSP Format' })
end
end
@@ -74,12 +71,16 @@ vim.api.nvim_create_autocmd('LspAttach', {
group = lsp_group,
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
+ if not client then
+ return
+ end
+
keymap(client, args.buf)
end,
})
local handlers = vim.lsp.handlers
-handlers['textDocument/hover'] = vim.lsp.with(handlers.hover, { border = 'single' })
+vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(handlers.hover, { border = 'single' })
handlers['textDocument/signatureHelp'] = vim.lsp.with(handlers.signature_help, { border = 'single' })
local crc = handlers['client/registerCapability']
handlers['client/registerCapability'] = function(_, result, ctx)
@@ -98,13 +99,17 @@ end
-- mason
if pcall(require, 'mason') then
- require('mason').setup()
- local mlsp = require('mason-lspconfig')
+ 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)
+ local opts = require 'tms.lsp'.make_opts(name)
+ require 'lspconfig'[name].setup(opts)
+ end,
+ ['jsonls'] = function()
+ end,
+ ['lua_ls'] = function()
end,
}
end
diff --git a/after/plugin/neodev.lua b/after/plugin/neodev.lua
@@ -0,0 +1,5 @@
+if not pcall(require, 'neodev') then
+ return
+end
+
+require'neodev'.setup {}
diff --git a/after/plugin/spectre.lua b/after/plugin/spectre.lua
@@ -1,62 +0,0 @@
-if not pcall(require, 'spectre') then
- return
-end
-
-vim.keymap.set('n', '<leader>S', function()
- require('spectre').open()
-end)
-vim.keymap.set('v', '<leader>s', function()
- require('spectre').open_visual()
-end)
-
-require('spectre').setup({
- mapping = {
- ['toggle_line'] = {
- map = 'gd',
- cmd = '<cmd>lua require(\'spectre\').toggle_line()<CR>',
- desc = 'toggle current item',
- },
- ['enter_file'] = {
- map = '<cr>',
- cmd = '<cmd>lua require(\'spectre.actions\').select_entry()<CR>',
- desc = 'goto current file',
- },
- ['send_to_qf'] = {
- map = 'gq',
- cmd = '<cmd>lua require(\'spectre.actions\').send_to_qf()<CR>',
- desc = 'send all item to quickfix',
- },
- ['replace_cmd'] = {
- map = 'gc',
- cmd = '<cmd>lua require(\'spectre.actions\').replace_cmd()<CR>',
- desc = 'input replace vim command',
- },
- ['show_option_menu'] = { map = 'go', cmd = '<cmd>lua require(\'spectre\').show_options()<CR>', desc = 'show option' },
- ['run_replace'] = {
- map = 'gR',
- cmd = '<cmd>lua require(\'spectre.actions\').run_replace()<CR>',
- desc = 'replace all',
- },
- ['change_view_mode'] = {
- map = 'tt',
- cmd = '<cmd>lua require(\'spectre\').change_view()<CR>',
- desc = 'change result view mode',
- },
- ['toggle_live_update'] = {
- map = 'tu',
- cmd = '<cmd>lua require(\'spectre\').toggle_live_update()<CR>',
- desc = 'update change when vim write file.',
- },
- ['toggle_ignore_case'] = {
- map = 'ti',
- cmd = '<cmd>lua require(\'spectre\').change_options(\'ignore-case\')<CR>',
- desc = 'toggle ignore case',
- },
- ['toggle_ignore_hidden'] = {
- map = 'th',
- cmd = '<cmd>lua require(\'spectre\').change_options(\'hidden\')<CR>',
- desc = 'toggle search hidden',
- },
- -- you can put your mapping here it only use normal mode
- },
-})
diff --git a/after/plugin/treesitter-context.lua b/after/plugin/treesitter-context.lua
@@ -2,17 +2,19 @@ if not pcall(require, 'treesitter-context') then
return
end
--- require'treesitter-context'.setup {
--- enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
--- max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
--- min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
--- line_numbers = true,
--- multiline_threshold = 20, -- Maximum number of lines to show for a single context
--- trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
--- mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
--- -- Separator between context and content. Should be a single character string, like '-'.
--- -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
--- separator = nil,
--- zindex = 20, -- The Z-index of the context window
--- on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
--- }
+require'treesitter-context'.setup {
+ -- enable = false, -- Enable this plugin (Can be enabled/disabled later via commands)
+ -- max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
+ -- min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
+ line_numbers = true,
+ -- multiline_threshold = 20, -- Maximum number of lines to show for a single context
+ -- trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
+ -- mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
+ -- -- Separator between context and content. Should be a single character string, like '-'.
+ -- -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
+ separator = '─',
+ -- zindex = 20, -- The Z-index of the context window
+ -- on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
+}
+
+vim.keymap.set('n', '<c-h><c-x>', require('treesitter-context').go_to_context, { silent = true })
diff --git a/colors/tms.lua b/colors/tms.lua
@@ -5,23 +5,22 @@
-- base16-vim (https://github.com/chriskempson/base16-vim)
-- by Chris Kempson (https://github.com/chriskempson)
-- Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
-
-local gui00 = "#1d2021"
-local gui01 = "#3c3836"
-local gui02 = "#504945"
-local gui03 = "#665c54"
-local gui04 = "#bdae93"
-local gui05 = "#d5c4a1"
-local gui06 = "#ebdbb2"
-local gui07 = "#fbf1c7"
-local gui08 = "#fb4934"
-local gui09 = "#fe8019"
-local gui0A = "#fabd2f"
-local gui0B = "#b8bb26"
-local gui0C = "#8ec07c"
-local gui0D = "#83a598"
-local gui0E = "#d3869b"
-local gui0F = "#d65d0e"
+local gui00 = '#1d2021'
+local gui01 = '#3c3836'
+local gui02 = '#504945'
+local gui03 = '#665c54'
+local gui04 = '#bdae93'
+local gui05 = '#d5c4a1'
+local gui06 = '#ebdbb2'
+local gui07 = '#fbf1c7'
+local gui08 = '#fb4934'
+local gui09 = '#fe8019'
+local gui0A = '#fabd2f'
+local gui0B = '#b8bb26'
+local gui0C = '#8ec07c'
+local gui0D = '#83a598'
+local gui0E = '#d3869b'
+local gui0F = '#d65d0e'
local cterm00 = 0
local cterm03 = 8
@@ -44,7 +43,7 @@ vim.cmd [[
highlight clear
syntax reset
]]
-vim.g.colors_name = "base16-gruvbox-dark-hard"
+vim.g.colors_name = 'base16-gruvbox-dark-hard'
-- Vim editor colors fg bg ctermfg ctermbg attr guisp
vim.api.nvim_set_hl(0, 'Normal', { fg = gui05, bg = gui00, ctermfg = cterm05, ctermbg = cterm00 })
@@ -140,15 +139,15 @@ vim.api.nvim_set_hl(0, 'cssClassName', { fg = gui0E, ctermfg = cterm0E })
vim.api.nvim_set_hl(0, 'cssColor', { fg = gui0C, ctermfg = cterm0C })
-- Diff highlighting
-vim.api.nvim_set_hl(0, 'DiffAdd', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
-vim.api.nvim_set_hl(0, 'DiffChange', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
-vim.api.nvim_set_hl(0, 'DiffDelete', { fg = gui08, bg = gui01, ctermfg = cterm08, ctermbg = cterm01 })
-vim.api.nvim_set_hl(0, 'DiffText', { fg = gui0D, bg = gui01, ctermfg = cterm0D, ctermbg = cterm01 })
-vim.api.nvim_set_hl(0, 'DiffAdded', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
-vim.api.nvim_set_hl(0, 'DiffFile', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
-vim.api.nvim_set_hl(0, 'DiffNewFile', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
-vim.api.nvim_set_hl(0, 'DiffLine', { fg = gui0D, bg = gui00, ctermfg = cterm0D, ctermbg = cterm00 })
-vim.api.nvim_set_hl(0, 'DiffRemoved', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
+vim.api.nvim_set_hl(0, 'DiffAdd', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
+vim.api.nvim_set_hl(0, 'DiffChange', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
+vim.api.nvim_set_hl(0, 'DiffDelete', { fg = gui08, bg = gui01, ctermfg = cterm08, ctermbg = cterm01 })
+vim.api.nvim_set_hl(0, 'DiffText', { fg = gui0D, bg = gui01, ctermfg = cterm0D, ctermbg = cterm01 })
+vim.api.nvim_set_hl(0, 'DiffAdded', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
+vim.api.nvim_set_hl(0, 'DiffFile', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
+vim.api.nvim_set_hl(0, 'DiffNewFile', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
+vim.api.nvim_set_hl(0, 'DiffLine', { fg = gui0D, bg = gui00, ctermfg = cterm0D, ctermbg = cterm00 })
+vim.api.nvim_set_hl(0, 'DiffRemoved', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
-- Git highlighting
vim.api.nvim_set_hl(0, 'gitcommitOverflow', { fg = gui08, ctermfg = cterm08 })
@@ -284,14 +283,15 @@ vim.api.nvim_set_hl(0, 'javaOperator', { fg = gui0D, ctermfg = cterm0D })
-- end color
--
-vim.api.nvim_set_hl(0, 'LineNr', { fg = gui03, bg = gui00 })
-vim.api.nvim_set_hl(0, 'SignColumn', { fg = gui03, bg = gui00 })
-vim.api.nvim_set_hl(0, 'StatusLine', { fg = gui04, bg = gui01 })
-vim.api.nvim_set_hl(0, 'TreesitterContext', { bg = gui01 })
+vim.api.nvim_set_hl(0, 'LineNr', { fg = gui03, bg = 'background' })
+vim.api.nvim_set_hl(0, 'SignColumn', { fg = gui03, bg = 'background' })
+vim.api.nvim_set_hl(0, 'StatusLine', { fg = gui03, bg = 'background' })
+vim.api.nvim_set_hl(0, 'StatusLineNC', { fg = gui03, bg = 'background' })
+vim.api.nvim_set_hl(0, 'TreesitterContext', {})
+-- vim.api.nvim_set_hl(0, 'TreesitterContextBottom', { underline = true, sp = 'foreground' })
vim.api.nvim_set_hl(0, 'NormalFloat', {})
vim.api.nvim_set_hl(0, 'WinSeparator', {})
vim.api.nvim_set_hl(0, 'FloatBorder', {})
-vim.api.nvim_set_hl(0, 'StatusLine', { fg = 'background', bg = 'background' })
vim.api.nvim_set_hl(0, 'Identifier', { fg = gui05, ctermfg = cterm05 })
vim.api.nvim_set_hl(0, 'Beacon', { bg = 'fg' })
@@ -332,13 +332,23 @@ vim.api.nvim_set_hl(0, 'CodeiumSuggestion', { link = 'Comment' })
vim.api.nvim_set_hl(0, 'LspReferenceText', { underline = true })
vim.api.nvim_set_hl(0, 'LspReferenceRead', { undercurl = true })
+-- LSP highlighting
+vim.api.nvim_set_hl(0, 'DiagnosticFloatingError', { fg = gui08, ctermfg = cterm08 })
+vim.api.nvim_set_hl(0, 'DiagnosticFloatingWarn', { fg = gui09, ctermfg = cterm09 })
+vim.api.nvim_set_hl(0, 'DiagnosticFloatingInfo', { fg = gui05, ctermfg = cterm05 })
+vim.api.nvim_set_hl(0, 'DiagnosticFloatingHint', { fg = gui03, ctermfg = cterm03 })
+
-- Hide all semantic highlights
-- for _, group in ipairs(vim.fn.getcompletion('@lsp', 'highlight')) do
-- vim.api.nvim_set_hl(0, group, {})
-- end
vim.api.nvim_set_hl(0, '@lsp.type.class', {})
-vim.api.nvim_set_hl(0, '@lsp.type.class', { link = '@keyword', default = true })
+vim.api.nvim_set_hl(0, '@lsp.type.enum', {})
+vim.api.nvim_set_hl(0, '@lsp.type.keyword', { link = 'Keyword' })
vim.api.nvim_set_hl(0, '@lsp.mod.annotation', { italic = true })
vim.api.nvim_set_hl(0, '@lsp.type.type', { bold = true })
--- vim.api.nvim_set_hl(0, '@variable.builtin', { link = 'Keyword' })
+vim.api.nvim_set_hl(0, '@type.qualifier', { link = 'Keyword' })
+vim.api.nvim_set_hl(0, '@variable.builtin', { link = 'Type' })
+vim.api.nvim_set_hl(0, '@conceal', { link = 'Conceal' })
+vim.api.nvim_set_hl(0, '@text.reference', { link = 'Keyword' })
diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua
@@ -1,23 +1,43 @@
-vim.bo.comments = [[sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://]]
-vim.bo.commentstring = '//%s'
-vim.bo.includeexpr = [[v:lua.require('tms.ft.dart.package').package_path(v:fname)]]
+vim.opt_local.comments = [[sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://]]
+vim.opt_local.commentstring = '//%s'
+vim.opt_local.includeexpr = [[v:lua.require('tms.ft.dart.package').package_path(v:fname)]]
vim.opt_local.isfname:append{ ':' }
vim.opt_local.iskeyword:append{ '$' }
+vim.opt_local.textwidth = 80
+vim.opt_local.formatoptions:remove('t')
+vim.opt_local.makeprg = [[dart %]]
+vim.opt_local.efm = [[%f:%l:%c: %m]]
vim.b.undo_ftplugin = 'setl com< cms< inex< isf<'
-
vim.cmd.iabbrev('STring', 'String')
-vim.bo.makeprg = [[dart %]]
-vim.bo.efm = [[%f:%l:%c: %m]]
+if pcall(require, 'no-neck-pain') and not require'no-neck-pain.state'.enabled and not vim.g.no_neck_init then
+ require'no-neck-pain'.enable()
+ -- at start cursor is in left most window
+ vim.schedule(function()
+ vim.cmd [[exe "normal \<c-w>l"]]
+ end)
+ vim.g.no_neck_init = true
+end
local full_path = vim.fn.expand('%:p')
if string.find(full_path, '%.pub%-cache') then
vim.bo.modifiable = false
end
-vim.lsp.start(require'tms.lsp'.make_opts('dartls'))
-
-vim.api.nvim_set_hl(0, '@lsp.type.comment.dart', {})
+vim.lsp.start {
+ name = 'dartls',
+ cmd = { 'dart', 'language-server', '--protocol=lsp' },
+ root_dir = vim.fs.dirname(vim.fs.find({ 'pubspec.yaml', '.git' }, { upward = true })[1]),
+ capabilities = require'tms.lsp'.capabilities(),
+ init_options = { closingLabels = true, outline = true, flutterOutline = true },
+ settings = { dart = { completeFunctionCalls = true, showTodos = true, lineLength = 120 } },
+ handlers = {
+ ['typeHierarchy/subtypes'] = require'dart-tools.lsp.type_hierarchy'.handler(),
+ ['typeHierarchy/supertypes'] = require'dart-tools.lsp.type_hierarchy'.handler(),
+ ['dart/textDocument/publishClosingLabels'] = require'dart-tools.lsp.labels'.handler(),
+ ['dart/textDocument/super'] = vim.lsp.handlers['textDocument/definition'],
+ },
+}
vim.keymap.set('n', '<leader>ar', ':make<cr>', { desc = 'Dart Run' })
vim.keymap.set('n', '<leader>at', ':DartTest<cr>', { desc = 'Dart Test' })
@@ -31,9 +51,9 @@ vim.api.nvim_buf_create_user_command(0, 'DartTest', function()
end, {})
if pcall(require, 'dart-tools') then
- local dt_lsp = require('dart-tools.lsp')
- local dt_req = require('dart-tools.lsp.request')
- local ddebug = require('tms.ft.dart.debug')
+ local dt_lsp = require 'dart-tools.lsp'
+ local dt_req = require 'dart-tools.lsp.request'
+ local ddebug = require 'tms.ft.dart.debug'
local cmd_opts = {}
vim.api.nvim_buf_create_user_command(0, 'DartDebug', ddebug.func, cmd_opts)
diff --git a/ftplugin/gdscript.lua b/ftplugin/gdscript.lua
@@ -1 +1,7 @@
-vim.lsp.start(require'tms.lsp'.make_opts('gdscript'))
+vim.lsp.start {
+ name = 'gdscript',
+ cmd = vim.lsp.rpc.connect('127.0.0.1', 6005),
+ filetypes = { 'gd', 'gdscript', 'gdscript3' },
+ capabilities = require'tms.lsp'.capabilities(),
+ root_dir = vim.fs.dirname(vim.fs.find({ 'project.godot', '.git' }, { upward = true })[1]),
+}
diff --git a/ftplugin/json.lua b/ftplugin/json.lua
@@ -1,9 +1,22 @@
vim.keymap.set('n', 'gO', '<cmd>Json<cr>')
-if vim.fn.exists('+winbar') then
- vim.opt_local.winbar = '%{luaeval(\'require\"tms.p.jsonpath\".get()\')}'
+if vim.fn.exists '+winbar' then
+ vim.opt_local.winbar = '%{luaeval(\'require\"tms.p.jsonpath\".get()\')} %=%f'
end
vim.keymap.set('n', 'y<c-p>', function()
- vim.fn.setreg('+', require('tms.p.jsonpath').get())
+ vim.fn.setreg('+', require 'tms.p.jsonpath'.get())
end, { buffer = true, desc = 'Yank Json Path' })
+
+local schemas
+if pcall(require, 'schemastore') then
+ schemas = require 'schemastore'.json.schemas()
+end
+
+vim.lsp.start {
+ name = 'jsonls',
+ cmd = { 'vscode-json-language-server', '--stdio' },
+ capabilities = require 'tms.lsp'.capabilities(),
+ root_dir = vim.fn.getcwd(),
+ settings = { json = { schemas = schemas, validate = { enable = true } } },
+}
diff --git a/ftplugin/lua.lua b/ftplugin/lua.lua
@@ -2,3 +2,31 @@ vim.bo.efm = [[lua: %f:%l: %m]]
vim.bo.makeprg = [[lua %:S]]
vim.keymap.set('n', '<leader>ar', vim.cmd.make)
+
+vim.lsp.start {
+ name = 'lua-language-server',
+ cmd = { 'lua-language-server' },
+ before_init = require'neodev.lsp'.before_init,
+ capabilities = require'tms.lsp'.capabilities(),
+ root_dir = vim.fn.getcwd(),
+ settings = {
+ Lua = {
+ runtime = { version = 'LuaJIT' },
+ diagnostics = {
+ --
+ globals = { 'vim' },
+ disable = { 'missing-parameter' },
+ },
+ telemetry = { enable = false },
+ workspace = {
+ checkThirdParty = false,
+ -- slow compared to neodev
+ -- library = vim.api.nvim_get_runtime_file('', true),
+ -- library = { vim.env.VIMRUNTIME },
+ },
+ completion = { callSnippet = 'Replace' },
+ },
+ },
+}
+
+vim.api.nvim_set_hl(0, '@lsp.mod.defaultLibrary.lua', { link = 'Special' })
diff --git a/lua/plugins.lua b/lua/plugins.lua
@@ -55,18 +55,18 @@ return require('paq') {
'tamago324/cmp-zsh',
'uga-rosa/cmp-dictionary',
'hrsh7th/nvim-cmp',
- 'aduros/ai.vim', -- ui
+ -- get rid of this
'stevearc/dressing.nvim',
- 'rcarriga/nvim-notify', -- lsp
+ 'rcarriga/nvim-notify',
'neovim/nvim-lspconfig',
'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim',
'b0o/schemastore.nvim',
+ -- can we get rid of this?
'folke/neodev.nvim',
{ 'jose-elias-alvarez/null-ls.nvim', requires = { 'nvim-lua/plenary.nvim' } },
- 'lvimuser/lsp-inlayhints.nvim', -- use 'zbirenbaum/copilot.lua'
'dgagn/diagflow.nvim',
- 'Exafunction/codeium.vim', -- dap
+ 'Exafunction/codeium.vim',
'mfussenegger/nvim-dap',
'leoluz/nvim-dap-go',
'rcarriga/nvim-dap-ui',
diff --git a/lua/tms/lsp/init.lua b/lua/tms/lsp/init.lua
@@ -1,14 +1,11 @@
local M = {}
function M.capabilities()
- local cap = vim.lsp.protocol.make_client_capabilities()
-
- local has_cmp, cmp_lsp = pcall(require, 'cmp_nvim_lsp')
- if has_cmp then
- cap = vim.tbl_deep_extend('force', cap, cmp_lsp.default_capabilities())
+ local o = vim.lsp.protocol.make_client_capabilities()
+ if pcall(require, 'cmp_nvim_lsp') then
+ o = vim.tbl_deep_extend('force', o, require'cmp_nvim_lsp'.default_capabilities())
end
-
- return cap
+ return o
end
function M.make_opts(name)
diff --git a/lua/tms/lsp/servers.lua b/lua/tms/lsp/servers.lua
@@ -1,27 +1,6 @@
-- Custom configuration for servers
local M = {}
-function M.gdscript(opts)
- opts.cmd = vim.lsp.rpc.connect('127.0.0.1', 6005)
- opts.filetypes = { 'gd', 'gdscript', 'gdscript3' }
- opts.root_dir = vim.fs.dirname(vim.fs.find({ 'project.godot', '.git' }, { upward = true })[1])
- return opts
-end
-
-function M.jsonls(opts)
- if pcall(require, 'schemastore') then
- opts.settings = {
- json = {
- --
- schemas = require('schemastore').json.schemas(),
- validate = { enable = true },
- },
- }
- end
-
- return opts
-end
-
function M.yamlls(opts)
opts.settings = {
yaml = {
@@ -38,27 +17,6 @@ function M.cssls(opts)
return opts
end
-function M.lua_ls(opts)
- if pcall(require, 'neodev') then
- require('neodev').setup {}
- end
- opts.settings = {
- Lua = {
- --
- runtime = { version = 'LuaJIT' },
- diagnostics = {
- --
- globals = { 'vim' },
- disable = { 'missing-parameter' },
- },
- telemetry = { enable = false },
- workspace = { checkThirdParty = false },
- completion = { callSnippet = 'Replace' },
- },
- }
- return opts
-end
-
function M.emmet_ls(opts)
opts.root_dir = function(path)
vim.fs.dirname(vim.fs.find({ '.git', vim.fn.getcwd() }, { path = path, upward = true })[1])
@@ -78,15 +36,6 @@ function M.html(opts)
return opts
end
-function M.dartls(opts)
- local dart_tools_lsp = require('dart-tools.lsp')
- if dart_tools_lsp then
- opts = dart_tools_lsp.make_opts(opts)
- opts.settings.dart.lineLength = 120
- end
- return opts
-end
-
function M.intelephense(opts)
opts.init_options = {
clearCache = true,
diff --git a/lua/tms/options.lua b/lua/tms/options.lua
@@ -33,7 +33,7 @@ vim.opt.statusline = ' '
vim.opt.winbar = '%=%m %f'
vim.opt.ruler = false
vim.opt.listchars = { space = '·', tab = '» ', extends = '›', precedes = '‹', nbsp = '_', trail = '_', eol = '$' }
-vim.opt.fillchars = { eob = '•' }
+vim.opt.fillchars = { eob = '•', diff = '╱' }
vim.opt.scrolloff = 5
vim.opt.sidescrolloff = 5
vim.opt.signcolumn = 'yes:1'
diff --git a/lua/tms/p/codeium.lua b/lua/tms/p/codeium.lua
@@ -1,17 +1,6 @@
local M = {}
-M.Accept = function()
- local htok = pcall(require, 'hardtime')
- if htok then
- vim.cmd.Hardtime 'disable'
- end
-
- vim.fn['codeium#Accept']()
-
- if htok then
- vim.cmd.Hardtime 'enable'
- end
-end
+M.Accept = vim.fn['codeium#Accept']
M.Clear = vim.fn['codeium#Clear']
diff --git a/lua/tms/p/jsonpath.lua b/lua/tms/p/jsonpath.lua
@@ -1,7 +1,7 @@
local M = {}
-local parsers = require('nvim-treesitter.parsers')
-local ts_utils = require('nvim-treesitter.ts_utils')
+local parsers = require 'nvim-treesitter.parsers'
+local ts_utils = require 'nvim-treesitter.ts_utils'
local get_node_text = function(node)
return vim.treesitter.get_node_text(node, 0)
diff --git a/plugin/ai.lua b/plugin/ai.lua
@@ -1 +0,0 @@
-vim.g.ai_no_mappings = true
diff --git a/queries/dart/context.scm b/queries/dart/context.scm
@@ -0,0 +1,29 @@
+(function_body) @context
+
+(for_statement
+ body: (_) @context.end
+) @context
+
+(while_statement
+ body: (_) @context.end
+) @context
+
+(do_statement
+ body: (_) @context.end
+) @context
+
+(try_statement
+ body: (_) @context.end
+) @context
+
+(if_statement
+ consequence: (_) @context.end
+) @context
+
+(class_definition
+ body: (_) @context.end
+) @context
+
+(extension_declaration
+ body: (_) @context.end
+) @context
diff --git a/test/test.json b/test/test.json
@@ -1,5 +1,6 @@
{
"foo": [2, 3, 4, 5],
"zab": "testing",
- "woo": ["foobar"]
+ "woo": ["foobar"],
+ "a": {"b": "asdf"}
}