summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/aotrix/quickfix.lua52
-rw-r--r--lua/aotrix/remap.lua7
2 files changed, 52 insertions, 7 deletions
diff --git a/lua/aotrix/quickfix.lua b/lua/aotrix/quickfix.lua
new file mode 100644
index 0000000..14195b4
--- /dev/null
+++ b/lua/aotrix/quickfix.lua
@@ -0,0 +1,52 @@
+local quickfix_is_open = false;
+vim.api.nvim_create_autocmd('BufWinEnter', {
+ pattern = 'quickfix',
+ callback = function(args) quickfix_is_open = true end
+})
+vim.api.nvim_create_autocmd('BufWinLeave', {
+ pattern = 'quickfix',
+ callback = function(args) quickfix_is_open = false end
+})
+local nb_elements_quickfix = 0;
+vim.api.nvim_create_autocmd('DiagnosticChanged', {
+ callback = function(args)
+ nb_elements_quickfix = #vim.diagnostic.get()
+ if quickfix_is_open then
+ if nb_elements_quickfix == 0 then
+ quickfix_is_open = false
+ vim.cmd.cclose()
+ else
+ vim.diagnostic.setqflist()
+ end
+ end
+ end
+})
+vim.keymap.set("n", "<leader>q", function()
+ if #vim.diagnostic.get() > 0 then
+ if quickfix_is_open then
+ vim.cmd.cclose()
+ quickfix_is_open = false
+ else
+ vim.diagnostic.setqflist()
+ vim.cmd.cfirst()
+ end
+ end
+end)
+vim.keymap.set("n", "<M-j>", function()
+ if #vim.diagnostic.get() > 0 and quickfix_is_open then
+ if #vim.diagnostic.get() == 1 then
+ vim.cmd.cfirst()
+ else
+ vim.diagnostic.goto_next({float = false})
+ end
+ end
+end)
+vim.keymap.set("n", "<M-k>", function()
+ if #vim.diagnostic.get() > 0 and quickfix_is_open then
+ if #vim.diagnostic.get() == 1 then
+ vim.cmd.cfirst()
+ else
+ vim.diagnostic.goto_prev({float = false})
+ end
+ end
+end)
diff --git a/lua/aotrix/remap.lua b/lua/aotrix/remap.lua
index c5ff3fe..72a854b 100644
--- a/lua/aotrix/remap.lua
+++ b/lua/aotrix/remap.lua
@@ -16,10 +16,3 @@ vim.keymap.set("n", "<leader>Y", [["+Y]])
-- Remove <C-c> because it is not fast enough
vim.keymap.set({'n', 'i', 'v'}, '<C-c>', '<nop>')
-
--- Quickfix
-vim.keymap.set("n", "<leader>q", function() vim.diagnostic.setqflist() end)
-vim.keymap.set("n", "<M-j>", "<cmd>:cnext<CR>")
-vim.keymap.set("n", "<M-k>", "<cmd>:cprev<CR>")
-vim.keymap.set("n", "<M-f>", "<cmd>:cfirst<CR>")
-vim.keymap.set("n", "<M-l>", "<cmd>:clast<CR>")