Skip to content

Commit

Permalink
Revert "Merge pull request #175 from Zeioth/ui-antibreak-revert"
Browse files Browse the repository at this point in the history
This reverts commit 4121949, reversing
changes made to 7577078.
  • Loading branch information
zztrieuzz committed Nov 8, 2023
1 parent 2700b58 commit 2ee3496
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 49 deletions.
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@ with `:e` because `sed` is replace outside vim.
require('spectre').setup()
```

Change any settings if you don't like them. **Don't just copy all** as
<details>
<summary>Config</summary>
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 @@ -255,11 +257,14 @@ 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_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 @@ -328,8 +333,11 @@ Thanks to everyone who sponsors my projects and makes continued development and
require('spectre.state_utils').status_line()
)
```
- What if I have remapped keys in my neovim config?

- How to avoid ui break?
```lua
require('spectre').setup({ is_block_ui_break = true })
```
> [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 @@ -338,8 +346,6 @@ Thanks to everyone who sponsors my projects and makes continued development and
- 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: 1 addition & 0 deletions lua/spectre/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ 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: 42 additions & 41 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')
local highlight = require('spectre.highlight')
require('spectre.highlight')
local async = require('plenary.async')

local scheduler = async.util.scheduler
Expand Down Expand Up @@ -189,7 +189,6 @@ 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 @@ -214,42 +213,46 @@ function M.mapping_buffer(bufnr)
end,
desc = "Ensure spectre state when its window is closed by any mean"
})
-- 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
)

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
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,
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."
})
api.nvim_buf_set_keymap(bufnr, 'i', '<CR>', "", map_opt) -- disable ENTER on insert mode, it breaks the UI.
end
end

local function hl_match(opts)
Expand Down Expand Up @@ -714,15 +717,13 @@ 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 2ee3496

Please sign in to comment.