summary refs log tree commit diff
path: root/.config/nvim/lua/plugins/fzf.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins/fzf.lua')
-rw-r--r--.config/nvim/lua/plugins/fzf.lua98
1 files changed, 82 insertions, 16 deletions
diff --git a/.config/nvim/lua/plugins/fzf.lua b/.config/nvim/lua/plugins/fzf.lua
index 73246a8..1a25c0d 100644
--- a/.config/nvim/lua/plugins/fzf.lua
+++ b/.config/nvim/lua/plugins/fzf.lua
@@ -1,5 +1,6 @@
 return {
   {
+    enabled = true,
     'ibhagwan/fzf-lua',
     dependencies = {
       'echasnovski/mini.icons',
@@ -13,10 +14,12 @@ return {
         { 'default' },
         -- OPTIONS
         winopts = {
+          backdrop = 0,
           split = 'belowright 20new',
           border = 'none',
           preview = {
             border = 'none',
+            hidden = true,
           },
           -- on_create = function() end,
         },
@@ -27,11 +30,12 @@ return {
             ['ctrl-p'] = 'up',
           },
         },
-        -- actions = {
-        --   files = {
-        --     ['ctrl-q'] = { fn = fzf.actions.file_sel_to_qf },
-        --   },
-        -- },
+        actions = {
+          files = {
+            true,
+            ['ctrl-q'] = { fn = fzf.actions.file_sel_to_qf, prefix = 'select-all' },
+          },
+        },
         fzf_colors = true,
         -- PICKER CONFIG
         files = {
@@ -39,7 +43,7 @@ return {
         },
         marks = {
           marks = '[a-zA-Z]',
-        }
+        },
       })
     end,
     keys = {
@@ -48,11 +52,26 @@ return {
       { mode = 'n', ';b', '<cmd>FzfLua buffers<cr>', desc = 'fzf: buffers' },
       { mode = 'n', ';f', '<cmd>FzfLua files<cr>', desc = 'fzf: find_files' },
       { mode = 'n', ';g', '<cmd>FzfLua live_grep<cr>', desc = 'fzf: live_grep' },
-      { mode = 'n', ';d', '<cmd>FzfLua diagnostics_workspace<cr>', desc = 'fzf: workspace diagnostics' },
-      { mode = 'n', ';D', '<cmd>FzfLua diagnostics_document<cr>', desc = 'fzf: document diagnostics' },
+      {
+        mode = 'n',
+        ';D',
+        '<cmd>FzfLua diagnostics_workspace sort=true<cr>',
+        desc = 'fzf: workspace diagnostics',
+      },
+      {
+        mode = 'n',
+        ';d',
+        '<cmd>FzfLua diagnostics_document sort=true<cr>',
+        desc = 'fzf: document diagnostics',
+      },
       { mode = 'n', ';h', '<cmd>FzfLua helptags<cr>', desc = 'fzf: help' },
       { mode = 'n', ';s', '<cmd>FzfLua lsp_document_symbols<cr>', desc = 'fzf: document symbols' },
-      { mode = 'n', ';w', '<cmd>FzfLua lsp_live_workspace_symbols<cr>', desc = 'fzf: workspace symbols' },
+      {
+        mode = 'n',
+        ';w',
+        '<cmd>FzfLua lsp_live_workspace_symbols<cr>',
+        desc = 'fzf: workspace symbols',
+      },
       { mode = 'n', ';m', '<cmd>FzfLua marks<cr>', desc = 'fzf: marks' },
       {
         mode = 'n',
@@ -62,12 +81,60 @@ return {
         end,
         desc = 'fzf: vim_config',
       },
-      -- {
-      --   mode = 'n',
-      --   ';;t',
-      --   '<cmd>Telescope<cr>',
-      --   desc = 'telescope: select (interactive)',
-      -- },
+      {
+        mode = 'n',
+        ';z',
+        function()
+          -- register one-time autocmd to open changed directory with oil
+          vim.api.nvim_create_autocmd('DirChanged', {
+            pattern = '*',
+            callback = vim.schedule_wrap(function(args)
+              vim.cmd.Oil(args.file)
+            end),
+            once = true,
+          })
+          require('fzf-lua').zoxide()
+        end,
+        desc = 'fzf: zoxide',
+      },
+      {
+        mode = 'n',
+        ';Z',
+        function()
+          require('fzf-lua').live_grep({
+            cwd = vim.env.ZK_NOTEBOOK_DIR,
+            actions = {
+              ['ctrl-c'] = function(selected, opts)
+                local utils = require('fzf-lua.utils')
+
+                local title = opts.last_query
+                local p = vim
+                  .system({ 'zk', 'new', '--dry-run', '--no-input', '--title', title }, { text = true })
+                  :wait()
+                if not p.code == 0 then
+                  return
+                end
+                utils.info(vim.inspect(p.stdout))
+
+                local note_path = vim.trim(p.stderr)
+                local note_body = vim.split(p.stdout, '\n')
+                require('mod.win').open(note_path, note_body, {
+                  buf = { filetype = 'markdown' },
+                })
+              end,
+            },
+          })
+        end,
+        desc = 'fzf: zettelkasten',
+      },
+      {
+        mode = 'n',
+        ';T',
+        function()
+          require('fzf-lua').live_grep({ regex = '(TODO|XXX|NOTE|HACK):' })
+        end,
+        desc = 'fzf: zettelkasten',
+      },
       {
         mode = 'n',
         ';;f',
@@ -78,7 +145,6 @@ return {
           else
             dir = vim.fn.expand('%:p:h')
           end
-          -- require('fzf-lua').files({ cwd = dir })
           _G.feedkeys(':Fzf files cwd=' .. dir)
         end,
         desc = 'fzf: files (interactive)',