From 97b7fb70b027aa55f8e92380b77c04a7ed45afd1 Mon Sep 17 00:00:00 2001
From: Gustaf Rydholm <gustaf.rydholm@gmail.com>
Date: Thu, 13 Jan 2022 21:58:01 +0100
Subject: Add spectre

---
 lua/config/spectre.lua | 137 +++++++++++++++++++++++++++++++++++++++++++++++++
 lua/plugins.lua        |   1 +
 2 files changed, 138 insertions(+)
 create mode 100644 lua/config/spectre.lua

(limited to 'lua')

diff --git a/lua/config/spectre.lua b/lua/config/spectre.lua
new file mode 100644
index 0000000..874d496
--- /dev/null
+++ b/lua/config/spectre.lua
@@ -0,0 +1,137 @@
+local status_ok, spectre = pcall(require, "spectre")
+if not status_ok then
+Log:get_default().error "Failed to load hop"
+return
+end
+
+spectre.setup {
+
+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",
+  },
+  -- you can put your mapping here it only use normal mode
+},
+find_engine = {
+  -- rg is map with finder_cmd
+  ["rg"] = {
+    cmd = "rg",
+    -- default args
+    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]",
+      },
+      -- you can put any option you want here it can toggle with
+      -- show_option function
+    },
+  },
+  ["ag"] = {
+    cmd = "ag",
+    args = {
+      "--vimgrep",
+      "-s",
+    },
+    options = {
+      ["ignore-case"] = {
+        value = "-i",
+        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 = {
+    --pick one of item in find_engine
+    cmd = "rg",
+    options = { "ignore-case" },
+  },
+  replace = {
+    --pick one of item in replace_engine
+    cmd = "sed",
+  },
+},
+replace_vim_cmd = "cdo",
+is_open_target_win = true, --open file on opener window
+is_insert_mode = false, -- start open panel on is_insert_mode
+}
diff --git a/lua/plugins.lua b/lua/plugins.lua
index 9cbb5ca..f0edd41 100644
--- a/lua/plugins.lua
+++ b/lua/plugins.lua
@@ -52,4 +52,5 @@ return {
         }
     end
     },
+    { "windwp/nvim-spectre" },
 }
-- 
cgit v1.2.3-70-g09d2