vim: Support gn command and remap gn to gl (#9982)
Release Notes: - Resolves #4273 @algora-pbc /claim #4273 This is a work-in-progress. The process for `gn` command is: - maintain updated vim.workspace_state.search.initial_query - modify editor.select_next_state with vim.workspace_state.search.initial_query - use editor.select_next() - merge selections - set editor.select_next_state to previous state To make this possible, several private members and editor structures are made public. `gN` is not yet implemented and the cursor still does not jump to the next selection in the first use. Maybe there is an better way to do this? --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
fe4b345603
commit
bf9b443b4a
8 changed files with 311 additions and 89 deletions
14
crates/vim/test_data/test_cgn_repeat.json
Normal file
14
crates/vim/test_data/test_cgn_repeat.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{"Put":{"state":"aaˇ aa aa aa aa"}}
|
||||
{"Key":"/"}
|
||||
{"Key":"a"}
|
||||
{"Key":"a"}
|
||||
{"Key":"enter"}
|
||||
{"Get":{"state":"aa ˇaa aa aa aa","mode":"Normal"}}
|
||||
{"Key":"c"}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Key":"x"}
|
||||
{"Key":"escape"}
|
||||
{"Get":{"state":"aa ˇx aa aa aa","mode":"Normal"}}
|
||||
{"Key":"."}
|
||||
{"Get":{"state":"aa x ˇx aa aa","mode":"Normal"}}
|
14
crates/vim/test_data/test_dgn_repeat.json
Normal file
14
crates/vim/test_data/test_dgn_repeat.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{"Put":{"state":"aaˇ aa aa aa aa"}}
|
||||
{"Key":"/"}
|
||||
{"Key":"a"}
|
||||
{"Key":"a"}
|
||||
{"Key":"enter"}
|
||||
{"Get":{"state":"aa ˇaa aa aa aa","mode":"Normal"}}
|
||||
{"Key":"d"}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Get":{"state":"aa ˇ aa aa aa","mode":"Normal"}}
|
||||
{"Key":"."}
|
||||
{"Get":{"state":"aa ˇ aa aa","mode":"Normal"}}
|
||||
{"Key":"."}
|
||||
{"Get":{"state":"aa ˇ aa","mode":"Normal"}}
|
39
crates/vim/test_data/test_gn.json
Normal file
39
crates/vim/test_data/test_gn.json
Normal file
|
@ -0,0 +1,39 @@
|
|||
{"Put":{"state":"aaˇ aa aa aa aa"}}
|
||||
{"Key":"/"}
|
||||
{"Key":"a"}
|
||||
{"Key":"a"}
|
||||
{"Key":"enter"}
|
||||
{"Get":{"state":"aa ˇaa aa aa aa","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Get":{"state":"aa «aaˇ» aa aa aa","mode":"Visual"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Get":{"state":"aa «aa aaˇ» aa aa","mode":"Visual"}}
|
||||
{"Key":"escape"}
|
||||
{"Key":"d"}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Get":{"state":"aa aa ˇ aa aa","mode":"Normal"}}
|
||||
{"Put":{"state":"aaˇ aa aa aa aa"}}
|
||||
{"Key":"/"}
|
||||
{"Key":"a"}
|
||||
{"Key":"a"}
|
||||
{"Key":"enter"}
|
||||
{"Get":{"state":"aa ˇaa aa aa aa","mode":"Normal"}}
|
||||
{"Key":"3"}
|
||||
{"Key":"g"}
|
||||
{"Key":"n"}
|
||||
{"Get":{"state":"aa aa aa «aaˇ» aa","mode":"Visual"}}
|
||||
{"Put":{"state":"aaˇ aa aa aa aa"}}
|
||||
{"Key":"/"}
|
||||
{"Key":"a"}
|
||||
{"Key":"a"}
|
||||
{"Key":"enter"}
|
||||
{"Get":{"state":"aa ˇaa aa aa aa","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"shift-n"}
|
||||
{"Get":{"state":"aa «ˇaa» aa aa aa","mode":"Visual"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"shift-n"}
|
||||
{"Get":{"state":"«ˇaa aa» aa aa aa","mode":"Visual"}}
|
Loading…
Add table
Add a link
Reference in a new issue