aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/bqf_conf.lua
diff options
context:
space:
mode:
authorAlec Goncharow <alec@goncharow.dev>2024-01-12 19:51:00 -0500
committerAlec Goncharow <alec@goncharow.dev>2024-01-12 19:51:00 -0500
commit02e1c9be35e13e26b34bbfd680e18f3093ee2949 (patch)
treed685a48185e8e6092d41d2cd03c678dc19b214ef /.config/nvim/lua/bqf_conf.lua
parent803274ed25384b4ffb134f35c910347c022999fd (diff)
ultimate yak shave: custom colorscheme
Diffstat (limited to '.config/nvim/lua/bqf_conf.lua')
-rw-r--r--.config/nvim/lua/bqf_conf.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/.config/nvim/lua/bqf_conf.lua b/.config/nvim/lua/bqf_conf.lua
new file mode 100644
index 0000000..35b681e
--- /dev/null
+++ b/.config/nvim/lua/bqf_conf.lua
@@ -0,0 +1,53 @@
+local fn = vim.fn
+
+function _G.qftf(info)
+ local items
+ local ret = {}
+ -- The name of item in list is based on the directory of quickfix window.
+ -- Change the directory for quickfix window make the name of item shorter.
+ -- It's a good opportunity to change current directory in quickfixtextfunc :)
+ --
+ -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window
+ -- local root = getRootByAlterBufnr(alterBufnr)
+ -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root)))
+ --
+ if info.quickfix == 1 then
+ items = fn.getqflist({ id = info.id, items = 0 }).items
+ else
+ items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items
+ end
+ local limit = 31
+ local fnameFmt1, fnameFmt2 = '%-' .. limit .. 's', '…%.' .. (limit - 1) .. 's'
+ local validFmt = '%s │%5d:%-3d│%s %s'
+ for i = info.start_idx, info.end_idx do
+ local e = items[i]
+ local fname = ''
+ local str
+ if e.valid == 1 then
+ if e.bufnr > 0 then
+ fname = fn.bufname(e.bufnr)
+ if fname == '' then
+ fname = '[No Name]'
+ else
+ fname = fname:gsub('^' .. vim.env.HOME, '~')
+ end
+ -- char in fname may occur more than 1 width, ignore this issue in order to keep performance
+ if #fname <= limit then
+ fname = fnameFmt1:format(fname)
+ else
+ fname = fnameFmt2:format(fname:sub(1 - limit))
+ end
+ end
+ local lnum = e.lnum > 99999 and -1 or e.lnum
+ local col = e.col > 999 and -1 or e.col
+ local qtype = e.type == '' and '' or ' ' .. e.type:sub(1, 1):upper()
+ str = validFmt:format(fname, lnum, col, qtype, e.text)
+ else
+ str = e.text
+ end
+ table.insert(ret, str)
+ end
+ return ret
+end
+
+vim.o.qftf = '{info -> v:lua._G.qftf(info)}'