vim: Fix relative line motion
Before this change up and down were in display co-ordinates, after this change they are in fold coordinates (which matches the vim behaviour). To make this work without causing usabliity problems, a bunch of extra keyboard shortcuts now work: - vim: `z {o,c}` to open,close a fold - vim: `z f` to fold current visual selection - vim: `g {j,k,up,down}` to move up/down a display line - vim: `g {0,^,$,home,end}` to get to start/end of a display line Fixes: zed-industries/community#1562
This commit is contained in:
parent
0280d5d010
commit
20aa2a4c54
13 changed files with 580 additions and 67 deletions
23
crates/vim/test_data/test_folds.json
Normal file
23
crates/vim/test_data/test_folds.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{"SetOption":{"value":"foldmethod=manual"}}
|
||||
{"Put":{"state":"fn boop() {\n ˇbarp()\n bazp()\n}\n"}}
|
||||
{"Key":"shift-v"}
|
||||
{"Key":"j"}
|
||||
{"Key":"z"}
|
||||
{"Key":"f"}
|
||||
{"Key":"escape"}
|
||||
{"Key":"g"}
|
||||
{"Key":"g"}
|
||||
{"Get":{"state":"ˇfn boop() {\n barp()\n bazp()\n}\n","mode":"Normal"}}
|
||||
{"Key":"j"}
|
||||
{"Key":"j"}
|
||||
{"Get":{"state":"fn boop() {\n barp()\n bazp()\nˇ}\n","mode":"Normal"}}
|
||||
{"Key":"2"}
|
||||
{"Key":"k"}
|
||||
{"Get":{"state":"ˇfn boop() {\n barp()\n bazp()\n}\n","mode":"Normal"}}
|
||||
{"Key":"down"}
|
||||
{"Key":"y"}
|
||||
{"Key":"y"}
|
||||
{"ReadRegister":{"name":"\"","value":" barp()\n bazp()\n"}}
|
||||
{"Key":"z"}
|
||||
{"Key":"o"}
|
||||
{"Get":{"state":"fn boop() {\nˇ barp()\n bazp()\n}\n","mode":"Normal"}}
|
26
crates/vim/test_data/test_wrapped_lines.json
Normal file
26
crates/vim/test_data/test_wrapped_lines.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{"SetOption":{"value":"wrap"}}
|
||||
{"SetOption":{"value":"columns=12"}}
|
||||
{"Put":{"state":"tˇwelve char twelve char\ntwelve char\n"}}
|
||||
{"Key":"j"}
|
||||
{"Get":{"state":"twelve char twelve char\ntˇwelve char\n","mode":"Normal"}}
|
||||
{"Key":"k"}
|
||||
{"Get":{"state":"tˇwelve char twelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"j"}
|
||||
{"Get":{"state":"twelve char tˇwelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"j"}
|
||||
{"Get":{"state":"twelve char twelve char\ntˇwelve char\n","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"k"}
|
||||
{"Get":{"state":"twelve char tˇwelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"^"}
|
||||
{"Get":{"state":"twelve char ˇtwelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"^"}
|
||||
{"Get":{"state":"ˇtwelve char twelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"g"}
|
||||
{"Key":"$"}
|
||||
{"Get":{"state":"twelve charˇ twelve char\ntwelve char\n","mode":"Normal"}}
|
||||
{"Key":"$"}
|
||||
{"Get":{"state":"twelve char twelve chaˇr\ntwelve char\n","mode":"Normal"}}
|
Loading…
Add table
Add a link
Reference in a new issue