summary refs log tree commit diff
path: root/.vim/lua/internal
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2025-04-30 13:14:22 +0200
committerRobert Günzler <r@gnzler.io>2025-04-30 13:14:22 +0200
commit6a1810f4dfe4ac22dfbaf2b98fb7618fd76eb761 (patch)
treed9cc1046e3305476e2eea284fbdafde049cf3e10 /.vim/lua/internal
parent59bdb9bc3f7b06b886a24def842f62f350f1411b (diff)
vim: misc updates
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
-rw-r--r--.vim/lua/internal/plugins/aerial.lua3
-rw-r--r--.vim/lua/internal/plugins/gentoo.lua6
-rw-r--r--.vim/lua/internal/plugins/git.lua7
-rw-r--r--.vim/lua/internal/plugins/icons.lua1
-rw-r--r--.vim/lua/internal/plugins/lsp.lua30
l---------.vim/lua/internal/plugins/markdown.lua1
-rw-r--r--.vim/lua/internal/plugins/mini.lua37
-rw-r--r--.vim/lua/internal/plugins/todo.lua6
-rw-r--r--.vim/lua/internal/plugins/whichkey.lua1
-rw-r--r--.vim/lua/internal/plugins/writing.lua142
-rw-r--r--.vim/lua/internal/plugins/zk.lua27
-rw-r--r--.vim/lua/internal/zk.lua73
12 files changed, 202 insertions, 132 deletions
diff --git a/.vim/lua/internal/plugins/aerial.lua b/.vim/lua/internal/plugins/aerial.lua
index a5fb4b3..0094e17 100644
--- a/.vim/lua/internal/plugins/aerial.lua
+++ b/.vim/lua/internal/plugins/aerial.lua
@@ -1,13 +1,14 @@
 return {
   {
     'stevearc/aerial.nvim',
-    opts = {},
     dependencies = {
       'nvim-treesitter/nvim-treesitter',
       'echasnovski/mini.icons',
     },
+    opts = {},
     keys = {
       { '<leader>b', '<cmd>AerialToggle<cr>' },
+      { '<c-,>', '<cmd>AerialToggle<cr>' },
     },
   },
 }
diff --git a/.vim/lua/internal/plugins/gentoo.lua b/.vim/lua/internal/plugins/gentoo.lua
index 142374c..2fc8684 100644
--- a/.vim/lua/internal/plugins/gentoo.lua
+++ b/.vim/lua/internal/plugins/gentoo.lua
@@ -1,11 +1,11 @@
 return {
   {
     'gentoo/gentoo-syntax',
-    lazy = false,
-    config = function()
+    ft = { 'ebuild' },
+    init = function()
       vim.api.nvim_create_autocmd('LspAttach', {
         callback = function(args)
-          if vim.bo.filetype == 'ebuild' then
+          if vim.opt.filetype == 'ebuild' then
             vim.lsp.stop_client(vim.lsp.get_clients({ bufnr = args.bufnr }))
           end
         end,
diff --git a/.vim/lua/internal/plugins/git.lua b/.vim/lua/internal/plugins/git.lua
index e436660..056cc14 100644
--- a/.vim/lua/internal/plugins/git.lua
+++ b/.vim/lua/internal/plugins/git.lua
@@ -94,6 +94,13 @@ return {
       vim.api.nvim_set_hl(0, 'GitGraphBranchName', { fg = 'NvimLightYellow' })
       vim.api.nvim_set_hl(0, 'GitGraphBranchTag', { fg = 'NvimLightYellow' })
       vim.api.nvim_set_hl(0, 'GitGraphBranchMsg', { link = 'Normal' })
+      -- vim.api.nvim_create_autocmd('FileType', {
+      --   pattern = { 'gitgraph' },
+      --   callback = function()
+      --     vim.keymap.set('n', 'q', '<cmd>bdel!<cr>', { silent = true, buffer = 0 })
+      --   end,
+      --   group = vim.api.nvim_create_augroup('GitGraph'),
+      -- })
     end),
     keys = {
       {
diff --git a/.vim/lua/internal/plugins/icons.lua b/.vim/lua/internal/plugins/icons.lua
index 3d503dc..9a597ab 100644
--- a/.vim/lua/internal/plugins/icons.lua
+++ b/.vim/lua/internal/plugins/icons.lua
@@ -3,6 +3,7 @@ return {
     'echasnovski/mini.icons',
     version = false,
     events = { 'VeryLazy' },
+    -- opts = {},
     config = function(_, opts)
       require('mini.icons').setup(opts)
       ---@diagnostic disable-next-line: undefined-global
diff --git a/.vim/lua/internal/plugins/lsp.lua b/.vim/lua/internal/plugins/lsp.lua
index e2a5866..7175a89 100644
--- a/.vim/lua/internal/plugins/lsp.lua
+++ b/.vim/lua/internal/plugins/lsp.lua
@@ -112,6 +112,9 @@ return {
         rust_analyzer = {
           settings = {
             ['rust-analyzer'] = {
+              diagnostics = {
+                enable = true,
+              },
               checkOnSave = {
                 command = { 'cargo', 'clippy' },
               },
@@ -129,8 +132,8 @@ return {
         zls = {
           cmd = {
             'zls',
-            '--enable-debug-log',
-            '--enable-message-tracing',
+            '--log-level',
+            'warn',
           },
         },
         bashls = {},
@@ -221,7 +224,7 @@ return {
   {
     'nvimtools/none-ls.nvim',
     dependencies = { 'nvim-lua/plenary.nvim' },
-    event = { 'VeryLazy' },
+    event = 'VeryLazy',
     config = function()
       local nls = require('null-ls')
       nls.setup({
@@ -237,7 +240,7 @@ return {
           -- nls.builtins.diagnostics.cppcheck,
           -- nls.builtins.diagnostics.gccdiag,
           nls.builtins.diagnostics.golangci_lint,
-          nls.builtins.diagnostics.hadolint,
+          -- nls.builtins.diagnostics.hadolint,
           -- nls.builtins.diagnostics.pylint,
           -- nls.builtins.diagnostics.selene,
           -- nls.builtins.diagnostics.semgrep,
@@ -252,11 +255,13 @@ return {
 
   -- diagnostics
   {
+    enabled = true,
     'rachartier/tiny-inline-diagnostic.nvim',
-    event = 'VeryLazy',
+    lazy = false,
     opts = {
+      preset = 'nonerdfont',
       signs = {
-        left = ' ',
+        left = '',
         right = '',
         diag = '',
         arrow = '◂   ',
@@ -264,13 +269,20 @@ return {
       },
       options = {
         throttle = 0,
-        show_source = true,
+        show_source = {
+          enabled = true,
+        },
+        multilines = {
+          enabled = false,
+          always_show = false,
+        },
+        -- break_line = { enabled = true },
+        show_all_diags_on_cursorline = true,
       },
     },
     config = function(_, opts)
-      vim.diagnostic.config({ virtual_text = false })
       require('tiny-inline-diagnostic').setup(opts)
-      if vim.opt.background:get() == 'light' then
+      if vim.o.background == 'light' then
         require('tiny-inline-diagnostic').change({}, { mixing_color = '#aaaaaa' })
       end
     end,
diff --git a/.vim/lua/internal/plugins/markdown.lua b/.vim/lua/internal/plugins/markdown.lua
new file mode 120000
index 0000000..5b578d5
--- /dev/null
+++ b/.vim/lua/internal/plugins/markdown.lua
@@ -0,0 +1 @@
+writing.lua
\ No newline at end of file
diff --git a/.vim/lua/internal/plugins/mini.lua b/.vim/lua/internal/plugins/mini.lua
index 1886766..fb4c9a6 100644
--- a/.vim/lua/internal/plugins/mini.lua
+++ b/.vim/lua/internal/plugins/mini.lua
@@ -2,34 +2,25 @@ return {
   {
     'echasnovski/mini.align',
     version = false,
+    lazy = false,
+    opts = {},
+  },
+  {
+    'echasnovski/mini.ai',
+    version = false,
+    lazy = false,
     opts = {},
-    keys = {
-      { mode = 'n', 'ga' },
-      { mode = 'n', 'gA' },
-      { mode = 'v', 'ga' },
-      { mode = 'v', 'gA' },
-      {
-        mode = 'v',
-        '<cr>',
-        function()
-          vim.cmd([[silent! echohl ErrorMsg | echo "use ga/gA" | echohl None]])
-        end,
-      },
-    },
   },
   {
     'echasnovski/mini.surround',
+    version = false,
     lazy = false,
+    opts = {},
+  },
+  {
+    'echasnovski/mini.operators',
     version = false,
-    opts = {
-      mappings = {
-        delete = 'ds',
-        replace = 'cs',
-      },
-    },
-    keys = {
-      { mode = 'n', 'cs' },
-      { mode = 'n', 'ds' },
-    },
+    lazy = false,
+    opts = {},
   },
 }
diff --git a/.vim/lua/internal/plugins/todo.lua b/.vim/lua/internal/plugins/todo.lua
index 0c0ce0f..d99458e 100644
--- a/.vim/lua/internal/plugins/todo.lua
+++ b/.vim/lua/internal/plugins/todo.lua
@@ -17,10 +17,12 @@ return {
       },
       highlight = {
         keyword = 'bg',
-        pattern = [[<(KEYWORDS)(|\(.+\))(:|)]],
+        -- pattern = [[<(KEYWORDS)(|\(.+\))(:|)]],
+        pattern = [[<(KEYWORDS)(|\(.+\)):]],
       },
       search = {
-        pattern = [[\b(KEYWORDS)(|\(.+\))(:|)]],
+        -- pattern = [[\b(KEYWORDS)(|\(.+\))(:|)]],
+        pattern = [[\b(KEYWORDS)(|\(.+\)):]],
       },
     },
     keys = {
diff --git a/.vim/lua/internal/plugins/whichkey.lua b/.vim/lua/internal/plugins/whichkey.lua
index 3c9e802..dc21eda 100644
--- a/.vim/lua/internal/plugins/whichkey.lua
+++ b/.vim/lua/internal/plugins/whichkey.lua
@@ -3,6 +3,7 @@ return {
     'folke/which-key.nvim',
     event = 'VeryLazy',
     opts = {
+      sort = { 'alphanum' },
       icons = { separator = '→ ', group = '🞱 ' },
     },
   },
diff --git a/.vim/lua/internal/plugins/writing.lua b/.vim/lua/internal/plugins/writing.lua
index 4792697..8f207b7 100644
--- a/.vim/lua/internal/plugins/writing.lua
+++ b/.vim/lua/internal/plugins/writing.lua
@@ -1,76 +1,21 @@
 return {
   {
-    'folke/zen-mode.nvim',
-    cmd = { 'ZenMode' },
-    opts = {
-      window = {
-        -- width = 0.9,
-        -- height = 0.9,
-        options = {
-          cursorline = true,
-        },
-      },
-      plugins = {
-        options = {
-          number = false,
-          ruler = false,
-          showcmd = false,
-        },
-        gitsigns = { enabled = false },
-        twilight = { enabled = true },
-      },
-      on_open = function()
-        vim.diagnostic.enable(false)
-      end,
-      on_close = function()
-        vim.diagnostic.enable(true)
-      end,
-    },
-    -- init = function()
-    --   vim.api.nvim_create_autocmd({ 'BufWinEnter', 'BufWinLeave' }, {
-    --     pattern = { '*.md' },
-    --     command = [[ZenMode]],
-    --   })
-    -- end,
-    dependencies = {
-      {
-        'folke/twilight.nvim',
-        opts = {
-          context = 24,
-          dimming = {
-            alpha = 0.5,
-            color = { 'Normal', '#ffffff' },
-          },
-        },
-      },
-    },
-  },
-  {
+    -- DESC: handy markdown commands
     'tadmccorkle/markdown.nvim',
     ft = { 'markdown' },
     opts = {
       mappings = false,
+      on_attach = function(buf)
+        vim.keymap.set('n', 'nl', '<cmd>MDListItemBelow<cr>', { buffer = buf })
+        vim.keymap.set('n', 'nl', '<cmd>MDListItemAbove<cr>', { buffer = buf })
+        vim.keymap.set('n', '<m-x>', '<cmd>MDTaskToggle<cr>', { buffer = buf })
+        vim.keymap.set('x', '<m-x>', '<cmd>MDTaskToggle<cr>', { buffer = buf })
+        vim.keymap.set('x', '<m-l>', '<esc>gv<plug>(markdown_add_link_visual)', { buffer = buf })
+      end,
     },
-    config = function(_, opts)
-      require('markdown').setup(opts)
-
-      local set = vim.keymap.set
-      set('n', '[[', [[<Plug>(markdown_go_prev_heading)]], { desc = 'md: previous heading' })
-      set('n', ']]', [[<Plug>(markdown_go_next_heading)]], { desc = 'md: next heading' })
-      set('n', '<s-tab>', [[:MDTaskToggle<cr>]], { desc = 'md: toggle task' })
-      set('x', '<c-l>', [[<esc>gv<Plug>(markdown_add_link_visual)]], { desc = 'md: make link' })
-      local toggle_emph = function(key)
-        return [[<esc>gv<cmd>lua require('markdown.inline').toggle_emphasis_visual(']]
-          .. key
-          .. [[')<cr>]]
-      end
-      set('x', '<c-b>', toggle_emph('b'), { desc = 'md: make bold' })
-      set('x', '<c-i>', toggle_emph('i'), { desc = 'md: make italic' })
-      set('x', '<c-s>', toggle_emph('s'), { desc = 'md: make strikethrough' })
-      set('x', '<c-c>', toggle_emph('c'), { desc = 'md: make code' })
-    end,
   },
   {
+    -- DESC: pretty print markdown
     'MeanderingProgrammer/markdown.nvim',
     name = 'render-markdown', -- needed if used together with markdown.nvim above
     main = 'render-markdown',
@@ -80,15 +25,18 @@ return {
     },
     ft = { 'markdown' },
     opts = {
+      completions = { blink = { enabled = true } },
+      sign = { enabled = false },
       heading = {
+        width = 'block',
         -- icons = { '❶  ', '❷  ', '❸  ', '❹  ', '❺  ', '❻  ' },
         icons = {
-          ' ',
-          ' ',
-          ' ',
-          ' ',
-          ' ',
-          ' ',
+          '▒ ',
+          '▒▒ ',
+          '▒▒▒ ',
+          '▒▒▒▒ ',
+          '▒▒▒▒▒ ',
+          '▒▒▒▒▒▒ ',
         },
         signs = { 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ' },
       },
@@ -104,8 +52,8 @@ return {
       },
     },
     init = vim.schedule_wrap(function()
-      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = 'NvimDarkBlue' })
-      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Fg', { fg = 'NvimLightBlue' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = 'NvimDarkCyan' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH1Fg', { fg = 'NvimLightCyan' })
 
       vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = 'NvimDarkMagenta' })
       vim.api.nvim_set_hl(0, 'RenderMarkdownH2Fg', { fg = 'NvimLightMagenta' })
@@ -113,11 +61,57 @@ return {
       vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = 'NvimDarkYellow' })
       vim.api.nvim_set_hl(0, 'RenderMarkdownH3Fg', { fg = 'NvimLightYellow' })
 
-      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = 'NvimDarkCyan' })
-      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Fg', { fg = 'NvimLightCyan' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = 'NvimDarkBlue' })
+      vim.api.nvim_set_hl(0, 'RenderMarkdownH4Fg', { fg = 'NvimLightBlue' })
 
       vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = 'NvimDarkRed' })
       vim.api.nvim_set_hl(0, 'RenderMarkdownH6Fg', { fg = 'NvimLightRed' })
+
+      vim.api.nvim_set_hl(0, '@markup.bold', { link = 'markdownBold' })
+      vim.api.nvim_set_hl(0, '@markup.italic', { link = 'markdownItalic' })
     end),
   },
+  {
+    'folke/zen-mode.nvim',
+    cmd = { 'ZenMode' },
+    opts = {
+      window = {
+        height = 1,
+        options = {
+          number = false,
+          cursorline = false,
+        },
+      },
+      plugins = {
+        options = {
+          ruler = false,
+          showcmd = false,
+          laststatus = 0,
+        },
+        gitsigns = { enabled = false },
+        twilight = { enabled = true },
+      },
+      on_open = function()
+        vim.diagnostic.enable(false)
+        require('render-markdown').buf_disable()
+      end,
+      on_close = function()
+        vim.diagnostic.enable(true)
+        require('render-markdown').buf_enable()
+      end,
+    },
+    dependencies = {
+      {
+        'folke/twilight.nvim',
+        cmd = { 'Twilight' },
+        opts = {
+          context = 24,
+          dimming = {
+            alpha = 0.3,
+            color = { 'Normal', '#ffffff' },
+          },
+        },
+      },
+    },
+  },
 }
diff --git a/.vim/lua/internal/plugins/zk.lua b/.vim/lua/internal/plugins/zk.lua
index 76cbcb3..da108b0 100644
--- a/.vim/lua/internal/plugins/zk.lua
+++ b/.vim/lua/internal/plugins/zk.lua
@@ -4,32 +4,19 @@ return {
     'zk-org/zk-nvim',
     main = 'zk',
     opts = {
-      picker = 'telescope',
+      picker = 'select',
     },
     keys = {
       -- these will work everywhere
-      { ';zc', ':ZkNew ' },
-      { ';zz', '<cmd>ZkNotes {sort={"modified"}}<cr>' },
-      { ';zl', '<cmd>ZkLinks<cr>' },
-      { ';zb', '<cmd>ZkBacklinks<cr>' },
-      { ';zt', '<cmd>ZkTags<cr>' },
+      { ';zc', ':ZkNew ', desc = 'zk: new note' },
+      { ';zz', '<cmd>ZkNotes {sort={"modified"}}<cr>', desc = 'zk: list notes' },
+      { ';zl', '<cmd>ZkLinks<cr>', desc = 'zk: list links' },
+      { ';zb', '<cmd>ZkBacklinks<cr>', desc = 'zk: list backlinks' },
+      { ';zt', '<cmd>ZkTags<cr>', desc = 'zk: list tags' },
       -- { ';zj', '<cmd>ZkNotes { dir = "500_journals" }<cr>' },
     },
     init = function()
-      if not vim.env.ZK_NOTEBOOK_DIR then
-        return
-      end
-      vim.api.nvim_create_autocmd({ 'BufEnter' }, {
-        pattern = vim.env.ZK_NOTEBOOK_DIR .. '/*',
-        callback = function()
-          local o = { remap = true, silent = false, buffer = true }
-          -- these will only work in a zettel
-          vim.keymap.set('n', '-', ':call feedkeys(";zz")<cr>', o)
-          vim.keymap.set('n', '<cr>', '<cmd>lua vim.lsp.buf.definition()<cr>', o)
-        end,
-        group = vim.api.nvim_create_augroup('zk-binds', { clear = true }),
-        once = true,
-      })
+      require('internal.zk')
     end,
   },
 }
diff --git a/.vim/lua/internal/zk.lua b/.vim/lua/internal/zk.lua
new file mode 100644
index 0000000..4631e13
--- /dev/null
+++ b/.vim/lua/internal/zk.lua
@@ -0,0 +1,73 @@
+if not vim.env.ZK_NOTEBOOK_DIR then
+  vim.notify('Missing ZK_NOTEBOOK_DIR!', vim.log.levels.WARN)
+  return
+end
+
+local api = require('zk.api')
+local util = require('zk.util')
+
+local function insert_new_note()
+  -- TODO: catch error an delete note
+  api.new(nil, nil, function(err1, res1)
+    if not res1 then
+      error(err1)
+    end
+
+    -- update index to include the new note
+    api.index(nil, nil, nil)
+
+    local path = res1.path
+    local filename = vim.fs.basename(path)
+    local location = util.get_lsp_location_from_caret()
+
+    api.link(filename, location, nil, {}, function(err2, res2)
+      if not res2 then
+        error(err2)
+      end
+
+      -- open split
+      local buf = vim.api.nvim_create_buf(true, false)
+      vim.api.nvim_buf_set_name(buf, filename)
+      vim.api.nvim_buf_call(buf, function()
+        vim.cmd.edit(path)
+      end)
+      local win = vim.api.nvim_open_win(buf, false, {
+        split = 'below',
+        win = 0,
+      })
+      -- move to split
+      vim.api.nvim_set_current_win(win)
+      vim.api.nvim_win_set_cursor(win, { -1, 0 })
+    end)
+  end)
+end
+
+local function on_attach()
+  if not vim.env.ZK_NOTEBOOK_DIR then
+    vim.notify('Missing ZK_NOTEBOOK_DIR!', vim.log.levels.WARN)
+    return
+  end
+
+  -- enable virtual_text diagnostics to show link titles
+  vim.diagnostic.config({ virtual_text = true })
+
+  local opts = { remap = true, silent = false, buffer = true }
+
+  -- -- list zettelkasten
+  -- vim.keymap.set('n', '-', ':call feedkeys(";zz")<cr>', opts)
+
+  -- follow links
+  -- TODO: should this also work on outgoing links?
+  vim.keymap.set('n', '<cr>', '<cmd>lua vim.lsp.buf.definition()<cr>', opts)
+
+  -- insert ref to new note and open note in split
+  vim.keymap.set({ 'n', 'i' }, ';zi', insert_new_note, opts)
+end
+
+-- setup binds to run when entering zettel buffers
+vim.api.nvim_create_autocmd({ 'BufEnter' }, {
+  pattern = vim.env.ZK_NOTEBOOK_DIR .. '/*.md',
+  callback = on_attach,
+  group = vim.api.nvim_create_augroup('zk-on-attach', { clear = true }),
+  once = true,
+})