neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim.git
Log | Files | Refs

commit 436e35c332b3d81b13bf4f479ba20d01c78b7c20
parent f124de511c090a464c6aa7d3d34ae51ac0b27c75
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Thu, 28 Oct 2021 01:17:17 +0200

update

Diffstat:
Mafter/queries/dart/refactoring.scm | 14++++++++++++++
Mafter/queries/html/textobjects.scm | 6+++++-
Aafter/queries/scss/textobjects.scm | 12++++++++++++
Mftplugin/sh.lua | 2++
Mftplugin/zsh.lua | 2++
Minit.lua | 3++-
Mlua/tms/colors/gruvbox.lua | 16++++++++--------
Mlua/tms/colors/solarized.lua | 11++++++-----
Alua/tms/diagnostic.lua | 20++++++++++++++++++++
Dlua/tms/lsp/handlers.lua | 29-----------------------------
Mlua/tms/lsp/init.lua | 73++++++++++++++++++++-----------------------------------------------------
Mlua/tms/lsp/servers.lua | 19+++++++++++++++++++
Alua/tms/p/cmp/exe_source.lua | 37+++++++++++++++++++++++++++++++++++++
Alua/tms/p/cmp/init.lua | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alua/tms/p/luasnip.lua | 38++++++++++++++++++++++++++++++++++++++
Alua/tms/p/refactoring.lua | 22++++++++++++++++++++++
Mlua/tms/p/treesitter.lua | 7+++++--
Mlua/tms/plugins.lua | 72+++++-------------------------------------------------------------------
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