summary refs log tree commit diff
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/after/ftplugin/typst.lua2
-rw-r--r--.config/nvim/after/lsp/tinymist.lua5
-rw-r--r--.config/nvim/lazy-lock.json38
-rw-r--r--.config/nvim/lua/config/diagnostics.lua13
-rw-r--r--.config/nvim/lua/config/filetypes.lua3
-rw-r--r--.config/nvim/lua/config/keymaps.lua9
-rw-r--r--.config/nvim/lua/config/lsp.lua36
-rw-r--r--.config/nvim/lua/plugins/colorizer.lua14
-rw-r--r--.config/nvim/lua/plugins/gentoo.lua25
-rw-r--r--.config/nvim/lua/plugins/git.lua1
-rw-r--r--.config/nvim/lua/plugins/lsp.lua25
-rw-r--r--.config/nvim/lua/plugins/mini.lua2
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua65
-rw-r--r--.config/nvim/lua/plugins/whichkey.lua3
14 files changed, 126 insertions, 115 deletions
diff --git a/.config/nvim/after/ftplugin/typst.lua b/.config/nvim/after/ftplugin/typst.lua
index e444bd5..a201c00 100644
--- a/.config/nvim/after/ftplugin/typst.lua
+++ b/.config/nvim/after/ftplugin/typst.lua
@@ -1,6 +1,6 @@
 vim.api.nvim_buf_create_user_command(0, 'OpenPdf', function()
   local path = vim.api.nvim_buf_get_name(0)
-  vim.system({ 'xdg-open', path:gsub('%.typ$', '.pdf') })
+  vim.system({ 'gio', 'open', path:gsub('%.typ$', '.pdf') })
 end, { desc = 'typst: open pdf' })
 
 vim.keymap.set('n', '<leader>o', '<cmd>OpenPdf<cr>', { desc = 'typst: open pdf', buffer = 0 })
diff --git a/.config/nvim/after/lsp/tinymist.lua b/.config/nvim/after/lsp/tinymist.lua
index 77f0c66..d832f57 100644
--- a/.config/nvim/after/lsp/tinymist.lua
+++ b/.config/nvim/after/lsp/tinymist.lua
@@ -1,7 +1,8 @@
 return {
   settings = {
     exportPdf = "onSave",
-    -- semanticTokens = "disabled",
-    formatterMode = "typstyle",
+    lint = {
+      enabled = true,
+    },
   }
 }
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 8ee25fe..16e407a 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,30 +1,32 @@
 {
-  "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
-  "blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
+  "LuaSnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
+  "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
   "calcium.nvim": { "branch": "main", "commit": "7a7d3740083fa5669e1a0f25d133705624a23f0d" },
   "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
-  "fzf-lua": { "branch": "main", "commit": "fb8c50ba62a0daa433b7ac2b78834f318322b879" },
+  "fzf-lua": { "branch": "main", "commit": "9f0432fdd7825ab163520045831a40b6df82ea28" },
   "gentoo-syntax": { "branch": "master", "commit": "1b3a81ec62e5c843245dc431be0fe072add7eca8" },
   "git-dev.nvim": { "branch": "master", "commit": "90c1395ca37a38228e287d0a843835a5a39ce553" },
   "gitgraph.nvim": { "branch": "main", "commit": "c16daa7d7dd597caf9085644c009cfa80b75db8e" },
-  "gitlinker.nvim": { "branch": "master", "commit": "bbe2a1254fc8fce21f3bbf9a020266a1c49799f7" },
-  "gitsigns.nvim": { "branch": "main", "commit": "31217271a7314c343606acb4072a94a039a19fb5" },
+  "gitlinker.nvim": { "branch": "master", "commit": "d7adb5e4ba5bab4fd443a3f4c46af3f4c864685d" },
+  "gitsigns.nvim": { "branch": "main", "commit": "0d797daee85366bc242580e352a4f62d67557b84" },
   "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
+  "haunt.nvim": { "branch": "main", "commit": "666d83868bac8b38f1dc765d9da6eca4d92c826f" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
+  "koda.nvim": { "branch": "main", "commit": "a560a332ccc1eb2caacb280a390213bb9f37b3cb" },
   "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
   "markdown.nvim": { "branch": "master", "commit": "093be911d90de03877f3009de36081c1a6242d51" },
-  "mini.ai": { "branch": "main", "commit": "9eae720f2b20f6ad28cbfa0ddc524e10dc2c3201" },
-  "mini.align": { "branch": "main", "commit": "6d8a6ca3a0fd313938374abccb50cad026229db3" },
-  "mini.icons": { "branch": "main", "commit": "efc85e42262cd0c9e1fdbf806c25cb0be6de115c" },
-  "mini.operators": { "branch": "main", "commit": "c68010bb5498d418e056704710f71cd8d6fa227b" },
-  "mini.surround": { "branch": "main", "commit": "d648a5601e1c48f175b07d10eba141da338a0a2a" },
-  "nvim-colorizer.lua": { "branch": "master", "commit": "338409dd8a6ed74767bad3eb5269f1b903ffb3cf" },
-  "nvim-lspconfig": { "branch": "master", "commit": "5bfcc89fd155b4ffc02d18ab3b7d19c2d4e246a7" },
-  "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
-  "nvim-treesitter-refactor": { "branch": "master", "commit": "9cc0d22becf72e18808208cd0ce85032a2b19c6f" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
-  "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" },
+  "mini.ai": { "branch": "main", "commit": "43eb2074843950a3a25aae56a5f41362ec043bfa" },
+  "mini.align": { "branch": "main", "commit": "6f3c69cd57134ad8fbf1e85dcdc90cb37a8c75c8" },
+  "mini.icons": { "branch": "main", "commit": "7fdae2443a0e2910015ca39ad74b50524ee682d3" },
+  "mini.operators": { "branch": "main", "commit": "fccb5e3ef0cc319b217ed9c7db1a4672dd6b766c" },
+  "mini.surround": { "branch": "main", "commit": "2715e04bea3ec9244f15b421dc5b18c0fe326210" },
+  "none-ls-shellcheck.nvim": { "branch": "main", "commit": "0f84461241e76e376a95fb7391deac82dc3efdbf" },
+  "none-ls.nvim": { "branch": "main", "commit": "7f9301e416533b5d74e2fb3b1ce5059eeaed748b" },
+  "nvim-colorizer.lua": { "branch": "master", "commit": "c8c2c19436d33165ec34fa90c975bc0a739fe3fb" },
+  "nvim-lspconfig": { "branch": "master", "commit": "0203a9608d63eda57679b01e69f33a7b4c34b0d1" },
+  "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
+  "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
   "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
-  "render-markdown": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
+  "render-markdown": { "branch": "main", "commit": "4ae2f2e8e8c66d070f33cfb57cb6f867e3baf5d9" },
   "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
 }
diff --git a/.config/nvim/lua/config/diagnostics.lua b/.config/nvim/lua/config/diagnostics.lua
index 6314b83..158e3e4 100644
--- a/.config/nvim/lua/config/diagnostics.lua
+++ b/.config/nvim/lua/config/diagnostics.lua
@@ -23,7 +23,9 @@ vim.diagnostic.config({
   underline = {
     severity = { min = vim.diagnostic.severity.WARN },
   },
-  float = false,
+  float = {
+    source = true,
+  },
   virtual_text = false,
   virtual_lines = false,
 })
@@ -34,16 +36,7 @@ vim.api.nvim_set_hl(0, 'DiagnosticUnderlineWarn', commonhl)
 vim.api.nvim_set_hl(0, 'DiagnosticUnderlineInfo', commonhl)
 vim.api.nvim_set_hl(0, 'DiagnosticUnderlineHint', commonhl)
 
-vim.keymap.set('n', '[d', function()
-  vim.diagnostic.jump({ count = 1, float = true })
-end, { desc = 'diagnostic: next' })
-
-vim.keymap.set('n', ']d', function()
-  vim.diagnostic.jump({ count = -1, float = true })
-end, { desc = 'diagnostic: prev' })
-
 vim.keymap.set('n', 'DD', vim.diagnostic.open_float, { desc = 'diagnostic: current line' })
-
 vim.keymap.set('n', '<leader>d', '<nop>', { desc = "diagnostics" })
 vim.keymap.set('n', '<leader>dd', vim.diagnostic.open_float, { desc = 'diagnostic: current line' })
 vim.keymap.set('n', '<leader>dv', function()
diff --git a/.config/nvim/lua/config/filetypes.lua b/.config/nvim/lua/config/filetypes.lua
index f1428d2..f3657db 100644
--- a/.config/nvim/lua/config/filetypes.lua
+++ b/.config/nvim/lua/config/filetypes.lua
@@ -1,5 +1,6 @@
 vim.filetype.add({
   pattern = {
+    ['^/etc/portage/package.*/$'] = 'oil',
     ['todo.txt'] = 'todotxt',
-  }
+  },
 })
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index 9c00f7b..a93b8fd 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -18,10 +18,10 @@ map(
   { desc = 'Open file under cursor' }
 )
 
-vim.api.nvim_create_autocmd({'BufEnter', 'BufWinEnter'}, {
+vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWinEnter' }, {
   group = vim.api.nvim_create_augroup('bufclose', {}),
   callback = function()
-    if vim.list_contains({'help', 'nofile', 'quickfix'}, vim.bo.buftype) then
+    if vim.list_contains({ 'help', 'nofile', 'quickfix' }, vim.bo.buftype) then
       map('', 'q', '<cmd>close<cr>', { desc = 'Close buffer', buffer = 0 })
     end
   end,
@@ -34,3 +34,8 @@ map('n', '<leader><leader>x', function()
 end, { desc = 'source current file' })
 
 map('n', '<leader>a', '<cmd>edit #<cr>', { desc = 'open alternative file' })
+
+-- yank buffer name
+map('n', ';yb', [[<cmd>let @+ = expand('%')<cr>]], { desc = 'yank buffer name' })
+map('n', ';yn', [[<cmd>let @+ = expand('%:t')<cr>]], { desc = 'yank filename' })
+map('n', ';yp', [[<cmd>let @+ = expand('%:p')<cr>]], { desc = 'yank path' })
diff --git a/.config/nvim/lua/config/lsp.lua b/.config/nvim/lua/config/lsp.lua
index 282a3dc..b168014 100644
--- a/.config/nvim/lua/config/lsp.lua
+++ b/.config/nvim/lua/config/lsp.lua
@@ -1,4 +1,6 @@
-if not vim.lsp.enable then return end
+if not vim.lsp.enable then
+  return
+end
 
 local lsp = vim.lsp
 
@@ -7,6 +9,8 @@ lsp.enable({
   'ccls',
   'clangd',
   'gopls',
+  'harper_ls',
+  'pylsp',
   'rust_analyzer',
   'superhtml',
   'tinymist',
@@ -14,17 +18,21 @@ lsp.enable({
   'zls',
 })
 
-local capabilities = nil
+local capabilities = {}
 if pcall(require, 'blink.cmp') then
   capabilities = require('blink.cmp').get_lsp_capabilities()
 end
 
 lsp.config('*', {
-  root_markers = {'.git'},
-  capabilities = capabilities
+  root_markers = { '.git' },
+  capabilities = vim.tbl_deep_extend('error', capabilities, {
+    textDocument = {
+      semanticTokens = { multilineTokenSupport = true },
+    },
+  }),
 })
 
-vim.api.nvim_create_autocmd({'LspAttach'}, {
+vim.api.nvim_create_autocmd({ 'LspAttach' }, {
   group = vim.api.nvim_create_augroup('lspattach', {}),
   callback = function(args)
     local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
@@ -36,7 +44,7 @@ vim.api.nvim_create_autocmd({'LspAttach'}, {
     vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { desc = 'goto declaration' })
     vim.keymap.set('n', 'gT', vim.lsp.buf.type_definition, { desc = 'goto type definition' })
     vim.keymap.set('n', 'gR', vim.lsp.buf.references, { desc = 'show references' })
-    vim.keymap.set('n', 'ga', vim.lsp.buf.code_action, { desc = 'show code actions' })
+    vim.keymap.set({ 'n', 'v' }, 'ga', vim.lsp.buf.code_action, { desc = 'show code actions' })
     vim.keymap.set('n', 'grr', vim.lsp.buf.rename, { desc = 'rename' })
 
     if client:supports_method('textDocument/implementation') then
@@ -44,20 +52,24 @@ vim.api.nvim_create_autocmd({'LspAttach'}, {
     end
 
     if client:supports_method('textDocument/completion') then
-      vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = false})
+      vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = false })
     end
 
     if client:supports_method('textDocument/formatting') then
-    vim.keymap.set('n', '<leader>f', vim.lsp.buf.format, { desc = 'format' })
+      vim.keymap.set('n', '<leader>f', vim.lsp.buf.format, { desc = 'format' })
     end
 
-    if not client:supports_method('textDocument/willSaveWaitUntil')
-        and client:supports_method('textDocument/formatting') then
-      vim.api.nvim_create_autocmd({'BufWritePre'}, {
+    if
+      not client:supports_method('textDocument/willSaveWaitUntil')
+      and client:supports_method('textDocument/formatting')
+    then
+      vim.api.nvim_create_autocmd({ 'BufWritePre' }, {
         group = vim.api.nvim_create_augroup('lspattach', {}),
         buffer = args.buf,
         callback = function()
-          if vim.b.nofmt then return end
+          if vim.b.nofmt then
+            return
+          end
           vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 })
         end,
       })
diff --git a/.config/nvim/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua
index 2608ae6..c949058 100644
--- a/.config/nvim/lua/plugins/colorizer.lua
+++ b/.config/nvim/lua/plugins/colorizer.lua
@@ -4,12 +4,14 @@ return {
     -- 'norcalli/nvim-colorizer.lua',
     lazy = false,
     opts = {
-      name = true,
-      RRGGBB = true,
-      RRGGBBAA = true,
-      rgb_fn = true,
-      hsl_fn = true,
-      mode = 'background',
+      options = {
+        display = {
+          mode = 'background',
+        },
+        parsers = {
+          css = true,
+        },
+      },
     },
   },
 }
diff --git a/.config/nvim/lua/plugins/gentoo.lua b/.config/nvim/lua/plugins/gentoo.lua
index 470e6de..15ef3aa 100644
--- a/.config/nvim/lua/plugins/gentoo.lua
+++ b/.config/nvim/lua/plugins/gentoo.lua
@@ -1,15 +1,18 @@
 return {
   {
-    'gentoo/gentoo-syntax',
-    -- ft = { 'ebuild' },
-    -- init = function()
-    --   vim.api.nvim_create_autocmd('LspAttach', {
-    --     callback = function(args)
-    --       if vim.opt.filetype == 'ebuild' then
-    --         vim.lsp.stop_client(vim.lsp.get_clients({ bufnr = args.bufnr }))
-    --       end
-    --     end,
-    --   })
-    -- end,
+    'https://github.com/gentoo/gentoo-syntax',
+    lazy = false,
+    init = function()
+      vim.api.nvim_create_autocmd({ 'BufEnter' }, {
+        pattern = { '*/portage/package.*/' },
+        group = vim.api.nvim_create_augroup('gentoo-syntax-oil', {}),
+        callback = function(args)
+          -- HACK: this should not be necessary
+          vim.defer_fn(function()
+            vim.opt_local.filetype = 'oil'
+          end, 50)
+        end,
+      })
+    end,
   },
 }
diff --git a/.config/nvim/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua
index 04f0c9f..d1e3f7b 100644
--- a/.config/nvim/lua/plugins/git.lua
+++ b/.config/nvim/lua/plugins/git.lua
@@ -1,6 +1,7 @@
 return {
   {
     'lewis6991/gitsigns.nvim',
+    lazy = false,
     opts = {
       debug_mode = false,
     },
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index aebf3c4..311f1bc 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -2,5 +2,28 @@ return {
   {
     'neovim/nvim-lspconfig',
     version = '^2.0',
-  }
+  },
+  {
+    'nvimtools/none-ls.nvim',
+    dependencies = {
+      'nvim-lua/plenary.nvim',
+      'gbprod/none-ls-shellcheck.nvim',
+    },
+    config = function()
+      local nls = require('null-ls')
+      nls.setup({
+        sources = {
+          -- nls.builtins.code_actions.impl,
+          -- nls.builtins.completions.spell,
+
+          nls.builtins.formatting.stylua,
+          nls.builtins.formatting.shfmt,
+          nls.builtins.formatting.buf,
+
+          require("none-ls-shellcheck.diagnostics"),
+          require("none-ls-shellcheck.code_actions"),
+        },
+      })
+    end,
+  },
 }
diff --git a/.config/nvim/lua/plugins/mini.lua b/.config/nvim/lua/plugins/mini.lua
index 74cd962..fb4c9a6 100644
--- a/.config/nvim/lua/plugins/mini.lua
+++ b/.config/nvim/lua/plugins/mini.lua
@@ -2,7 +2,7 @@ return {
   {
     'echasnovski/mini.align',
     version = false,
-    lazy = true,
+    lazy = false,
     opts = {},
   },
   {
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
index e064a8b..0978eb7 100644
--- a/.config/nvim/lua/plugins/treesitter.lua
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -1,19 +1,26 @@
 return {
   {
     'nvim-treesitter/nvim-treesitter',
-    branch = 'master',
+    branch = 'main',
     lazy = false,
-    dependencies = {
-      { 'nvim-treesitter/nvim-treesitter-refactor', lazy = false },
-      { 'nvim-treesitter/nvim-treesitter-textobjects', lazy = false },
-      -- { 'nvim-treesitter/playground', cmd = { 'TSPlayground' } },
-    },
     build = ':TSUpdate',
     config = function(_, opts)
-      require('nvim-treesitter.configs').setup(opts)
-
-      -- use bash parser for gentoo ebuilds
-      vim.treesitter.language.register('bash', 'ebuild')
+      -- enable indent
+      vim.api.nvim_create_autocmd('FileType', {
+        callback = function()
+          pcall(vim.treesitter.start)
+          vim.bo.indentexpr = [[v:lua.require'nvim-treesitter'.indentexpr()]]
+        end,
+      })
+      -- auto-install
+      local already_installed = require('nvim-treesitter').get_installed()
+      local parsers_installable = vim
+        .iter(opts.ensure_installed)
+        :filter(function(parser)
+          return not vim.tbl_contains(already_installed, parser)
+        end)
+        :totable()
+      require('nvim-treesitter').install(parsers_installable)
     end,
     opts = {
       ensure_installed = {
@@ -31,7 +38,6 @@ return {
         'html',
         'javascript',
         'json',
-        'jsonc',
         'lua',
         'make',
         'markdown',
@@ -51,43 +57,6 @@ return {
         'yaml',
         'zig',
       },
-      highlight = {
-        enable = true,
-        additional_vim_regex_highlighting = { 'markdown' },
-      },
-      indent = {
-        enable = true,
-      },
-      refactor = {
-        navigation = {
-          enable = true,
-        },
-        smart_rename = {
-          enable = true,
-        },
-      },
-      textobjects = {
-        select = {
-          enable = true,
-          keymaps = {
-            ['ib'] = '@block.inner',
-            ['ab'] = '@block.outer',
-            -- ['ic'] = '@conditional.inner',
-            -- ['ac'] = '@conditional.outer',
-            ['if'] = '@function.inner',
-            ['af'] = '@function.outer',
-            ['il'] = '@loop.inner',
-            ['al'] = '@loop.outer',
-            ['is'] = '@scopename.inner',
-            ['as'] = '@scopename.outer',
-            ['ic'] = '@comment.inner',
-            ['ac'] = '@comment.outer',
-          },
-          selection_mode = {
-            ['@comment.outer'] = 'V',
-          },
-        },
-      },
     },
   },
 }
diff --git a/.config/nvim/lua/plugins/whichkey.lua b/.config/nvim/lua/plugins/whichkey.lua
index dc21eda..cb89df4 100644
--- a/.config/nvim/lua/plugins/whichkey.lua
+++ b/.config/nvim/lua/plugins/whichkey.lua
@@ -3,8 +3,7 @@ return {
     'folke/which-key.nvim',
     event = 'VeryLazy',
     opts = {
-      sort = { 'alphanum' },
-      icons = { separator = '→ ', group = '🞱 ' },
+      icons = { separator = '→ ', group = ' +' },
     },
   },
 }