diff options
| author | Robert Günzler <r@gnzler.io> | 2025-04-30 13:14:22 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2025-04-30 13:14:22 +0200 |
| commit | 6a1810f4dfe4ac22dfbaf2b98fb7618fd76eb761 (patch) | |
| tree | d9cc1046e3305476e2eea284fbdafde049cf3e10 /.vim/lua/internal | |
| parent | 59bdb9bc3f7b06b886a24def842f62f350f1411b (diff) | |
vim: misc updates
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | .vim/lua/internal/plugins/aerial.lua | 3 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/gentoo.lua | 6 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/git.lua | 7 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/icons.lua | 1 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/lsp.lua | 30 | ||||
| l--------- | .vim/lua/internal/plugins/markdown.lua | 1 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/mini.lua | 37 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/todo.lua | 6 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/whichkey.lua | 1 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/writing.lua | 142 | ||||
| -rw-r--r-- | .vim/lua/internal/plugins/zk.lua | 27 | ||||
| -rw-r--r-- | .vim/lua/internal/zk.lua | 73 |
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, +}) |