From 8836303ced67592ddd83244f7664acce1640d6a6 Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Mon, 7 Aug 2023 00:59:46 +0200 Subject: [PATCH] vim: add mappings to toggle quickfix and loclist --- config/nvim/lua/fschauen/keymap.lua | 4 ++++ config/nvim/lua/fschauen/util.lua | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/config/nvim/lua/fschauen/keymap.lua b/config/nvim/lua/fschauen/keymap.lua index 7d51994..58cc7dc 100644 --- a/config/nvim/lua/fschauen/keymap.lua +++ b/config/nvim/lua/fschauen/keymap.lua @@ -68,6 +68,10 @@ nmap('', 'lpreviouszz', { silent = true }) nmap('j', require('fschauen.util').goto_next_diagnostic) nmap('k', require('fschauen.util').goto_prev_diagnostic) +-- toggle quickfix and location lists +nmap('lq', util.toggle_quickfix, { desc = 'Toggle quickfix' } ) +nmap('ll', util.toggle_loclist, { desc = 'Toggle loclist' } ) + -- quickly open lazy.nvim plugin manager nmap('L', 'Lazy') diff --git a/config/nvim/lua/fschauen/util.lua b/config/nvim/lua/fschauen/util.lua index 0380435..071092d 100644 --- a/config/nvim/lua/fschauen/util.lua +++ b/config/nvim/lua/fschauen/util.lua @@ -132,5 +132,27 @@ M.win_resize_left = function(size) return M.thunk(win_resize, 'h', size) end ---@param size integer: how much to resize M.win_resize_right = function(size) return M.thunk(win_resize, 'l', size) end +--- Toggle quickfix (or location) list. +---@param qf string: 'c' for quickfix, 'l' for location list +local toggle_qf_list = function(qf) + local l = qf == 'l' and 1 or 0 + local is_qf = function(win) return win.quickfix == 1 and win.loclist == l end + local is_open = not vim.tbl_isempty(vim.tbl_filter(is_qf, vim.fn.getwininfo())) + if is_open then + vim.cmd(qf .. 'close') + else + local ok = pcall(function(c) vim.cmd(c) end, qf .. 'open') + if not ok and qf == 'l' then + vim.notify('No location list', vim.log.levels.WARN) + end + end +end + +--- Toggle quickfix list. +M.toggle_quickfix = function() toggle_qf_list('c') end + +--- Toggle location list. +M.toggle_loclist = function() toggle_qf_list('l') end + return M