summaryrefslogtreecommitdiff
path: root/fnl
diff options
context:
space:
mode:
authorGustaf Rydholm <gustaf.rydholm@gmail.com>2024-07-22 00:48:44 +0200
committerGustaf Rydholm <gustaf.rydholm@gmail.com>2024-07-22 00:48:44 +0200
commit6af145077a1fdb279c7ef2c264cdc70789c6fce1 (patch)
tree4865b5d4c0e52e27ba694188de91c3c13718014c /fnl
parentc58e188c453b99821c4337e20f93ba82e3feac25 (diff)
Replace spectre with grug-far
Diffstat (limited to 'fnl')
-rw-r--r--fnl/plugins/grug-far.fnl46
-rw-r--r--fnl/plugins/spectre.fnl86
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}