Skip to content

Commit

Permalink
Revert "fix: create option is_block_ui_break"
Browse files Browse the repository at this point in the history
This reverts commit 411cee6.
  • Loading branch information
Zeioth committed Oct 6, 2023
1 parent 97cfd1b commit b72278d
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 56 deletions.
21 changes: 8 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,7 @@ with `:e` because `sed` is replace outside vim.
require('spectre').setup()
```

<details>
<summary>Config</summary>
Change any settings if you don't like them. **Don't just copy all** as
Change any settings if you don't like them. **Don't just copy all** as
settings may change as the plugin is updated so it may be better use
the default settings.

Expand Down Expand Up @@ -258,13 +256,10 @@ require('spectre').setup({
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
is_block_ui_break = false -- mapping backspace and enter key to avoid ui break
})

```

</details>

### Custom Functions

```lua
Expand Down Expand Up @@ -334,10 +329,8 @@ Thanks to everyone who sponsors my projects and makes continued development and
)
```

- How to avoid ui break?
```lua
require(spectre).setup({ is_block_ui_break = true })
```
- What if I have remapped keys in my neovim config?

> [Spectre hardcodes some mappings in order to work correctly](https://github.com/nvim-pack/nvim-spectre/blob/1abe23ec9b7bc3082164f4cb842d521ef70e080e/lua/spectre/init.lua#L175). You can remap them as described above. You are allowed to create as many mappings as you want. For name and description choose any value. 'map' and 'cmd' are the only important fields.
- Is spectre compatible with the plugin mini.animate?
Expand All @@ -346,6 +339,8 @@ require(spectre).setup({ is_block_ui_break = true })
- Why is it called Spectre?

I wanted to call it `Search Panel` but this name is not cool.
I got the name of a hero on a game.
Spectre has a skill to find enemy on global map so I use it:)
> I wanted to call it `Search Panel` but this name is not cool.
> I got the name of a hero on a game.
> Spectre has a skill to find enemy on global map so I use it:)
1 change: 0 additions & 1 deletion lua/spectre/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ local config = {
replace_vim_cmd = "cdo",
is_open_target_win = true,
is_insert_mode = false,
is_block_ui_break = false
}

if vim.loop.os_uname().sysname == 'Darwin' then
Expand Down
83 changes: 41 additions & 42 deletions lua/spectre/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ local state_utils = require('spectre.state_utils')
local utils = require('spectre.utils')
local ui = require('spectre.ui')
local log = require('spectre._log')
require('spectre.highlight')
local highlight = require('spectre.highlight')
local async = require('plenary.async')

local scheduler = async.util.scheduler
Expand Down Expand Up @@ -189,6 +189,7 @@ function M.mapping_buffer(bufnr)
api.nvim_buf_set_keymap(bufnr, 'n', 'o', 'ji', map_opt) -- don't append line on can make the UI wrong
api.nvim_buf_set_keymap(bufnr, 'n', 'O', 'ki', map_opt)
api.nvim_buf_set_keymap(bufnr, 'n', 'u', "", map_opt) -- disable undo, It breaks the UI.
api.nvim_buf_set_keymap(bufnr, 'i', '<CR>', "", map_opt) -- disable ENTER on insert mode, it breaks the UI.
api.nvim_buf_set_keymap(bufnr, 'n', '<Tab>', "<cmd>lua require('spectre').tab()<cr>", map_opt)
api.nvim_buf_set_keymap(bufnr, 'n', '<S-Tab>', "<cmd>lua require('spectre').tab_shift()<cr>", map_opt)
api.nvim_buf_set_keymap(bufnr, 'n', '?', "<cmd>lua require('spectre').show_help()<cr>", map_opt)
Expand All @@ -213,46 +214,42 @@ function M.mapping_buffer(bufnr)
end,
desc = "Ensure spectre state when its window is closed by any mean"
})

if state.user_config.is_block_ui_break then
-- Anti UI breakage
-- * If the user enters insert mode on a forbidden line: leave insert mode.
-- * If the user passes over a forbidden line on insert mode: leave insert mode.
-- * Disable backspace jumping lines.
local backspace = vim.api.nvim_get_option('backspace')
local anti_insert_breakage_group = vim.api.nvim_create_augroup("SpectreAntiInsertBreakage", { clear = true })
vim.api.nvim_create_autocmd({ "InsertEnter", "CursorMovedI" }, {
group = anti_insert_breakage_group,
pattern = "*",
callback = function()
local current_filetype = vim.bo.filetype
if current_filetype == "spectre_panel" then
vim.cmd("set backspace=indent,start")
local line = vim.api.nvim_win_get_cursor(0)[1]
if line == 1 or line == 2 or line == 4 or line == 6 or line >= 8
then
vim.api.nvim_feedkeys(
vim.api.nvim_replace_termcodes('<Esc>', true, false, true),
'n', true
)
end
end
end,
desc = "spectre anti-insert-breakage → protect the user from breaking the UI while on insert mode."
})
vim.api.nvim_create_autocmd({ "WinLeave" }, {
group = anti_insert_breakage_group,
pattern = "*",
callback = function()
local current_filetype = vim.bo.filetype
if current_filetype == "spectre_panel" then
vim.cmd("set backspace=" .. backspace)
-- Anti UI breakage
-- * If the user enters insert mode on a forbidden line: leave insert mode.
-- * If the user passes over a forbidden line on insert mode: leave insert mode.
-- * Disable backspace jumping lines.
local backspace = vim.api.nvim_get_option('backspace')
local anti_insert_breakage_group = vim.api.nvim_create_augroup("SpectreAntiInsertBreakage", { clear = true })
vim.api.nvim_create_autocmd({"InsertEnter", "CursorMovedI"}, {
group = anti_insert_breakage_group,
pattern = "*",
callback = function()
local current_filetype = vim.bo.filetype
if current_filetype == "spectre_panel" then
vim.cmd("set backspace=indent,start")
local line = vim.api.nvim_win_get_cursor(0)[1]
if line == 1 or line == 2 or line == 4 or line == 6 or line >= 8
then
vim.api.nvim_feedkeys(
vim.api.nvim_replace_termcodes('<Esc>', true, false, true),
'n', true
)
end
end,
desc = "spectre anti-insert-breakage → restore the 'backspace' option."
})
api.nvim_buf_set_keymap(bufnr, 'i', '<CR>', "", map_opt) -- disable ENTER on insert mode, it breaks the UI.
end
end
end,
desc = "spectre anti-insert-breakage → protect the user from breaking the UI while on insert mode."
})
vim.api.nvim_create_autocmd({"WinLeave"}, {
group = anti_insert_breakage_group,
pattern = "*",
callback = function()
local current_filetype = vim.bo.filetype
if current_filetype == "spectre_panel" then
vim.cmd("set backspace=" .. backspace)
end
end,
desc = "spectre anti-insert-breakage → restore the 'backspace' option."
})
end

local function hl_match(opts)
Expand Down Expand Up @@ -717,13 +714,15 @@ end
M.tab = function()
local line = vim.api.nvim_win_get_cursor(0)[1]
if line == 3 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {5, 1}) end
if line == 5 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {7, 1}) end
if line == 5 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {7, 1})
end
end

M.tab_shift = function()
local line = vim.api.nvim_win_get_cursor(0)[1]
if line == 5 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {3, 1}) end
if line == 7 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {5, 1}) end
if line == 7 then vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), {5, 1})
end
end

return M

0 comments on commit b72278d

Please sign in to comment.