commit 436e35c332b3d81b13bf4f479ba20d01c78b7c20
parent f124de511c090a464c6aa7d3d34ae51ac0b27c75
Author: Tomas Nemec <nemi@skaut.cz>
Date: Thu, 28 Oct 2021 01:17:17 +0200
update
Diffstat:
18 files changed, 289 insertions(+), 166 deletions(-)
diff --git a/after/queries/dart/refactoring.scm b/after/queries/dart/refactoring.scm
@@ -7,6 +7,9 @@
;;((var_declaration
;; (var_spec
;; (identifier) @definition.local_name)))
+(local_variable_declaration
+ (initialized_variable_definition
+ (identifier) @definiton.local_name))
;; grabs all the arguments that are passed into the function. Needed for
;; function extraction, 106
@@ -15,6 +18,17 @@
;; (parameter_declaration
;; (identifier) @definition.function_argument)))
+(function_signature
+ (formal_parameter_list
+ (formal_parameter
+ (identifier) @definition.function_argument)))
+
+(function_signature
+ (formal_parameter_list
+ (optional_formal_parameters
+ (formal_parameter
+ (identifier) @definition.function_argument))))
+
;; TODO is this scope required? Fails when this is uncommented
;; (program) @definition.scope
;;(function_declaration) @definition.scope
diff --git a/after/queries/html/textobjects.scm b/after/queries/html/textobjects.scm
@@ -1 +1,5 @@
-(attribute) @attribute
+[
+ (attribute)
+ (tag_name)
+ (text)
+] @identifier
diff --git a/after/queries/scss/textobjects.scm b/after/queries/scss/textobjects.scm
@@ -0,0 +1,12 @@
+[
+ (identifier)
+ (name)
+ (function_name)
+ (variable_name)
+ (variable_value)
+ (string_value)
+ (plain_value)
+ (float_value)
+ (class_name)
+ (tag_name)
+] @identifier
diff --git a/ftplugin/sh.lua b/ftplugin/sh.lua
@@ -1 +1,3 @@
vim.cmd [[comp bash]]
+
+require('cmp').setup.buffer {sources = {{name = 'nvim_lsp'}, {name = 'exe'}, {name = 'path'}}}
diff --git a/ftplugin/zsh.lua b/ftplugin/zsh.lua
@@ -1 +1,3 @@
vim.cmd [[comp zsh]]
+
+require('cmp').setup.buffer {sources = {{name = 'nvim_lsp'}, {name = 'exe'}, {name = 'path'}}}
diff --git a/init.lua b/init.lua
@@ -86,7 +86,7 @@ inoremap {'?', '?<c-g>u'}
nnoremap {'<leader>w', '<cmd>write<cr>'}
nnoremap {'<leader>W', '<cmd>wall<cr>'}
nnoremap {'<leader>e', '<cmd>edit<cr>'}
-nnoremap {'<leader>E', '<cmd>enew<cr>'}
+nnoremap {'<leader>E', ':e %:h/'}
nnoremap {'<leader>q', '<cmd>quit<cr>'}
nnoremap {'<leader>Q', '<cmd>qall<cr>'}
nnoremap {'<leader>M', '<cmd>messages<cr>'}
@@ -179,5 +179,6 @@ au.addListeners({
-- ]], false)
vim.cmd [[ packadd cfilter ]]
+require('tms.diagnostic').setup()
require('tms.lsp').setup()
require('tms.ws').setup()
diff --git a/lua/tms/colors/gruvbox.lua b/lua/tms/colors/gruvbox.lua
@@ -41,10 +41,10 @@ M.setup = function()
Group.new('GitSignsDelete', c.gred, g.SignColumn.bg)
-- Lsp
- Group.new('LspDiagnosticsSignError', c.red:saturate(-0.5), g.SignColumn)
- Group.new('LspDiagnosticsSignWarning', c.orange:saturate(-0.5), g.SignColumn)
- Group.new('LspDiagnosticsSignInformation', c.gbg1, g.SignColumn)
- Group.new('LspDiagnosticsSignHint', c.gbg1, g.SignColumn)
+ Group.new('DiagnosticsSignError', c.red:saturate(-0.5), g.SignColumn)
+ Group.new('DiagnosticsSignWarning', c.orange:saturate(-0.5), g.SignColumn)
+ Group.new('DiagnosticsSignInformation', c.gbg1, g.SignColumn)
+ Group.new('DiagnosticsSignHint', c.gbg1, g.SignColumn)
-- TreeSitter
Group.new('TSDefinitionUsage', nil, c.gbg0)
@@ -101,10 +101,10 @@ M.setup = function()
Group.new('GitSignsDelete', nil, c.gred)
-- Lsp
- Group.new('LspDiagnosticsSignError', c.red:saturate(-0.5), g.SignColumn)
- Group.new('LspDiagnosticsSignWarning', c.orange:saturate(-0.5), g.SignColumn)
- Group.new('LspDiagnosticsSignInformation', c.gbg1, g.SignColumn)
- Group.new('LspDiagnosticsSignHint', c.gbg1, g.SignColumn)
+ Group.new('DiagnosticsSignError', c.red:saturate(-0.5), g.SignColumn)
+ Group.new('DiagnosticsSignWarning', c.orange:saturate(-0.5), g.SignColumn)
+ Group.new('DiagnosticsSignInformation', c.gbg1, g.SignColumn)
+ Group.new('DiagnosticsSignHint', c.gbg1, g.SignColumn)
-- TreeSitter
Group.new('TSDefinitionUsage', nil, c.gbg0)
diff --git a/lua/tms/colors/solarized.lua b/lua/tms/colors/solarized.lua
@@ -5,7 +5,7 @@ local M = {}
local get_color = function(name, part) return vim.fn.synIDattr(vim.fn.synIDtrans(vim.fn.hlID(name)), part) end
M.setup = function()
- local Color, c, Group, g, _ = require('colorbuddy').setup()
+ local Color, c, Group, g, styles = require('colorbuddy').setup()
Color.new('normal_bg', get_color('Normal', 'bg'))
Color.new('normal_fg', get_color('Normal', 'fg'))
Color.new('linenr_bg', get_color('LineNr', 'bg'))
@@ -28,10 +28,10 @@ M.setup = function()
Group.new('LineNr', c.normal_fg:dark(0.2), c.none)
-- Lsp
- Group.new('LspDiagnosticsSignError', c.red, g.SignColumn.bg)
- Group.new('LspDiagnosticsSignWarning', c.orange, g.SignColumn.bg)
- Group.new('LspDiagnosticsSignInformation', c.linenr_fg, g.SignColumn.bg)
- Group.new('LspDiagnosticsSignHint', c.linenr_fg, g.SignColumn.bg)
+ Group.new('DiagnosticsSignError', c.red, g.SignColumn.bg)
+ Group.new('DiagnosticsSignWarning', c.orange, g.SignColumn.bg)
+ Group.new('DiagnosticsSignInformation', c.linenr_fg, g.SignColumn.bg)
+ Group.new('DiagnosticsSignHint', c.linenr_fg, g.SignColumn.bg)
-- Telescope
Group.new('TelescopeSelection', c.none, c.cursorline_bg)
-- Zen
@@ -49,6 +49,7 @@ M.setup = function()
-- Treesitter
Group.new('TSDefinitionUsage', c.none, c.cursorline_bg)
Group.new('TSDefinition', c.white, c.cursorline_bg)
+
-- HiPairs
Group.new('hiPairs_matchPair', c.white, c.none)
Group.new('hiPairs_unmatchPair', c.white, c.red)
diff --git a/lua/tms/diagnostic.lua b/lua/tms/diagnostic.lua
@@ -0,0 +1,20 @@
+local M = {}
+
+M.setup = function()
+ -- Diagnositcs
+ vim.diagnostic.config({virtual_text = false, underline = false, float = {border = 'single'}, severity_sort = true})
+
+ vim.keymap.nnoremap {'gs', function() vim.diagnostic.open_float(0, {scope = 'line'}) end, silent = true}
+ vim.keymap.nnoremap {'gS', function() vim.diagnostic.open_float(0, {scope = 'cursor'}) end, silent = true}
+ vim.keymap.nnoremap {'gll', function() vim.diagnostic.setloclist() end, silent = true}
+ vim.keymap.nnoremap {'glq', function() vim.diagnostic.setqflist() end, silent = true}
+
+ local goto_next = function() vim.diagnostic.goto_next({float = false}) end
+ local goto_prev = function() vim.diagnostic.goto_prev({float = false}) end
+ vim.keymap.nnoremap {'>d', goto_next, silent = true}
+ vim.keymap.nnoremap {'>(', goto_next, silent = true}
+ vim.keymap.nnoremap {'<d', goto_prev, silent = true}
+ vim.keymap.nnoremap {'<(', goto_prev, silent = true}
+end
+
+return M
diff --git a/lua/tms/lsp/handlers.lua b/lua/tms/lsp/handlers.lua
@@ -1,29 +0,0 @@
-local lsp = vim.lsp
-local with = lsp.with
-
-local M = {}
-
-M.rename = function()
- local position_params = lsp.util.make_position_params()
- position_params.newName = vim.fn.input('new name >')
- vim.lsp.buf_request(0, 'textDocument/rename', position_params, function(err, method, result, ...)
- local entries = {}
- if result.changes then
- for uri, edits in pairs(result.changes) do
- local bufnr = vim.uri_to_bufnr(uri)
- for _, edit in ipairs(edits) do
- local start_line = edit.range.start.line + 1
- local line = vim.api.nvim_buf_get_lines(bufnr, start_line - 1, start_line, false)[1]
- table.insert(entries, {bufnr = bufnr, lnum = start_line, col = edit.range.start.character + 1, text = line})
- end
- end
- vim.fn.setqflist(entries, 'r')
- lsp.handlers['textDocument/rename'](err, method, result, ...)
- end
- end)
-end
-M.hover = with(lsp.handlers.hover, {border = 'single'})
-M.signatureHelp = with(lsp.handlers.signature_help, {border = 'single'})
-M.publishDiagnostics = with(lsp.diagnostic.on_publish_diagnostics, {virtual_text = false, underline = false})
-
-return M
diff --git a/lua/tms/lsp/init.lua b/lua/tms/lsp/init.lua
@@ -1,47 +1,28 @@
local efm = require('tms.lsp.efm')
-local handlers = require('tms.lsp.handlers')
local servers = require('tms.lsp.servers')
local M = {}
local keybind = function(bufnr)
- local t = '<cmd>lua require("tms.p.telescope")'
- local l = '<cmd>lua vim.lsp'
- local h = '<cmd>lua require("tms.lsp.handlers")'
- vim.keymap.nnoremap {'gd', l .. '.buf.definition()<cr>', buffer = bufnr, silent = true}
- vim.keymap.nnoremap {'gD', '<cmd>vsplit | lua vim.lsp.buf.definition()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gi', l .. '.buf.implementation()<cr>', silent = true, buffer = true}
- -- telescope fallback (subject to remove)
- vim.keymap.nnoremap {'gI', t .. 'b.lsp_implementations()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'K', l .. '.buf.hover()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'<c-p>', l .. '.buf.signature_help()<cr>', silent = true, buffer = true}
- vim.keymap.inoremap {'<c-p>', l .. '.buf.signature_help()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gr', l .. '.buf.references()<cr>', silent = true, buffer = true}
- -- telescope fallback (subject to remove)
- vim.keymap.nnoremap {'gR', t .. '.b.lsp_references()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'ga', t .. '.lsp_code_actions()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gn', l .. '.buf.rename()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gN', h .. '.rename()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gm', t .. '.lsp_document_symbols()<cr>', silent = true, buffer = true}
- vim.keymap.inoremap {'<down>', 'pumvisible() ? "<c-n>" : "<up>"', silent = true, buffer = true, expr = true}
- vim.keymap.inoremap {'<up>', 'pumvisible() ? "<c-p>" : "<down>"', silent = true, buffer = true, expr = true}
+ local t = require('tms.p.telescope')
+ vim.keymap.nnoremap {'gd', vim.lsp.buf.definition, buffer = bufnr, silent = true}
+ vim.keymap.nnoremap {'gD', '<cmd>vsplit | lua vim.lsp.buf.definition()<cr>', silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gi', vim.lsp.buf.implementation, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'K', vim.lsp.buf.hover, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'<c-p>', vim.lsp.buf.signature_help, silent = true, buffer = bufnr}
+ vim.keymap.inoremap {'<c-p>', vim.lsp.buf.signature_help, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gr', vim.lsp.buf.references, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'ga', t.lsp_code_actions, silent = true, buffer = bufnr}
+ vim.keymap.vnoremap {'ga', ':Telescope lsp_range_code_actions<cr>', silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gn', vim.lsp.buf.rename, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gm', t.lsp_document_symbols, silent = true, buffer = bufnr}
-- formatting
- vim.keymap.nnoremap {'Q', l .. '.buf.formatting()<cr>', silent = true, buffer = true}
- vim.keymap.vnoremap {'Q', l .. '.buf.formatting()<cr>', silent = true, buffer = true}
+ vim.keymap.nnoremap {'Q', vim.lsp.buf.formatting, silent = true, buffer = bufnr}
+ vim.keymap.vnoremap {'Q', vim.lsp.buf.range_formatting, silent = true, buffer = bufnr}
-- workspace
- vim.keymap.nnoremap {'gww', t .. '.b.lsp_workspace_symbols()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gwa', l .. '.buf.add_workspace_folder()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gwr', l .. '.buf.remove_workspace_folder()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gwl', '<cmd>lua dump(vim.lsp.buf.list_workspace_folders())<cr>', silent = true, buffer = true}
- -- diagnostic
- vim.keymap.nnoremap {'gs', l .. '.diagnostic.show_line_diagnostics()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gll', '<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'gld', t .. '.b.lsp_document_diagnostics()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'glw', t .. '.b.lsp_workspace_diagnostics()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'>d', l .. '.diagnostic.goto_next()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'>(', l .. '.diagnostic.goto_next()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'<d', l .. '.diagnostic.goto_prev()<cr>', silent = true, buffer = true}
- vim.keymap.nnoremap {'<(', l .. '.diagnostic.goto_prev()<cr>', silent = true, buffer = true}
+ vim.keymap.nnoremap {'gww', t.b.lsp_dynamic_workspace_symbols, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gwW', vim.lsp.buf.workspace_symbol, silent = true, buffer = bufnr}
+ vim.keymap.nnoremap {'gwl', function() dump(vim.lsp.buf.list_workspace_folders()) end, silent = true, buffer = bufnr}
end
local custom_attach = function(client, bufnr)
@@ -49,10 +30,8 @@ local custom_attach = function(client, bufnr)
client.resolved_capabilities.document_formatting = false
end
local lsp = vim.lsp
- lsp.handlers['textDocument/hover'] = handlers.hover
- lsp.handlers['textDocument/signatureHelp'] = handlers.signatureHelp
- lsp.handlers['textDocument/publishDiagnostics'] = handlers.publishDiagnostics
- -- lsp.handlers['textDocument/rename'] = handlers.rename
+ lsp.handlers['textDocument/hover'] = lsp.with(lsp.handlers.hover, {border = 'single'})
+ lsp.handlers['textDocument/signatureHelp'] = lsp.with(lsp.handlers.signature_help, {border = 'single'})
keybind(bufnr)
end
@@ -61,19 +40,7 @@ M.setup = function()
local lsp_installer = require('nvim-lsp-installer')
lsp_installer.on_server_ready(function(server)
local opts = {}
- if server.name == 'intelephense' then
- opts.init_options = {
- clearCache = true,
- licenceKey = os.getenv('XDG_CONFIG_HOME') .. '/intelephense/licenceKey.txt',
- globalStoragePath = os.getenv('XDG_CONFIG_HOME') .. '/intelephense',
- }
- elseif server.name == 'gopls' then
- opts.root_dir = lspc.util.root_pattern('go.mod', '.git', vim.fn.getcwd())
- elseif server.name == 'efm' then
- opts.init_options = {documentFormatting = true}
- opts.settings = efm.settings
- opts.filetypes = efm.filetypes()
- end
+ opts = servers.modify_opts(server.name, opts)
opts.on_attach = custom_attach
opts.capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
server:setup(opts)
diff --git a/lua/tms/lsp/servers.lua b/lua/tms/lsp/servers.lua
@@ -3,6 +3,25 @@ local efm = require('tms.lsp.efm')
local M = {}
+M.modify_opts = function(name, opts)
+ if name == 'intelephense' then
+ opts.init_options = {
+ clearCache = true,
+ licenceKey = os.getenv('XDG_CONFIG_HOME') .. '/intelephense/licenceKey.txt',
+ globalStoragePath = os.getenv('XDG_CONFIG_HOME') .. '/intelephense',
+ }
+ elseif name == 'gopls' then
+ opts.root_dir = lspc.util.root_pattern('go.mod', '.git', vim.fn.getcwd())
+ elseif name == 'efm' then
+ opts.init_options = {documentFormatting = true}
+ opts.settings = efm.settings
+ opts.filetypes = efm.filetypes()
+ end
+ return opts
+end
+
+-- Custom configuration for servers
+
M.dartls = function(attach_fn)
return {
on_attach = attach_fn,
diff --git a/lua/tms/p/cmp/exe_source.lua b/lua/tms/p/cmp/exe_source.lua
@@ -0,0 +1,37 @@
+local job = require('plenary.job')
+
+local source = {}
+
+local get_files = function(callback)
+ job:new({
+ command = 'zsh',
+ args = {'-o', 'shwordsplit', '-c', 'IFS=: && stest -flx $PATH'},
+ on_exit = function(j, code)
+ if code > 0 then callback({}) end
+ local items = {}
+ for _, item in ipairs(j:result()) do table.insert(items, {label = item}) end
+ callback(items)
+ end,
+ }):sync()
+end
+
+---Source constructor.
+source.new = function()
+ local self = setmetatable({}, {__index = source})
+ get_files(function(items) self.files = items end)
+ return self
+end
+
+---Invoke completion (required).
+--- If you want to abort completion, just call the callback without arguments.
+---@param params cmp.SourceCompletionApiParams
+---@param callback fun(response: lsp.CompletionResponse|nil)
+function source:complete(params, callback)
+ if #self.files > 0 then
+ callback(self.files)
+ else
+ callback()
+ end
+end
+
+return source
diff --git a/lua/tms/p/cmp/init.lua b/lua/tms/p/cmp/init.lua
@@ -0,0 +1,72 @@
+local luasnip = require('luasnip')
+local cmp = require('cmp')
+
+local M = {}
+
+-- local has_words_before = function()
+-- local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+-- return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') == nil
+-- end
+
+M.sources = {
+ {name = 'nvim_lsp'},
+ {name = 'nvim_lua'},
+ {name = 'luasnip'},
+ {name = 'path'},
+ {name = 'buffer', keyword_length = 5},
+ {name = 'spell'},
+ {name = 'calc'},
+ {name = 'treesitter'},
+ {name = 'dictionary'},
+}
+
+local register_sources = function() cmp.register_source('exe', require('tms.p.cmp.exe_source').new()) end
+
+M.setup = function()
+ register_sources()
+
+ cmp.setup({
+ completion = {autocomplete = false},
+ documentation = {border = 'single'},
+ snippet = {expand = function(args) luasnip.lsp_expand(args.body) end},
+ mapping = {
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-e>'] = cmp.mapping.close(),
+ ['<C-y>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Insert, select = true}),
+ ['<CR>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Insert, select = true}),
+ ['<Left>'] = cmp.mapping.close(),
+ ['<Down>'] = cmp.mapping.select_next_item(),
+ ['<Up>'] = cmp.mapping.select_prev_item(),
+ ['<Right>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Insert, select = true}),
+
+ -- ['<Tab>'] = cmp.mapping(function(fallback)
+ -- if cmp.visible() then
+ -- cmp.select_next_item()
+ -- elseif luasnip.expand_or_jumpable() then
+ -- luasnip.expand_or_jump()
+ -- elseif has_words_before() then
+ -- cmp.complete()
+ -- else
+ -- fallback()
+ -- end
+ -- end, {'i', 's'}),
+ --
+ -- ['<S-Tab>'] = cmp.mapping(function(fallback)
+ -- if cmp.visible() then
+ -- cmp.select_prev_item()
+ -- elseif luasnip.jumpable(-1) then
+ -- luasnip.jump(-1)
+ -- else
+ -- fallback()
+ -- end
+ -- end, {'i', 's'}),
+
+ },
+ sources = M.sources,
+ experimental = {ghost_text = true},
+ })
+end
+
+return M
diff --git a/lua/tms/p/luasnip.lua b/lua/tms/p/luasnip.lua
@@ -0,0 +1,38 @@
+local luasnip = require('luasnip')
+local M = {}
+
+local function feedkeys(key)
+ key = vim.api.nvim_replace_termcodes(key, true, false, true)
+ vim.api.nvim_feedkeys(key, 'n', true)
+end
+
+M.setup = function()
+ local next = '<C-n>'
+ local prev = '<C-p>'
+ vim.keymap.inoremap {
+ next,
+ function()
+ if luasnip.jumpable(1) then
+ luasnip.jump(1)
+ else
+ feedkeys(next)
+ end
+ end,
+ silent = true,
+ }
+ vim.keymap.snoremap {next, '<cmd>lua require("luasnip").jump(1)<cr>', silent = true}
+ vim.keymap.inoremap {
+ prev,
+ function()
+ if luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ feedkeys(prev)
+ end
+ end,
+ silent = true,
+ }
+ vim.keymap.snoremap {prev, '<cmd>lua require("luasnip").jump(-1)<cr>', silent = true}
+end
+
+return M
diff --git a/lua/tms/p/refactoring.lua b/lua/tms/p/refactoring.lua
@@ -0,0 +1,22 @@
+local refactor = require('refactoring')
+local M = {}
+M.setup = function()
+ refactor.setup()
+
+ vim.keymap.vnoremap {
+ '<leader>re',
+ [[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function')<CR>]],
+ silent = true,
+ }
+ vim.keymap.vnoremap {
+ '<leader>rf',
+ [[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function To File')<CR>]],
+ silent = true,
+ }
+ vim.keymap.vnoremap {
+ '<leader>rv',
+ [[ <Esc><Cmd>lua require('refactoring').refactor('Extract Variable')<CR>]],
+ silent = true,
+ }
+end
+return M
diff --git a/lua/tms/p/treesitter.lua b/lua/tms/p/treesitter.lua
@@ -3,7 +3,7 @@ local M = {}
M.setup = function()
require'nvim-treesitter.configs'.setup {
ensure_intalled = 'maintained',
- highlight = {enable = true},
+ highlight = {enable = true--[[ , disable = {'scss'} --]]},
indent = {enable = true},
@@ -20,7 +20,6 @@ M.setup = function()
['if'] = '@function.inner',
['ac'] = '@comment.outer',
['im'] = '@identifier',
- ['ia'] = {html = '@attribute'},
},
},
swap = {
@@ -50,6 +49,10 @@ M.setup = function()
playground = {enable = true, disable = {}, updatetime = 25, persist_queries = false},
}
+
+ require "nvim-treesitter.highlight"
+ local hlmap = vim.treesitter.highlighter.hl_map
+ hlmap.error = nil
end
return M
diff --git a/lua/tms/plugins.lua b/lua/tms/plugins.lua
@@ -283,7 +283,7 @@ local function init()
-- snippets
use {'norcalli/snippets.nvim', config = function() require('tms.p.snippets').setup() end}
- use {'L3MON4D3/LuaSnip'}
+ use {'L3MON4D3/LuaSnip', config = function() require('tms.p.luasnip').setup() end}
-- completion
use {
@@ -299,62 +299,7 @@ local function init()
'uga-rosa/cmp-dictionary',
'saadparwaiz1/cmp_luasnip',
},
- config = function()
- local luasnip = require('luasnip')
- local cmp = require('cmp')
-
- local has_words_before = function()
- local line, col = unpack(vim.api.nvim_win_get_cursor(0))
- return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') == nil
- end
-
- cmp.setup({
- completion = {autocomplete = false},
- documentation = {border = 'single'},
- snippet = {expand = function(args) require('luasnip').lsp_expand(args.body) end},
- mapping = {
- ['<C-d>'] = cmp.mapping.scroll_docs(-4),
- ['<C-f>'] = cmp.mapping.scroll_docs(4),
- ['<Down'] = cmp.mapping.select_next_item({behavior = cmp.SelectBehavior.Insert}),
- ['<Up>'] = cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Insert}),
- ['<C-Space>'] = cmp.mapping.complete(),
- ['<C-e>'] = cmp.mapping.close(),
- ['<CR>'] = cmp.mapping.confirm({select = true}),
- ['<Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- elseif has_words_before() then
- cmp.complete()
- else
- fallback()
- end
- end, {'i', 's'}),
-
- ['<S-Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_prev_item()
- elseif luasnip.jumpable(-1) then
- luasnip.jump(-1)
- else
- fallback()
- end
- end, {'i', 's'}),
- },
- sources = {
- {name = 'nvim_lsp'},
- {name = 'nvim_lua'},
- {name = 'luasnip'},
- {name = 'path'},
- {name = 'buffer'},
- {name = 'spell'},
- {name = 'calc'},
- {name = 'treesitter'},
- {name = 'dictionary'},
- },
- })
- end,
+ config = function() require('tms.p.cmp').setup() end,
}
-- ui
@@ -369,17 +314,10 @@ local function init()
-- refactor
use {
+ -- '/home/tms/dev/nvim/refactoring.nvim',
'ThePrimeagen/refactoring.nvim',
- config = function()
- local refactor = require('refactoring')
- refactor.setup()
- vim.api.nvim_set_keymap('v', '<leader>re',
- [[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function')<CR>]],
- {noremap = true, silent = true, expr = false})
- vim.api.nvim_set_keymap('v', '<leader>rf',
- [[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function To File')<CR>]],
- {noremap = true, silent = true, expr = false})
- end,
+ requires = {'nvim-lua/plenary.nvim', 'nvim-treesitter/nvim-treesitter'},
+ config = function() require('tms.p.refactoring').setup() end,
}
-- lsp