neovim

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

commit 14277d6f3f81e5fb690000b7f4434953aa4bee50
parent b7195de20a4bbbe4022d4eb770cfabec2f769ca7
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Tue,  4 Oct 2022 10:34:01 +0200

update

Diffstat:
Mafter/plugin/actions.lua | 2+-
Mafter/plugin/difftastic.lua | 4++++
Mafter/plugin/format.lua | 16+++++-----------
Mafter/plugin/leap.lua | 1-
Mafter/plugin/lsp.lua | 32++++++++++++++------------------
Mafter/plugin/telescope.lua | 13++++++-------
Mafter/plugin/treesitter.lua | 4++--
Mftplugin/dart.lua | 84++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mftplugin/mail.lua | 2+-
Mlua/plugins.lua | 5++---
Mlua/tms/autocmd.lua | 1+
Mlua/tms/ft/dart/closing_labels.lua | 2+-
Mlua/tms/keymap.lua | 16+++++++---------
Mlua/tms/lsp/init.lua | 8++++++--
Mlua/tms/lsp/servers.lua | 78+++++++++++++++++++++++++-----------------------------------------------------
Mlua/tms/options.lua | 1+
Alua/tms/p/rename_file.lua | 23+++++++++++++++++++++++
Mlua/tms/p/telescope.lua | 61+++++++++++++++++++++++++++++++++++++++++++++----------------
Mlua/tms/ws/init.lua | 4++--
Mplugin/diagnostic.lua | 49++++++++++++++++++++++++++++++++-----------------
Mplugin/globals.lua | 7-------
Mplugin/unimpaired.lua | 71++++++++++++++++++++++++++++++++++++++++-------------------------------
22 files changed, 261 insertions(+), 223 deletions(-)

diff --git a/after/plugin/actions.lua b/after/plugin/actions.lua @@ -3,7 +3,7 @@ if not pcall(require, 'actions') then return end local utils = require 'actions.utils' local actions = {} -local mappings = { ['n <leader>ar'] = 'run', ['n <leader>at'] = 'test', ['n <leader>ab'] = 'build' } +local mappings = { ['n <space>ar'] = 'run', ['n <space>at'] = 'test', ['n <space>ab'] = 'build' } local function make(_) vim.cmd [[make]] end diff --git a/after/plugin/difftastic.lua b/after/plugin/difftastic.lua @@ -123,6 +123,10 @@ local function show_diff(lang, lhs_file, rhs_file, chunks) local lhs_buf = vim.api.nvim_create_buf(true, true) local rhs_buf = vim.api.nvim_create_buf(true, true) + -- TODO(tms) 03.10.22: yes! + -- local oldbuf = vim.fn.bufadd(old_fname) + -- vim.fn.bufload(oldbuf) + vim.api.nvim_buf_call(lhs_buf, function() vim.api.nvim_command(':0r ' .. lhs_file) end) diff --git a/after/plugin/format.lua b/after/plugin/format.lua @@ -8,26 +8,20 @@ vim.api.nvim_create_autocmd('LspAttach', { local cap = client.server_capabilities; if cap.documentFormattingProvider then - vim.api.nvim_buf_set_option(buf, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') - + -- TODO(tms) 03.10.22: zbavit se Q a pouivat gq vim.keymap.set('n', 'Q', function() - local params = vim.lsp.util.make_formatting_params({}) - local rsp = client.request_sync('textDocument/formatting', params, nil, buf) - - if rsp.result then - vim.lsp.util.apply_text_edits(rsp.result, buf, 'utf-16') - end + vim.lsp.buf.format() if vim.api.nvim_buf_get_option(buf, 'ft') == 'dart' then - vim.api.nvim_command('NgHtmlFormat') + vim.api.nvim_cmd({ cmd = 'NgHtmlFormat' }, {}) end end, { buffer = buf, desc = 'LSP Format' }) + end if cap.documentRangeFormattingProvider then - local rhs = ':<c-u>lua vim.lsp.buf.range_formatting()<cr>' - vim.keymap.set('v', 'Q', rhs, { buffer = buf, desc = 'LSP Range Format' }) + vim.keymap.set('v', 'Q', vim.lsp.buf.format, { buffer = buf, desc = 'LSP Range Format' }) end end, }) diff --git a/after/plugin/leap.lua b/after/plugin/leap.lua @@ -25,7 +25,6 @@ end default_highlights() leap.set_default_keymaps() -vim.keymap.set('n', 'gw', '<Plug>(leap-cross-window)') if pcall(require, 'tms.p.leap.ast') then vim.keymap.set({ 'n', 'x', 'o' }, 'gp', function() diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua @@ -25,11 +25,12 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set('n', 'gd', lb.definition, opt 'LSP Definition') 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')) - end + -- collision with previous tab `gT` + -- if cap.typeDefinitionProvider then + -- vim.keymap.set('n', 'gT', lb.type_definition, opt('LSP Type Definition')) + -- end if cap.implementationProvider then - vim.keymap.set('n', 'gi', lb.implementation, opt('LSP Implementation')) + vim.keymap.set('n', 'gm', lb.implementation, opt('LSP Implementation')) end if cap.signatureHelpProvider then vim.keymap.set('n', '<c-p>', lb.signature_help, opt('LSP Signature Help')) @@ -39,17 +40,16 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set('n', 'gr', lb.references, opt('LSP References')) end if cap.codeActionProvider then - vim.keymap.set('n', 'ga', lb.code_action, opt('LSP Code Actions')) - vim.keymap.set('v', 'ga', lb.range_code_action, opt('LSP Code Actions')) - end - if cap.renameProvider then - vim.keymap.set('n', 'gn', lb.rename, opt('LSP Rename')) + vim.keymap.set({ 'n', 'v' }, 'ga', lb.code_action, opt('LSP Code Actions')) 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 + if cap.renameProvider then + vim.keymap.set('n', 'cd', lb.rename, opt('LSP Rename (change definition')) + end local has_aerial, aerial = pcall(require, 'aerial') if has_aerial then @@ -69,16 +69,12 @@ local with = vim.lsp.with handlers['textDocument/hover'] = with(handlers.hover, { border = 'single' }) handlers['textDocument/signatureHelp'] = with(handlers.signature_help, { border = 'single' }) --- lsp.handlers['$/progress'] = progress.handler +-- local progress = require('tms.lsp.progress') +-- handlers['$/progress'] = progress.handler -- local severity = { 'error', 'warn', 'info' } --- lsp.handlers['window/showMessage'] = --- function(_, method, params, _) vim.notify(method.message, severity[params.type]) end - --- manual -do - lspconfig.dartls.setup(lsp.make_opts('dartls')) - lspconfig.tsserver.setup(lsp.make_opts('tsserver')) -end +-- handlers['window/showMessage'] = function(_, method, params, _) +-- vim.notify(method.message, severity[params.type]) +-- end -- mason if pcall(require, 'mason') then diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua @@ -1,4 +1,6 @@ -if not pcall(require, 'telescope') then return end +if not pcall(require, 'telescope') then + return +end local telescope = require('telescope') local actions = require('telescope.actions') @@ -16,7 +18,6 @@ telescope.setup { -- extensions _ = telescope.load_extension('fzy_native') _ = telescope.load_extension('dap') -_ = telescope.load_extension('media_files') _ = telescope.load_extension('aerial') _ = telescope.load_extension('zk') _ = telescope.load_extension('git_worktree') @@ -41,18 +42,16 @@ map('n', '<space>e', 'grep_string') map('n', '<space>c', 'git_status') map('n', '<space>q', 'quickfix') map('n', '<space>k', 'keymaps') -map('n', '<space>m', 'man_pages') +map('n', '<space>r', 'aerial') +map('n', '<space>m', 'lsp_document_symbols') +map('n', '<space>M', 'lsp_dynamic_workspace_symbols') map('n', '<space>o', 'oldfiles') map('n', '<space>t', 'treesitter') map('n', '<space>p', 'packer') map('n', '<space>P', 'reloader') -map('n', '<space>M', 'media_files') -map('n', '<space>r', 'aerial') map('n', '<space>wo', 'git_worktrees') map('n', '<space>wi', 'create_git_worktree') map('n', '<space>n', 'edit_neovim') -map('n', 'gm', 'lsp_document_symbols') -map('n', 'gM', 'lsp_dynamic_workspace_symbols') require('tms.colors').update(function(t) t.Group.new('TelescopeSelection', nil, t.dimm(t.groups.Normal.bg, 0.05)) diff --git a/after/plugin/treesitter.lua b/after/plugin/treesitter.lua @@ -28,10 +28,10 @@ parser_configs.norg_table = { }, } -require'nvim-treesitter.configs'.setup { +require 'nvim-treesitter.configs'.setup { ensure_intalled = 'all', ignore_install = { 'lua', 'vim', 'c' }, - highlight = { enable = true, disable = { 'lua' } }, + highlight = { enable = true, disable = { 'lua', 'vim' } }, indent = { enable = true }, diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua @@ -1,52 +1,54 @@ vim.g.dart_style_guide = 2 vim.g.dart_html_in_string = true -if not pcall(require, 'dartls-helper.lsp') then - return -end +vim.lsp.start(require'tms.lsp'.make_opts('dartls')) + +if pcall(require, 'dart-tools') then + local dt_lsp = require('dart-tools.lsp') -local lsp = require('dartls-helper.lsp') -local req = require('dartls-helper.request') + local dt_req = require('dart-tools.lsp.request') -local ddebug = require('tms.ft.dart.debug') + local ddebug = require('tms.ft.dart.debug') -local cmd_opts = {} -vim.api.nvim_buf_create_user_command(0, 'DartDebug', ddebug.func, cmd_opts) -vim.api.nvim_buf_create_user_command(0, 'DartPrint', ddebug.print, cmd_opts) -vim.api.nvim_buf_create_user_command(0, 'DartOrganizeImports', lsp.organize_imports, cmd_opts) -vim.api.nvim_buf_create_user_command(0, 'DartFixAll', lsp.fix_all, cmd_opts) -vim.api.nvim_buf_create_user_command(0, 'DartExtract', lsp.extract_method, cmd_opts) -vim.api.nvim_buf_create_user_command(0, 'DartVariable', lsp.extract_local_variable, cmd_opts) + local cmd_opts = {} + vim.api.nvim_buf_create_user_command(0, 'DartDebug', ddebug.func, cmd_opts) + vim.api.nvim_buf_create_user_command(0, 'DartPrint', ddebug.print, cmd_opts) + vim.api.nvim_buf_create_user_command(0, 'DartOrganizeImports', dt_lsp.organize_imports, cmd_opts) + vim.api.nvim_buf_create_user_command(0, 'DartFixAll', dt_lsp.fix_all, cmd_opts) + vim.api.nvim_buf_create_user_command(0, 'DartExtract', dt_lsp.extract_method, cmd_opts) + vim.api.nvim_buf_create_user_command(0, 'DartVariable', dt_lsp.extract_local_variable, cmd_opts) -local opts = function(desc) - return { buffer = true, desc = desc } + local opts = function(desc) + return { buffer = true, desc = desc } + end + vim.keymap.set('n', '<leader>ap', function() + ddebug.print() + end, opts('Dart Debug Print')) + vim.keymap.set('n', '<leader>ao', dt_lsp.organize_imports, opts('Dart Organize Imports')) + vim.keymap.set('n', '<leader>af', function() + dt_lsp.fix_all() + end, opts('Dart Fix All')) + vim.keymap.set({ 'v', 'n' }, '<leader>ai', dt_lsp.inline_local_variable, opts('Dart Inline Local Varibale')) + vim.keymap.set({ 'v', 'n' }, '<leader>ae', dt_lsp.extract_local_variable, opts('Dart Extract Local Varibale')) + vim.keymap.set({ 'v', 'n' }, '<leader>am', dt_lsp.extract_method, opts('Dart Extract Method')) + vim.keymap.set('n', '<leader>al', dt_lsp.list_code_action_kinds, opts('Dart List Code Actions')) + vim.keymap.set('n', '<leader>as', function() + dt_req.execute_command('refactor.splitVariableDeclaration') + end, opts('Dart Split Variable Declaration')) + vim.keymap.set('n', '<leader>aj', function() + dt_req.execute_command('refactor.joinVariableDeclaration') + end, opts('Dart Join Variable Declaration')) + vim.keymap.set('n', '<leader>ax', function() + dt_req.execute_command('refactor.convert.bodyToExpression') + end, opts('Dart Convert To Expression')) + vim.keymap.set('n', '<leader>aa', function() + dt_req.execute_command('refactor.convert.bodyToAsync') + end, opts('Dart Convert To Async')) + vim.keymap.set('n', '<leader>ab', function() + dt_req.execute_command('refactor.convert.bodyToBlock') + end, opts('Dart Convert To Block')) + vim.keymap.set('n', '<leader>ad', dt_lsp.super, opts('Dart Go to Super Definition')) end -vim.keymap.set('n', '<leader>pp', function() - ddebug.print() -end, opts('Dart Debug Print')) -vim.keymap.set('n', '<leader>po', lsp.organize_imports, opts('Dart Organize Imports')) -vim.keymap.set('n', '<leader>pf', function() - lsp.fix_all() -end, opts('Dart Fix All')) -vim.keymap.set({ 'v', 'n' }, '<leader>pi', lsp.inline_local_variable, opts('Dart Inline Local Varibale')) -vim.keymap.set({ 'v', 'n' }, '<leader>pe', lsp.extract_local_variable, opts('Dart Extract Local Varibale')) -vim.keymap.set({ 'v', 'n' }, '<leader>pm', lsp.extract_method, opts('Dart Extract Method')) -vim.keymap.set('n', '<leader>pl', lsp.list_code_action_kinds, opts('Dart List Code Actions')) -vim.keymap.set('n', '<leader>ps', function() - req.execute_code_action('refactor.splitVariableDeclaration') -end, opts('Dart Split Variable Declaration')) -vim.keymap.set('n', '<leader>pj', function() - req.execute_code_action('refactor.joinVariableDeclaration') -end, opts('Dart Join Variable Declaration')) -vim.keymap.set('n', '<leader>px', function() - req.execute_code_action('refactor.convert.bodyToExpression') -end, opts('Dart Convert To Expression')) -vim.keymap.set('n', '<leader>pa', function() - req.execute_code_action('refactor.convert.bodyToAsync') -end, opts('Dart Convert To Async')) -vim.keymap.set('n', '<leader>pb', function() - req.execute_code_action('refactor.convert.bodyToBlock') -end, opts('Dart Convert To Block')) if vim.fn.getline(1):match('^#!.*dcli') then vim.cmd [[comp dcli]] diff --git a/ftplugin/mail.lua b/ftplugin/mail.lua @@ -1,3 +1,3 @@ vim.opt.spell = true vim.opt.spelllang = {'cs', 'csa', 'en'} -vim.keymap.set('n', '<leader>pa', require('tms.p.telescope').mail_address, {buffer = true}) +vim.keymap.set('n', '<leader>aa', require('tms.p.telescope').mail_address, {buffer = true}) diff --git a/lua/plugins.lua b/lua/plugins.lua @@ -50,7 +50,7 @@ return packer.startup({ -- Notes -- use { 'nvim-neorg/neorg', requires = { 'nvim-lua/plenary.nvim' } } - use { 'mickael-menu/zk-nvim', requires = { 'neovim/nvim-lspconfig' } } + use { 'mickael-menu/zk-nvim' } -- quickfix list use 'kevinhwang91/nvim-bqf' @@ -140,14 +140,13 @@ return packer.startup({ use 'nvim-telescope/telescope-packer.nvim' use 'nvim-telescope/telescope-fzy-native.nvim' use 'nvim-telescope/telescope-dap.nvim' - use 'nvim-telescope/telescope-media-files.nvim' -- Godot use 'habamax/vim-godot' -- personal use 'GenesisTMS/trans.nvim' - use '~/dev/nvim/plugins/dartls-helper' + use '~/dev/nvim/plugins/dart-tools.nvim' -- database use 'tpope/vim-dadbod' diff --git a/lua/tms/autocmd.lua b/lua/tms/autocmd.lua @@ -20,6 +20,7 @@ vim.api.nvim_create_autocmd('BufEnter', { if preview then vim.opt.scrolloff = 0 vim.opt.sidescrolloff = 0 + -- vim.api.nvim_exec('wincmd L', false) end end, }) diff --git a/lua/tms/ft/dart/closing_labels.lua b/lua/tms/ft/dart/closing_labels.lua @@ -41,7 +41,7 @@ end -- Gets a callback to register to the dartls publishClosingLabels notification. -- @tparam table a table of options: highlight, prefix -M.get_callback = function(opts) +M.handle = function(opts) return function(_, _, result, _, _) local uri = result.uri local labels = result.labels diff --git a/lua/tms/keymap.lua b/lua/tms/keymap.lua @@ -15,15 +15,10 @@ vim.keymap.set('n', '<leader>w', '<cmd>write<cr>', {}) vim.keymap.set('n', '<leader>W', '<cmd>wall<cr>', {}) vim.keymap.set('n', '<leader>e', '<cmd>edit<cr>', {}) vim.keymap.set('n', '<leader>E', ':e %:h/', {}) -vim.keymap.set('n', '<leader>q', '<cmd>quit<cr>', {}) -vim.keymap.set('n', '<leader>Q', '<cmd>quit!<cr>', {}) +-- vim.keymap.set('n', '<leader>q', '<cmd>quit<cr>', {}) +-- vim.keymap.set('n', '<leader>Q', '<cmd>quit!<cr>', {}) vim.keymap.set('n', '<leader>M', '<cmd>messages<cr>', {}) vim.keymap.set('n', '<leader>so', '<cmd>source<cr>', {}) --- window movement -vim.keymap.set('n', '<a-h>', '<c-w>h', {}) -vim.keymap.set('n', '<a-j>', '<c-w>j', {}) -vim.keymap.set('n', '<a-k>', '<c-w>k', {}) -vim.keymap.set('n', '<a-l>', '<c-w>l', {}) -- window movement in terminal vim.keymap.set('t', '<a-l>', '<c-\\><c-n><c-w>l', {}) vim.keymap.set('t', '<a-j>', '<c-\\><c-n><c-w>j', {}) @@ -41,10 +36,13 @@ vim.keymap.set('i', '<c-k>', '<esc>:m .-2<cr>==', {}) vim.keymap.set('v', '<c-j>', ':m \'>+1<cr>gv=gv', {}) vim.keymap.set('v', '<c-k>', ':m \'<-2<cr>gv=gv', {}) -- quickfix/loclist -vim.keymap.set('n', '<leader>c', '<cmd>call ToggleList("Quickfix List", "c")<cr>', {}) -vim.keymap.set('n', '<leader>C', '<cmd>cexpr []|cclose<cr>', {}) +vim.keymap.set('n', '<leader>q', '<cmd>call ToggleList("Quickfix List", "c")<cr>', {}) +vim.keymap.set('n', '<leader>Q', '<cmd>cexpr []|cclose<cr>', {}) vim.keymap.set('n', '<leader>l', '<cmd>call ToggleList("Location List", "l")<cr>', {}) vim.keymap.set('n', '<leader>L', '<cmd>lexpr []|lclose<cr>', {}) +-- file operation +vim.keymap.set('n', 'cf', require'tms.p.rename_file'.rename_file, { desc = 'Rename File (Change File)' }) +-- <leader>c is for lsp rename -- fold vim.keymap.set('n', 'zH', 'zM', {}) vim.keymap.set('n', 'zh', 'zm', {}) diff --git a/lua/tms/lsp/init.lua b/lua/tms/lsp/init.lua @@ -13,9 +13,13 @@ end M.make_opts = function(name) local opts = {} + opts.name = name opts.capabilities = M.capabilities() - opts = require('tms.lsp.servers').setup(name, opts) - return opts + local servers = require('tms.lsp.servers') + if not servers[name] then + return opts + end + return servers[name](opts) end return M diff --git a/lua/tms/lsp/servers.lua b/lua/tms/lsp/servers.lua @@ -1,64 +1,40 @@ -- Custom configuration for servers local M = {} -local S = {} -M.installed = { - 'bashls', - 'clangd', - 'cmake', - 'cssls', - 'dockerls', - 'emmet_ls', - 'gopls', - 'html', - 'intelephense', - 'jdtls', - 'jsonls', - 'pyright', - 'rust_analyzer', - 'sumneko_lua', - 'tsserver', - 'vimls', - 'yamlls', - 'zls', - 'dartls', - 'gdscript', -} - -M.no_format = { sumneko_lua = true } - -M.setup = function(name, opts) - local fn = S[name] - if fn then - opts = fn(opts) - end - return opts -end - -S.jsonls = function(opts) +M.jsonls = function(opts) opts.settings = { json = { schemas = require('schemastore').json.schemas() } } return opts end -S.yamlls = function(opts) +M.yamlls = function(opts) opts.settings = { yaml = { schemaStore = { enable = true } } } return opts end -S.cssls = function(opts) +M.cssls = function(opts) opts.capabilities.textDocument.completion.completionItem.snippetSupport = true return opts end -S.sumneko_lua = function(opts) +M.sumneko_lua = function(opts) opts.settings = { - Lua = { runtime = { version = 'LuaJIT' }, diagnostics = { globals = { 'vim' } }, telemetry = { enable = false } }, + Lua = { + -- + runtime = { version = 'LuaJIT' }, + diagnostics = { -- + globals = { 'vim' }, + disable = { 'missing-parameter' }, + }, + telemetry = { enable = false }, + workspace = { checkThirdParty = false }, + }, + } opts = require('lua-dev').setup({ library = { vimruntime = true, -- runtime path types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others - plugins = false, -- installed opt or start plugins in packpath + plugins = true, -- installed opt or start plugins in packpath -- you can also specify the list of plugins to make available as a workspace library -- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" }, }, @@ -68,33 +44,29 @@ S.sumneko_lua = function(opts) return opts end -S.emmet_ls = function(opts) +M.emmet_ls = function(opts) opts.root_dir = require('lspconfig').util.root_pattern('.git', vim.fn.getcwd()) return opts end -S.gopls = function(opts) +M.gopls = function(opts) opts.root_dir = require('lspconfig').util.root_pattern('go.work', 'go.mod', '.git', vim.fn.getcwd()) return opts end -S.html = function(opts) +M.html = function(opts) opts.init_options = { provideFormatter = false } return opts end -S.dartls = function(opts) - 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 } } - opts.handlers = { ['dart/textDocument/publishClosingLabels'] = require('tms.ft.dart.closing_labels').get_callback() } - opts.root_dir = require('lspconfig').util.root_pattern('pubspec.yaml', '.git', vim.fn.getcwd()) - return opts +M.dartls = function(opts) + local dart_tools_lsp = require('dart-tools.lsp') + if dart_tools_lsp then + return dart_tools_lsp.make_opts(opts) + end end -S.intelephense = function(opts) +M.intelephense = function(opts) opts.init_options = { clearCache = true, licenceKey = os.getenv('XDG_CONFIG_HOME') .. '/intelephense/licenceKey.txt', diff --git a/lua/tms/options.lua b/lua/tms/options.lua @@ -42,3 +42,4 @@ vim.opt.number = false vim.opt.scrolloff = 5 vim.opt.sidescrolloff = 5 vim.opt.signcolumn = 'yes:1' +vim.opt.cmdheight = 0 diff --git a/lua/tms/p/rename_file.lua b/lua/tms/p/rename_file.lua @@ -0,0 +1,23 @@ +local M = {} + +function M.rename_file() + local old_fname = vim.api.nvim_buf_get_name(0) + + vim.ui.input({ -- + prompt = 'filename', + default = old_fname, + completion = 'file', + }, function(new_fname) + if not new_fname then + return + end + + if pcall(require, 'dart-tools.lsp') then + require('dart-tools.lsp').update_imports(old_fname, new_fname) + end + + vim.lsp.util.rename(old_fname, new_fname) + end) +end + +return M diff --git a/lua/tms/p/telescope.lua b/lua/tms/p/telescope.lua @@ -40,22 +40,51 @@ M.edit_neovim = function() builtin.find_files(themes.get_dropdown { prompt_title = 'dotfiles', cwd = '~/.config/nvim', previewer = false }) end -M.find_files = function() builtin.find_files(layout.dd_large_noprev) end -M.spell_suggest = function() builtin.spell_suggest(layout.dd) end -M.lines = function() builtin.current_buffer_fuzzy_find(layout.dd_large_noprev) end -M.reloader = function() builtin.reloader(layout.dd_noprev) end -M.buffers = function() builtin.buffers(layout.dd_large) end -M.keymaps = function() builtin.keymaps(layout.dd_large) end -M.quickfix = function() builtin.quickfix(layout.dd_large_noprev) end -M.lsp_code_actions = function() builtin.lsp_code_actions(layout.dd) end -M.lsp_document_symbols = function() builtin.lsp_document_symbols(layout.dd_large) end -M.lsp_definitions = function() builtin.lsp_definitions(layout.dd) end -M.aerial = function() extensions.aerial.aerial(layout.dd_large) end -M.packer = function() extensions.packer.packer() end -M.git_worktrees = function() extensions.git_worktree.git_worktrees() end -M.create_git_worktree = function() extensions.git_worktree.create_git_worktree() end -M.snippets = function() extensions.snippets.snippets(layout.dd_large) end -M.media_files = function() extensions.media_files.media_files() end +M.find_files = function() + builtin.find_files(layout.dd_large_noprev) +end +M.spell_suggest = function() + builtin.spell_suggest(layout.dd) +end +M.lines = function() + builtin.current_buffer_fuzzy_find(layout.dd_large_noprev) +end +M.reloader = function() + builtin.reloader(layout.dd_noprev) +end +M.buffers = function() + builtin.buffers(layout.dd_large) +end +M.keymaps = function() + builtin.keymaps(layout.dd_large) +end +M.quickfix = function() + builtin.quickfix(layout.dd_large) +end +M.lsp_code_actions = function() + builtin.lsp_code_actions(layout.dd) +end +M.lsp_document_symbols = function() + builtin.lsp_document_symbols(layout.dd_large) +end +M.lsp_definitions = function() + builtin.lsp_definitions(layout.dd) +end +M.aerial = function() + extensions.aerial.aerial(layout.dd_large) +end +M.packer = function() + extensions.packer.packer() +end +M.git_worktrees = function() + extensions.git_worktree.git_worktrees() +end +M.create_git_worktree = function() + extensions.git_worktree.create_git_worktree() +end +M.snippets = function() + extensions.snippets.snippets(layout.dd_large) +end return setmetatable({}, { __index = function(_, k) diff --git a/lua/tms/ws/init.lua b/lua/tms/ws/init.lua @@ -3,7 +3,7 @@ local M = {} M.medoro = { path = '*/medoro/**', config = function() - vim.keymap.set('n', '<leader>pl', '<cmd>lua require("tms.ws.medoro").lang()<cr>', { buffer = true }) + vim.keymap.set('n', '<leader>al', '<cmd>lua require("tms.ws.medoro").lang()<cr>', { buffer = true }) end, } @@ -14,7 +14,7 @@ M.dart = { local opts = function(desc) return { buffer = true, desc = desc } end - vim.keymap.set('n', '<leader>pn', function() + vim.keymap.set('n', '<leader>an', function() analyze.qf2131() end, opts('Dart Analyze')) end, diff --git a/plugin/diagnostic.lua b/plugin/diagnostic.lua @@ -1,23 +1,38 @@ vim.diagnostic.config({ virtual_text = false, underline = false, float = { border = 'single' }, severity_sort = true }) local d = { - next = function() vim.diagnostic.goto_next({ float = false }) end, - prev = function() vim.diagnostic.goto_prev({ float = false }) end, - open = function() vim.diagnostic.open_float(0) end, - open_cursor = function() vim.diagnostic.open_float(0, { scope = 'cursor' }) end, - loc = function() vim.diagnostic.setloclist() end, - qf = function() vim.diagnostic.setqflist() end, - qf_error = function() vim.diagnostic.setqflist({ severity = vim.diagnostic.severity.ERROR }) end, + next = function() + vim.diagnostic.goto_next({ float = false }) + end, + prev = function() + vim.diagnostic.goto_prev({ float = false }) + end, + open = function() + vim.diagnostic.open_float() + end, + open_cursor = function() + vim.diagnostic.open_float({ scope = 'cursor' }) + end, + ll = function() + vim.diagnostic.setloclist() + end, + ql = function() + vim.diagnostic.setqflist() + end, + ql_error = function() + vim.diagnostic.setqflist({ severity = vim.diagnostic.severity.ERROR }) + end, } -local o = function(desc) return { desc = desc, silent = true } end +local o = function(desc) + return { desc = desc, silent = true } +end -vim.keymap.set('n', '>d', d.next, o('Diagnostic Next')) -vim.keymap.set('n', '>(', d.next, o('Diagnostic Next')) -vim.keymap.set('n', '<d', d.prev, o('Diagnostic Previous')) -vim.keymap.set('n', '<(', d.prev, o('Diagnostic Previous')) -vim.keymap.set('n', 'gs', d.open, o('Diagnostic Open for Line')) -vim.keymap.set('n', 'gS', d.open_cursor, o('Diagnostic Open for Cursor')) -vim.keymap.set('n', 'gll', d.loc, o('Diagnostic to Location List')) -vim.keymap.set('n', 'glq', d.qf, o('Diagnostic to Quickfix List')) -vim.keymap.set('n', 'glQ', d.qf_error, o('Diagnostic of Error to Quickfix List')) +vim.keymap.set('n', 'gww', d.open, o('Diagnostic Open for Line')) +vim.keymap.set('n', 'gw.', d.open, o('Diagnostic Open for Line')) +vim.keymap.set('n', 'gwc', d.open_cursor, o('Diagnostic Open for Cursor')) +vim.keymap.set('n', 'gwl', d.ll, o('Diagnostic to Location List')) +vim.keymap.set('n', 'gwq', d.ql, o('Diagnostic to Quickfix List')) +vim.keymap.set('n', 'gwQ', d.ql_error, o('Diagnostic of Error to Quickfix List')) +vim.keymap.set('n', '<c-l><c-d>', d.next, o('Diagnostic Next')) +vim.keymap.set('n', '<c-h><c-d>', d.prev, o('Diagnostic Previous')) diff --git a/plugin/globals.lua b/plugin/globals.lua @@ -1,10 +1,3 @@ -P = function(v) print(vim.inspect(v)) end - -D = function(...) - local objects = vim.tbl_map(vim.inspect, { ... }) - print(unpack(objects)) -end - R = function(p) package.loaded[p] = nil return require(p) diff --git a/plugin/unimpaired.lua b/plugin/unimpaired.lua @@ -1,32 +1,28 @@ -- remap ] and [ -vim.keymap.set('n', '>q', '<cmd>cnext<cr>') -vim.keymap.set('n', '>!', '<cmd>cnext<cr>') -vim.keymap.set('n', '<!', '<cmd>cprev<cr>') -vim.keymap.set('n', '<q', '<cmd>cprev<cr>') -vim.keymap.set('n', '>Q', '<cmd>clast<cr>') -vim.keymap.set('n', '<Q', '<cmd>cfirst<cr>') -vim.keymap.set('n', '>a', '<cmd>next<cr>') -vim.keymap.set('n', '<a', '<cmd>prev<cr>') -vim.keymap.set('n', '>A', '<cmd>last<cr>') -vim.keymap.set('n', '<A', '<cmd>first<cr>') -vim.keymap.set('n', '>b', '<cmd>bnext<cr>') -vim.keymap.set('n', '<b', '<cmd>bprev<cr>') -vim.keymap.set('n', '>B', '<cmd>blast<cr>') -vim.keymap.set('n', '<B', '<cmd>bfirst<cr>') -vim.keymap.set('n', '>l', '<cmd>lnext<cr>') -vim.keymap.set('n', '>=', '<cmd>lnext<cr>') -vim.keymap.set('n', '<l', '<cmd>lprev<cr>') -vim.keymap.set('n', '<=', '<cmd>lprev<cr>') -vim.keymap.set('n', '>L', '<cmd>llast<cr>') -vim.keymap.set('n', '<L', '<cmd>lfirst<cr>') -vim.keymap.set('n', '>t', '<cmd>tnext<cr>') -vim.keymap.set('n', '<t', '<cmd>tprev<cr>') -vim.keymap.set('n', '>T', '<cmd>tlast<cr>') -vim.keymap.set('n', '<T', '<cmd>tfirst<cr>') -vim.keymap.set('n', '>s', ']s') -vim.keymap.set('n', '<s', '[s') -vim.keymap.set('n', '>S', ']S') -vim.keymap.set('n', '<S', '[S') +vim.keymap.set('n', '<c-l><c-q>', '<cmd>cnext<cr>') +vim.keymap.set('n', '<c-h><c-q>', '<cmd>cprev<cr>') +vim.keymap.set('n', '<c-l>q', '<cmd>clast<cr>') +vim.keymap.set('n', '<c-h>q', '<cmd>cfirst<cr>') +vim.keymap.set('n', '<c-l><c-a>', '<cmd>next<cr>') +vim.keymap.set('n', '<c-h><c-a>', '<cmd>prev<cr>') +vim.keymap.set('n', '<c-l>a', '<cmd>last<cr>') +vim.keymap.set('n', '<c-h>a', '<cmd>first<cr>') +vim.keymap.set('n', '<c-l><c-b>', '<cmd>bnext<cr>') +vim.keymap.set('n', '<c-h><c-b>', '<cmd>bprev<cr>') +vim.keymap.set('n', '<c-l>b', '<cmd>blast<cr>') +vim.keymap.set('n', '<c-h>b', '<cmd>bfirst<cr>') +vim.keymap.set('n', '<c-l><c-l>', '<cmd>lnext<cr>') +vim.keymap.set('n', '<c-h><c-l>', '<cmd>lprev<cr>') +vim.keymap.set('n', '<c-l>l', '<cmd>llast<cr>') +vim.keymap.set('n', '<c-h>l', '<cmd>lfirst<cr>') +vim.keymap.set('n', '<c-l><c-t>', '<cmd>tnext<cr>') +vim.keymap.set('n', '<c-h><c-t>', '<cmd>tprev<cr>') +vim.keymap.set('n', '<c-l>t', '<cmd>tlast<cr>') +vim.keymap.set('n', '<c-h>t', '<cmd>tfirst<cr>') +vim.keymap.set('n', '<c-l><c-s>', ']s') +vim.keymap.set('n', '<c-h><c-s>', '[s') +vim.keymap.set('n', '<c-l>s', ']S') +vim.keymap.set('n', '<c-h>s', '[S') local toggle = function(op, mode) local scope @@ -39,11 +35,23 @@ local toggle = function(op, mode) end local val = scope[op]:get() - assert(type(val) == 'boolean') - scope[op] = not val + if type(val) == 'boolean' then + scope[op] = not val + elseif type(val) == 'number' then + if val == 1 then + scope[op] = 0 + else + scope[op] = 1 + end + end + end -local map_toggle = function(letter, option, mode) vim.keymap.set('n', 'yo' .. letter, function() toggle(option) end) end +local map_toggle = function(letter, option, mode) + vim.keymap.set('n', 'yo' .. letter, function() + toggle(option, mode) + end) +end map_toggle('c', 'cursorline', 'local') map_toggle('u', 'cursorcolumn', 'local') @@ -54,3 +62,4 @@ map_toggle('n', 'number', 'local') map_toggle('r', 'relativenumber', 'local') map_toggle('s', 'spell', 'local') map_toggle('w', 'wrap', 'local') +map_toggle('d', 'cmdheight', 'global')