From 02e1c9be35e13e26b34bbfd680e18f3093ee2949 Mon Sep 17 00:00:00 2001 From: Alec Goncharow Date: Fri, 12 Jan 2024 19:51:00 -0500 Subject: ultimate yak shave: custom colorscheme --- .config/nvim/lua/bqf_conf.lua | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .config/nvim/lua/bqf_conf.lua (limited to '.config/nvim/lua/bqf_conf.lua') 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)}' -- cgit v1.2.3-70-g09d2