diff options
Diffstat (limited to '.vim/lua')
| -rw-r--r-- | .vim/lua/_globals.lua (renamed from .vim/lua/globals.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/align.lua (renamed from .vim/lua/align/init.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/dap.lua (renamed from .vim/lua/debugger.lua) | 2 | ||||
| -rw-r--r-- | .vim/lua/internal/exrc.lua (renamed from .vim/lua/exrc.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/hardmode.lua (renamed from .vim/lua/hardmode.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/job.lua (renamed from .vim/lua/job.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/lsp.lua (renamed from .vim/lua/lsp.lua) | 20 | ||||
| -rw-r--r-- | .vim/lua/internal/misc.lua (renamed from .vim/lua/misc.lua) | 48 | ||||
| -rw-r--r-- | .vim/lua/internal/snips.lua (renamed from .vim/lua/snips.lua) | 0 | ||||
| -rw-r--r-- | .vim/lua/internal/spell.lua (renamed from .vim/lua/spell.lua) | 1 | ||||
| -rw-r--r-- | .vim/lua/internal/statusline.lua (renamed from .vim/lua/statusline.lua) | 76 | ||||
| -rw-r--r-- | .vim/lua/plugins.lua | 23 |
12 files changed, 102 insertions, 68 deletions
diff --git a/.vim/lua/globals.lua b/.vim/lua/_globals.lua index 6aef29b..6aef29b 100644 --- a/.vim/lua/globals.lua +++ b/.vim/lua/_globals.lua diff --git a/.vim/lua/align/init.lua b/.vim/lua/internal/align.lua index 5dcf7c0..5dcf7c0 100644 --- a/.vim/lua/align/init.lua +++ b/.vim/lua/internal/align.lua diff --git a/.vim/lua/debugger.lua b/.vim/lua/internal/dap.lua index 1f03434..aa419ea 100644 --- a/.vim/lua/debugger.lua +++ b/.vim/lua/internal/dap.lua @@ -1,7 +1,5 @@ -- vim: fdm=marker -require('telescope').load_extension('dap') - local dap = require('dap') dap.defaults.fallback.terminal_win_cmd = 'belowright 10new' dap.defaults.fallback.terminal_win_cmd = 'belowright 10new' diff --git a/.vim/lua/exrc.lua b/.vim/lua/internal/exrc.lua index 6b7742b..6b7742b 100644 --- a/.vim/lua/exrc.lua +++ b/.vim/lua/internal/exrc.lua diff --git a/.vim/lua/hardmode.lua b/.vim/lua/internal/hardmode.lua index cc71baf..cc71baf 100644 --- a/.vim/lua/hardmode.lua +++ b/.vim/lua/internal/hardmode.lua diff --git a/.vim/lua/job.lua b/.vim/lua/internal/job.lua index f9f7bf3..f9f7bf3 100644 --- a/.vim/lua/job.lua +++ b/.vim/lua/internal/job.lua diff --git a/.vim/lua/lsp.lua b/.vim/lua/internal/lsp.lua index 8d16987..669c2c7 100644 --- a/.vim/lua/lsp.lua +++ b/.vim/lua/internal/lsp.lua @@ -27,15 +27,20 @@ local my_attach = function(client, bufnr) }) lspstatus.on_attach(client) - if client.supports_method('textDocument/symbols') then + if client.supports_method('textDocument/documentSymbol') then require('nvim-navic').attach(client, bufnr) - require('aerial').on_attach(client, bufnr) + -- require('aerial').on_attach(client, bufnr) + -- vim.keymap.set('n', 'g0', vim.lsp.buf.document_symbol, {buffer = bufnr}) + end + if client.supports_method('workspace/symbol') then + vim.keymap.set('n', 'gW' , vim.lsp.buf.workspace_symbol, {buffer = bufnr, desc = 'goto symbol'}) + vim.keymap.set('n', ';s' , require('telescope.builtin').lsp_workspace_symbols, {desc='lsp workspace symbols'}) end - if client.supports_method('textDocument/definition') then vim.keymap.set('n', '<C-]>' , vim.lsp.buf.definition, {buffer = bufnr, desc = 'goto definition'}) vim.keymap.set('n', 'gd' , vim.lsp.buf.definition, {buffer = bufnr, desc = 'goto definition'}) vim.keymap.set('n', 'gR' , vim.lsp.buf.references, {buffer = bufnr, desc = 'goto references'}) + vim.keymap.set('n', ';R' , require('telescope.builtin').lsp_references, {desc='lsp references'}) end if client.supports_method('textDocument/hover') then vim.keymap.set('n', 'K' , vim.lsp.buf.hover, {buffer = bufnr, desc = 'hover'}) @@ -52,7 +57,7 @@ local my_attach = function(client, bufnr) vim.api.nvim_create_autocmd('BufWritePre', { buffer = bufnr, group = group, - callback = function() require('lsp').format(vim.fn.expand('<afile>:p')) end, + callback = function() require('internal.lsp').format(vim.fn.expand('<afile>:p')) end, }) end if client.supports_method('textDocument/typeDefinition') then @@ -64,12 +69,6 @@ local my_attach = function(client, bufnr) if client.supports_method('textDocument/implementation') then vim.keymap.set('n', 'gI' , vim.lsp.buf.implementation, {buffer = bufnr, desc = 'goto implementation'}) end - if client.supports_method('workspace/symbol') then - vim.keymap.set('n', 'gW' , vim.lsp.buf.workspace_symbol, {buffer = bufnr, desc = 'goto symbol'}) - end - -- if client.resolved_capabilities.document_symbol then - -- vim.keymap.set('n', 'g0', vim.lsp.buf.document_symbol, {buffer = bufnr}) - -- end if client.supports_method('textDocument/codeAction') then vim.keymap.set('n', 'ga', vim.lsp.buf.code_action, {buffer = bufnr, desc = 'code action'}) end @@ -181,6 +180,7 @@ local servers = { library = { [vim.env.VIMRUNTIME .. '/lua'] = true, [vim.env.VIMRUNTIME .. '/lua/vim/lsp'] = true, + [vim.fn.stdpath('config') .. '/lua'] = true, } }, telemetry = { diff --git a/.vim/lua/misc.lua b/.vim/lua/internal/misc.lua index 6c642f4..5a2ae21 100644 --- a/.vim/lua/misc.lua +++ b/.vim/lua/internal/misc.lua @@ -93,7 +93,11 @@ function M.sort_lines(_, preview_ns, preview_bufnr) end end -local function get_searchdirs(dirs) +local telescope_builtin = require('telescope.builtin') +local telescope_actions = require('telescope.actions') +local telescope_action_state = require('telescope.actions.state') + +local get_searchdirs = function(dirs) -- skip asking if we're looking at known filetypes local ft = vim.api.nvim_buf_get_option(0, 'filetype') if not dirs and (ft == 'dirbuf' or ft == 'alpha') then @@ -107,20 +111,48 @@ local function get_searchdirs(dirs) return vim.split(vim.fn.expand(dirs), ',') end -function M.live_grep(dirs, opts) +function M.live_grep(dirs, opts, on_choice) opts = opts or {} local search_dirs = get_searchdirs(dirs) opts.search_dirs = search_dirs - opts.prompt_title = 'Grep: '.. vim.inspect(search_dirs) - return require('telescope.builtin').live_grep(opts) + opts.prompt_title = 'Grep: '.. table.concat(search_dirs) + if on_choice then + opts.attach_mappings = function(prompt_bufnr) + telescope_actions.select_default:replace(function() + local selection = telescope_action_state.get_selected_entry() + if selection == nil then return end + telescope_actions.close(prompt_bufnr) + on_choice(selection.path) + end) + return true + end + end + telescope_builtin.live_grep(opts) end -function M.find_files(dirs, opts) +function M.find_files(dirs, opts, on_choice) + if dirs == 'plugins' then dirs = vim.fn.stdpath('data') .. '/site/pack/' end + opts = opts or {} - local search_dirs = get_searchdirs(dirs) + local search_dirs = dirs + if type(dirs) == 'string' then search_dirs = get_searchdirs(dirs) end opts.search_dirs = search_dirs - opts.prompt_title = 'Files: '.. vim.inspect(search_dirs) - return require('telescope.builtin').find_files(opts) + opts.prompt_title = 'Find: '.. table.concat(search_dirs) + if on_choice then + opts.attach_mappings = function(prompt_bufnr) + telescope_actions.select_default:replace(function() + local selection = telescope_action_state.get_selected_entry() + if not selection then + vim.notify('Nothing selected', vim.log.levels.WARN) + return + end + telescope_actions.close(prompt_bufnr) + on_choice(selection.path) + end) + return true + end + end + telescope_builtin.find_files(opts) end diff --git a/.vim/lua/snips.lua b/.vim/lua/internal/snips.lua index 318c9f7..318c9f7 100644 --- a/.vim/lua/snips.lua +++ b/.vim/lua/internal/snips.lua diff --git a/.vim/lua/spell.lua b/.vim/lua/internal/spell.lua index e5cfca1..57cbad2 100644 --- a/.vim/lua/spell.lua +++ b/.vim/lua/internal/spell.lua @@ -1,6 +1,5 @@ vim.opt_local.spell = true -vim.opt.spelllang = {'en_gb', 'de_de'} vim.opt.spellfile = vim.fn['spellfile#WritableSpellDir']() .. '/spellfile.utf-8.add' vim.opt.spellcapcheck = '' vim.opt.spelloptions = {'camel'} diff --git a/.vim/lua/statusline.lua b/.vim/lua/internal/statusline.lua index c0c185d..97f5031 100644 --- a/.vim/lua/statusline.lua +++ b/.vim/lua/internal/statusline.lua @@ -1,12 +1,3 @@ - -local spinner_ok, spinner = pcall(require, 'spinner') -if spinner_ok then - spinner.setup { - spinner = {'⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'}, - interval = 120, -- spinner frame rate in ms - } -end - function _G.statusline() local bufnr = vim.fn.bufnr() or 0 local hi = statusline_color(vim.fn.mode()) @@ -14,13 +5,16 @@ function _G.statusline() local sl = hi -- sl = sl .. statusline_append([[ ⢷]], 'StatusLineIcon', hi) + sl = sl .. statusline_append(statusline_lightbulb(), + 'StatusLineLightbulb', hi) + sl = sl .. statusline_append(statusline_ts(), 'StatusLineTreesitter', hi) sl = sl .. statusline_append(statusline_lsp_diagnostics(bufnr, hi), 'StatusLineDiagnostics', hi) - sl = sl .. statusline_append(vim.trim(require('lsp-status').status()), + sl = sl .. statusline_append(statusline_lspstatus(), 'StatusLineLsp', hi) sl = sl .. statusline_append(statusline_dap(), @@ -31,13 +25,8 @@ function _G.statusline() sl = sl .. statusline_append(statusline_notify(hi), 'StatusLineNotify', hi) - if spinner_ok then - sl = sl .. statusline_append(spinner.status(bufnr), - 'StatusLineJobs', hi) - end - - sl = sl .. statusline_append(require('nvim-lightbulb').get_status_text(), - 'StatusLineLightbulb', hi) + sl = sl .. statusline_append(statusline_spinner(bufnr), + 'StatusLineJobs', hi) sl = sl .. statusline_append([[ %l:%v --%p%%-- %y]], hi, hi) @@ -58,8 +47,6 @@ function _G.statusline_color(mode) -- return '%{g:actual_curwin==win_getid()?'.. hi ..':%#StatusLineNC#}' return hi end - --- statusline_append -- does item highlighting and conditionnal spacing function _G.statusline_append(element, hi, default_hi, opts) if not element or element == '' then return '' end @@ -71,6 +58,18 @@ function _G.statusline_append(element, hi, default_hi, opts) if opts.append_space then el = el .. ' ' end return el end +function _G.statusline_combine_hi(outer_name, inner_name) + local outer = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(outer_name), true) + local inner = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(inner_name), true) + local hi = 'auto' .. outer_name .. inner_name + if pcall(vim.api.nvim_get_hl_by_name, hi, true) then return hi end + local gui + gui = inner.bold and 'bold' + gui = inner.italic and 'italic' + gui = inner.underline and 'underline' + vim.api.nvim_set_hl(0, hi, {bg = outer.background, fg = inner.foreground, gui = gui}) + return hi +end function _G.statusline_lsp_diagnostics(bufnr, default_hi) local error_num = vim.diagnostic.get(bufnr, {severity=vim.diagnostic.severity.ERROR}) @@ -87,21 +86,10 @@ function _G.statusline_lsp_diagnostics(bufnr, default_hi) end return vim.trim(s) end - -function _G.statusline_combine_hi(outer_name, inner_name) - local outer = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(outer_name), true) - local inner = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(inner_name), true) - local hi = 'auto' .. outer_name .. inner_name - if pcall(vim.api.nvim_get_hl_by_name, hi, true) then return hi end - local gui - gui = inner.bold and 'bold' - gui = inner.italic and 'italic' - gui = inner.underline and 'underline' - vim.api.nvim_set_hl(0, hi, {bg = outer.background, fg = inner.foreground, gui = gui}) - return hi -end function _G.statusline_ts() - local data = require('nvim-navic').get_data() + local navic = package.loaded['nvim-navic'] + if not navic then return '' end + local data = navic.get_data() if not data then return '' end local s = {} for i = 1, #data do @@ -109,10 +97,24 @@ function _G.statusline_ts() end return table.concat(s, ' > ') end +function _G.statusline_lspstatus() + local lst = package.loaded['lsp-status'] + if not lst then return '' end + return vim.trim(lst.status()) +end +function _G.statusline_lightbulb() + local lb = package.loaded['nvim-lightbulb'] + if not lb then return '' end + return lb.get_status_text() +end +function _G.statusline_spinner(bufnr) + local sp = package.loaded.spinner + if not sp then return '' end + return sp.status(bufnr) +end function _G.statusline_dap() - local dap_ok, dap = pcall(require, 'dap') - if not dap_ok then return '' end - + local dap = package.loaded.dap + if not dap then return '' end local s = dap.status() if s == '' then return s end return '[DAP: ' .. s .. ']' @@ -186,7 +188,7 @@ local notify = function(m, l, o) end table.insert(args, 'nvim') table.insert(args, display) - require('job').jobstart { command = 'notify-send', args = args } + require('internal.job').jobstart { command = 'notify-send', args = args } end end diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua index de7a984..e8630f2 100644 --- a/.vim/lua/plugins.lua +++ b/.vim/lua/plugins.lua @@ -349,7 +349,8 @@ require('packer').startup({function() 'stevearc/aerial.nvim', }, config = function() - require('lsp').setup() + require('telescope').load_extension('lsp_handlers') + require('internal.lsp').setup() end} -- }}} use {'nvim-lua/lsp-status.nvim', -- {{{ @@ -382,7 +383,7 @@ require('packer').startup({function() 'Constant', 'Variable', }, - icons = require('lsp').symbols, + icons = require('internal.lsp').symbols, close_automatic_events = {'switch_buffer'}, open_automatic = function(bufnr) return vim.api.nvim_buf_line_count(bufnr) > 80 @@ -399,7 +400,7 @@ require('packer').startup({function() config = function() local navic = require('nvim-navic') navic.setup { - icons = require('lsp').symbols, + icons = require('internal.lsp').symbols, } end} -- }}} @@ -445,14 +446,15 @@ require('packer').startup({function() -- nls.builtins.formatting.rustfmt, -- nls.builtins.formatting.stylua, }, - on_attach = require('lsp').my_attach, + on_attach = require('internal.lsp').my_attach, } end} -- }}} use {'mfussenegger/nvim-dap', module = {'dap'}, -- {{{ requires = {'nvim-telescope/telescope-dap.nvim'}, config = function() - require('debugger') + require('telescope').load_extension('dap') + require('internal.dap') end} -- }}} use {'hrsh7th/nvim-cmp', -- {{{ @@ -616,7 +618,7 @@ require('packer').startup({function() path = '░ path', buffer = '░ buf', } - item.kind = package.loaded.lsp.symbols[item.kind] or '' + item.kind = require('internal.lsp').symbols[item.kind] or '' item.menu = menus[entry.source.name] return item end, @@ -651,7 +653,7 @@ require('packer').startup({function() use {'L3MON4D3/LuaSnip', -- {{{ config = function() - require('snips') + require('internal.snips') end} -- }}} use {'nvim-telescope/telescope.nvim', --- {{{ @@ -898,7 +900,7 @@ require('packer').startup({function() use {'mickael-menu/zk-nvim', module = {'zk', 'telescope._extensions.zk'}, -- {{{ config = function() - local lsp = require('lsp') + local lsp = require('internal.lsp') require('zk').setup { picker = 'telescope', lsp = { @@ -1154,8 +1156,8 @@ require('packer').startup({function() {type = 'padding', val = 1}, {type = 'group', val = { -- buttons {{{ button('e', ' new', [[<cmd>ene <bar> startinsert<cr>]]), - button('r', ' live grep', [[<cmd>lua require('misc').live_grep()<cr>]]), - button('f', ' find files', [[<cmd>lua require('misc').find_files()<cr>]]), + button('r', ' live grep', [[<cmd>lua require('internal.misc').live_grep()<cr>]]), + button('f', ' find files', [[<cmd>lua require('internal.misc').find_files()<cr>]]), button('m', ' mru', [[<cmd>lua require('telescope.builtin').oldfiles()<cr>]]), -- button('o', ' orgmode', [[<cmd>lua require('packer').loader('orgmode.nvim'); require('orgmode').action('agenda.prompt')<cr>]]), button('T', ' todos', [[<cmd>lua require('telescope._extensions.todo-comments').exports.todo {cwd=vim.env.ZK_NOTEBOOK_DIR}<cr>]]), @@ -1269,3 +1271,4 @@ config = { if vim.fn.empty(vim.fn.glob(compilepath)) > 0 then require('packer').sync() end + |