From 6af145077a1fdb279c7ef2c264cdc70789c6fce1 Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Mon, 22 Jul 2024 00:48:44 +0200 Subject: Replace spectre with grug-far --- fnl/plugins/grug-far.fnl | 46 ++++++++++++++++++++++++++ fnl/plugins/spectre.fnl | 86 ------------------------------------------------ 2 files changed, 46 insertions(+), 86 deletions(-) create mode 100644 fnl/plugins/grug-far.fnl delete mode 100644 fnl/plugins/spectre.fnl (limited to 'fnl/plugins') 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 q :close"}] + [: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 : 2 :GrugFar :desc "Find and Replace"} + {1 : + 2 (fn [] + (replace (vim.fn.expand :))) + :desc "Find and replace word under cursor"} + {1 : + 2 (fn [] + (replace nil (vim.fn.expand "%"))) + :desc "Find and replace in file"} + {1 : + 2 (fn [] + (replace (vim.fn.expand :) (vim.fn.expand "%"))) + :desc "Find and replace cword in file"} + {1 : + 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 q :close"}] - [: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 "lua require('spectre').toggle_line()" - :desc "toggle current item"} - :enter_file {:map : - :cmd "lua require('spectre.actions').select_entry()" - :desc "goto current file"} - :send_to_qf {:map :Q - :cmd "lua require('spectre.actions').send_to_qf()" - :desc "send all item to quickfix"} - :replace_cmd {:map :c - :cmd "lua require('spectre.actions').replace_cmd()" - :desc "input replace vim command"} - :show_option_menu {:map :o - :cmd "lua require('spectre').show_options()" - :desc "show option"} - :run_replace {:map :R - :cmd "lua require('spectre.actions').run_replace()" - :desc "replace all"} - :change_view_mode {:map :m - :cmd "lua require('spectre').change_view()" - :desc "change result view mode"} - :toggle_ignore_case {:map :I - :cmd "lua require('spectre').change_options('ignore-case')" - :desc "toggle ignore case"} - :toggle_ignore_hidden {:map :H - :cmd "lua require('spectre').change_options('hidden')" - :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 :rn 2 :ReplaceInBuf :desc "Replace in Buffer"} - {1 :re 2 :Replace :desc :Replace} - {1 :ri 2 :ReplaceWord :desc "Replace Word"}]) - -{1 :windwp/nvim-spectre :event [:BufReadPost :BufNewFile] : init : keys : opts} -- cgit v1.2.3-70-g09d2