summary refs log tree commit diff
path: root/.vim/lua
diff options
context:
space:
mode:
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.lua23
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
+