Add an InsertDelete hook
This commit is contained in:
parent
fa7f29a120
commit
2cfe3cae36
|
@ -1415,6 +1415,8 @@ existing hooks are:
|
||||||
* `InsertKey`: A key is received in insert mode, the key is used for filtering
|
* `InsertKey`: A key is received in insert mode, the key is used for filtering
|
||||||
* `InsertChar`: A character is inserted in insert mode, the character is used
|
* `InsertChar`: A character is inserted in insert mode, the character is used
|
||||||
for filtering
|
for filtering
|
||||||
|
* `InsertDelete`: A character is deleted in insert mode, the character deleted
|
||||||
|
by the main selection is used for filtering
|
||||||
* `InsertMove`: The cursor moved (without inserting) in insert mode, the key
|
* `InsertMove`: The cursor moved (without inserting) in insert mode, the key
|
||||||
that triggered the move is used for filtering
|
that triggered the move is used for filtering
|
||||||
* `WinCreate`: A window was created, the filtering text is the buffer name
|
* `WinCreate`: A window was created, the filtering text is the buffer name
|
||||||
|
|
|
@ -68,6 +68,10 @@ Default hooks
|
||||||
a character is received in insert mode, the character is used for
|
a character is received in insert mode, the character is used for
|
||||||
filtering
|
filtering
|
||||||
|
|
||||||
|
*InsertDelete*::
|
||||||
|
a character is deleted in insert mode, the character deleted by
|
||||||
|
the main selection is used for filtering
|
||||||
|
|
||||||
*InsertMove*::
|
*InsertMove*::
|
||||||
the cursor moved (without inserting) in insert mode, the key that
|
the cursor moved (without inserting) in insert mode, the key that
|
||||||
triggered the move is used for filtering
|
triggered the move is used for filtering
|
||||||
|
|
|
@ -761,7 +761,7 @@ const CommandDesc remove_highlighter_cmd = {
|
||||||
static constexpr auto hooks = {
|
static constexpr auto hooks = {
|
||||||
"BufCreate", "BufNewFile", "BufOpenFile", "BufClose", "BufWritePost",
|
"BufCreate", "BufNewFile", "BufOpenFile", "BufClose", "BufWritePost",
|
||||||
"BufWritePre", "BufOpenFifo", "BufCloseFifo", "BufReadFifo", "BufSetOption",
|
"BufWritePre", "BufOpenFifo", "BufCloseFifo", "BufReadFifo", "BufSetOption",
|
||||||
"InsertBegin", "InsertChar", "InsertEnd", "InsertIdle", "InsertKey",
|
"InsertBegin", "InsertChar", "InsertDelete", "InsertEnd", "InsertIdle", "InsertKey",
|
||||||
"InsertMove", "InsertCompletionHide", "InsertCompletionShow",
|
"InsertMove", "InsertCompletionHide", "InsertCompletionShow",
|
||||||
"KakBegin", "KakEnd", "FocusIn", "FocusOut", "RuntimeError",
|
"KakBegin", "KakEnd", "FocusIn", "FocusOut", "RuntimeError",
|
||||||
"NormalBegin", "NormalEnd", "NormalIdle", "NormalKey", "RawKey",
|
"NormalBegin", "NormalEnd", "NormalIdle", "NormalKey", "RawKey",
|
||||||
|
|
|
@ -1067,8 +1067,14 @@ public:
|
||||||
auto pos = sel.cursor();
|
auto pos = sel.cursor();
|
||||||
sels.emplace_back(buffer.char_prev(pos));
|
sels.emplace_back(buffer.char_prev(pos));
|
||||||
}
|
}
|
||||||
|
auto& main = context().selections().main();
|
||||||
|
String main_char = buffer.string(buffer.char_prev(main.cursor()),
|
||||||
|
main.cursor());
|
||||||
if (not sels.empty())
|
if (not sels.empty())
|
||||||
SelectionList{buffer, std::move(sels)}.erase();
|
SelectionList{buffer, std::move(sels)}.erase();
|
||||||
|
|
||||||
|
if (not main_char.empty())
|
||||||
|
context().hooks().run_hook("InsertDelete", main_char, context());
|
||||||
}
|
}
|
||||||
else if (key == Key::Delete)
|
else if (key == Key::Delete)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user