move quickfix tweaks to after/ftplugin

Mon, 13 Mar 2023 15:01:16 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Mon, 13 Mar 2023 15:01:16 -0500
changeset 1082
098f661195c1
parent 1081
59e05e03851d
child 1083
cc48b040ddbb

move quickfix tweaks to after/ftplugin

.config/nvim/after/ftplugin/qf.lua file | annotate | diff | comparison | revisions
.config/nvim/lua/config/autocmds.lua file | annotate | diff | comparison | revisions
new file mode 100644
--- /dev/null
+++ b/.config/nvim/after/ftplugin/qf.lua
@@ -0,0 +1,31 @@
+local fn = vim.fn
+
+local wininfo = fn.getwininfo(fn.win_getid())[1] or {}
+local is_loc = wininfo.loclist == 1
+local qftitle = wininfo.variables.quickfix_title
+
+vim.bo.buflisted = false
+vim.wo.concealcursor = "n"
+vim.wo.wrap = false
+
+-- easy close
+vim.keymap.set("n", "q", "<C-w>q", { buffer = true })
+
+if is_loc then
+  -- simplify noisy :ltag output
+  if qftitle and string.match(qftitle, "^ltag") then
+    -- Hide ctags regex anchors
+    fn.matchadd("Conceal", [[\m|\zs\^\\V\|\\$\ze|]])
+
+    -- Hide lsp tagfunc line/col seek references
+    fn.matchadd("Conceal", [[\m|\zs\\Vcall cursor(\|)\ze|]])
+
+    -- highlight match in line. if tagname begins with / the rest is a \v
+    -- regex. match must be between vertical bars, so its the 2nd column.
+    local tagstack = fn.gettagstack()
+    if tagstack then
+      local tagmatch = string.gsub(tagstack.items[1].tagname, "^/", "\\v", 1)
+      fn.matchadd("Underlined", [[\m|.*\zs]] .. tagmatch .. [[\m\ze.*|]])
+    end
+  end
+end
--- a/.config/nvim/lua/config/autocmds.lua
+++ b/.config/nvim/lua/config/autocmds.lua
@@ -50,22 +50,3 @@ end)
 autocmd(g, "BufReadPost", "*", function()
   fn.matchadd("Error", [[\m^\([<>|]\)\{7} \@=\|^=\{7}$]])
 end)
-
--- >> nicer quickfix
-autocmd(g, "BufReadPost", "quickfix", {
-  callback = function(ctx)
-    -- simplify noisy :ltag output
-    if string.match(vim.w.quickfix_title, "^ltag") then
-      -- Hide ctags regex anchors
-      fn.matchadd("Conceal", [[\m|\zs\^\\V\|\\$\ze|]])
-
-      -- highlight match in line. if tagname begins with / the rest is a \v
-      -- regex. match must be between vertical bars, so its the 2nd column.
-      local tagmatch = string.gsub(vim.fn.gettagstack().items[1].tagname, "^/", "\\v", 1)
-      fn.matchadd("Underlined", [[\m|.*\zs]] .. tagmatch .. [[\m\ze.*|]])
-    end
-
-    -- easy close
-    vim.keymap.set("n", "q", "<C-w>q", { buffer = true })
-  end,
-})

mercurial