summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJohannes Altmanninger <aclopte@gmail.com>2023-06-24 19:49:02 +0200
committerJohannes Altmanninger <aclopte@gmail.com>2023-07-20 09:18:23 +0200
commit12310418b0a577fc0b60f0aae60503462073eb75 (patch)
tree7414d018f82c65dff626df1d18c51dcb4015f7d0 /test
parente3122ab2c19248b590cb0143610439ec050766b7 (diff)
Allow map/unmap during mapping execution
Commits e49c0fb04 (unmap: fail if the mapping is currently executing, 2023-05-14) 42be0057a (map: fail if key is currently executing, 2023-06-24) fixed potential use-after-free issues. By doing so, it broke configurations that in practice have not triggered any crashes [1] [2]. For example with, set -remove global autocomplete insert hook global InsertCompletionShow .* %{ map window insert <esc> <c-o> } hook global InsertCompletionHide .* %{ unmap window insert <esc> <c-o> } The execution of the <esc> mapping triggers InsertCompletionHide fails at unmapping. This seems legit and I don't see an obvious alternative way to write it (InsertIdle would not be correct though it would work in practice). Fix the regression by allowing map and unmap again while keeping the mappings alive until they have finished executing. Applying map/unmap immediately seems like the most obvious semantics. Alternatively, we could apply them in between key presses. [1]: <https://github.com/kak-lsp/kak-lsp/issues/689> [2]: <https://github.com/alexherbo2/auto-pairs.kak/issues/60>
Diffstat (limited to 'test')
-rw-r--r--test/regression/4896-remap-executing-mapping/rc2
-rw-r--r--test/regression/4896-unmap-executing-mapping/out2
2 files changed, 2 insertions, 2 deletions
diff --git a/test/regression/4896-remap-executing-mapping/rc b/test/regression/4896-remap-executing-mapping/rc
index 56624d18..b61a277e 100644
--- a/test/regression/4896-remap-executing-mapping/rc
+++ b/test/regression/4896-remap-executing-mapping/rc
@@ -1,3 +1,3 @@
-try %{ map global user s %exp{:source %%{%val{source}}<ret>} -docstring "re-source my kakrc" }
+map global user s %exp{:source %%{%val{source}}<ret>} -docstring "re-source my kakrc"
declare-option int source_count
set-option -add global source_count 1
diff --git a/test/regression/4896-unmap-executing-mapping/out b/test/regression/4896-unmap-executing-mapping/out
index 190a1803..9f358a4a 100644
--- a/test/regression/4896-unmap-executing-mapping/out
+++ b/test/regression/4896-unmap-executing-mapping/out
@@ -1 +1 @@
-123
+123456