diff options
Diffstat (limited to 'fnl/plugins')
-rw-r--r-- | fnl/plugins/grug-far.fnl | 46 | ||||
-rw-r--r-- | fnl/plugins/spectre.fnl | 86 |
2 files changed, 46 insertions, 86 deletions
diff --git a/fnl/plugins/grug-far.fnl b/fnl/plugins/grug-far.fnl new file mode 100644 index 0000000..ed6eae1 --- /dev/null +++ b/fnl/plugins/grug-far.fnl @@ -0,0 +1,46 @@ +;; Find and replace plugin. +(local auto-cmds + [[:FileType + {:pattern [:grug-far] + :command "nnoremap <silent> <buffer> q :close<CR>"}] + [:FileType {:pattern [:grug-far] :command "setlocal spell!"}]]) + +(fn replace [?cword ?file] + (let [grug (require :grug-far)] + (var opts {:prefills {}}) + (when ?cword + (set opts.prefills.search ?cword)) + (when ?file + (set opts.prefills.flags ?file)) + (grug.grug_far opts))) + +(fn visual-replace [] + (let [grug (require :grug-far)] + (grug.with_visual_selection {:prefills {:flags (vim.fn.expand "%")}}))) + +(fn config [] + (let [cmds (require :util.cmds) + grug (require :grug-far)] + (cmds.create-auto-cmds auto-cmds) + (grug.setup))) + +(local keys [{1 :<m-r> 2 :<cmd>GrugFar<cr> :desc "Find and Replace"} + {1 :<m-w> + 2 (fn [] + (replace (vim.fn.expand :<cword>))) + :desc "Find and replace word under cursor"} + {1 :<m-x> + 2 (fn [] + (replace nil (vim.fn.expand "%"))) + :desc "Find and replace in file"} + {1 :<m-a> + 2 (fn [] + (replace (vim.fn.expand :<cword>) (vim.fn.expand "%"))) + :desc "Find and replace cword in file"} + {1 :<m-r> + 2 (fn [] + (visual-replace)) + :desc "Find and Replace" + :mode [:v]}]) + +{1 :MagicDuck/grug-far.nvim : keys : config} diff --git a/fnl/plugins/spectre.fnl b/fnl/plugins/spectre.fnl deleted file mode 100644 index 8c86a6d..0000000 --- a/fnl/plugins/spectre.fnl +++ /dev/null @@ -1,86 +0,0 @@ -;; Find and replace. - -(local user-cmds [[:Replace - (lambda [] - (let [spectre (require :spectre)] - (spectre.open))) - {:nargs 0}] - [:ReplaceWord - (lambda [] - (let [spectre (require :spectre)] - (spectre.open_visual {:select_word true}))) - {:nargs 0}] - [:ReplaceInBuf - (lambda [] - (let [spectre (require :spectre)] - (spectre.open_file_search))) - {:nargs 0}]]) - -(local auto-cmds - [[:FileType - {:pattern [:spectre_panel] - :command "nnoremap <silent> <buffer> q :close<CR>"}] - [:FileType {:pattern [:spectre_panel] :command "setlocal spell!"}]]) - -(fn init [] - (let [cmds (require :util.cmds)] - (cmds.create-user-cmds user-cmds) - (cmds.create-auto-cmds auto-cmds))) - -(local opts {:color_devicons true - :highlight {:ui :String :search :DiffChange :replace :DiffDelete} - :mapping {:toggle_line {:map :t - :cmd "<cmd>lua require('spectre').toggle_line()<CR>" - :desc "toggle current item"} - :enter_file {:map :<cr> - :cmd "<cmd>lua require('spectre.actions').select_entry()<CR>" - :desc "goto current file"} - :send_to_qf {:map :Q - :cmd "<cmd>lua require('spectre.actions').send_to_qf()<CR>" - :desc "send all item to quickfix"} - :replace_cmd {:map :c - :cmd "<cmd>lua require('spectre.actions').replace_cmd()<CR>" - :desc "input replace vim command"} - :show_option_menu {:map :o - :cmd "<cmd>lua require('spectre').show_options()<CR>" - :desc "show option"} - :run_replace {:map :R - :cmd "<cmd>lua require('spectre.actions').run_replace()<CR>" - :desc "replace all"} - :change_view_mode {:map :m - :cmd "<cmd>lua require('spectre').change_view()<CR>" - :desc "change result view mode"} - :toggle_ignore_case {:map :I - :cmd "<cmd>lua require('spectre').change_options('ignore-case')<CR>" - :desc "toggle ignore case"} - :toggle_ignore_hidden {:map :H - :cmd "<cmd>lua require('spectre').change_options('hidden')<CR>" - :desc "toggle search hidden"}} - :find_engine {:rg {:cmd :rg - :args [:--color=never - :--no-heading - :--with-filename - :--line-number - :--column] - :options {:ignore-case {:value :--ignore-case - :icon "[I]" - :desc "ignore case"} - :hidden {:value :--hidden - :desc "hidden file" - :icon "[H]"}}}} - :replace_engine {:sed {:cmd :sed :args nil} - :options {:ignore-case {:value :--ignore-case - :icon "[I]" - :desc "ignore case"}}} - :default {:find {:cmd :rg :options [:ignore-case]} - :replace {:cmd :sed}} - :replace_vim_cmd :cdo - :is_open_target_win true - :is_insert_mode false}) - -(local keys - [{1 :<leader>rn 2 :<cmd>ReplaceInBuf<cr> :desc "Replace in Buffer"} - {1 :<leader>re 2 :<cmd>Replace<cr> :desc :Replace} - {1 :<leader>ri 2 :<cmd>ReplaceWord<cr> :desc "Replace Word"}]) - -{1 :windwp/nvim-spectre :event [:BufReadPost :BufNewFile] : init : keys : opts} |