Commit 40d8da1
authored
vi-mode: add gg/G motions and fix ^ motion behavior (#953)
* feat(vi-mode): add `gg` and `G` motion
There is a bit of divergence in behaviour of `G` motion of reedline and
vim. In vim, `G` takes the cursor to the first character of the last
line. In reedline, it tales to the very last character of the buffer
instead.
Also when using these motion with a command, e.g. `c`, `d` and `y`,
there are some inconsistency in handling the new line character.
Added test case for `dgg`, `dG`, `cgg` and `cG` command.
* fix(vi-mode): fix `^` motion
Previously the `^` motion was behaving like the `0` motion which is to
move the cursor to the start of the line. But in vim, the `^` motion is
different from `0` motion. In vim `^` moved the cursor to the first
non-blank character of the line. (See `:h ^`)
Updated test case for `d^` and `c^` command since it has different
behaviour now.
* make dgg and dG not leave empty line
* use if expressions instead of converting bool to usize
* rename leave_blank_line to Value in the Display impl for EditCommand
Although I am not sure if this is a good idea1 parent 4c16687 commit 40d8da1
File tree
6 files changed
+249
-3
lines changed- src
- core_editor
- edit_mode/vi
6 files changed
+249
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
58 | 62 | | |
59 | 63 | | |
60 | 64 | | |
| |||
86 | 90 | | |
87 | 91 | | |
88 | 92 | | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
89 | 96 | | |
| 97 | + | |
90 | 98 | | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
91 | 102 | | |
92 | 103 | | |
93 | 104 | | |
| |||
127 | 138 | | |
128 | 139 | | |
129 | 140 | | |
| 141 | + | |
130 | 142 | | |
| 143 | + | |
131 | 144 | | |
| 145 | + | |
132 | 146 | | |
133 | 147 | | |
134 | 148 | | |
| |||
308 | 322 | | |
309 | 323 | | |
310 | 324 | | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
311 | 330 | | |
312 | 331 | | |
313 | 332 | | |
| |||
357 | 376 | | |
358 | 377 | | |
359 | 378 | | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
360 | 402 | | |
361 | 403 | | |
362 | 404 | | |
| |||
368 | 410 | | |
369 | 411 | | |
370 | 412 | | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
371 | 421 | | |
372 | 422 | | |
373 | 423 | | |
| |||
376 | 426 | | |
377 | 427 | | |
378 | 428 | | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
379 | 450 | | |
380 | 451 | | |
381 | 452 | | |
| |||
876 | 947 | | |
877 | 948 | | |
878 | 949 | | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
879 | 964 | | |
880 | 965 | | |
881 | 966 | | |
| |||
889 | 974 | | |
890 | 975 | | |
891 | 976 | | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
892 | 986 | | |
893 | 987 | | |
894 | 988 | | |
895 | 989 | | |
896 | 990 | | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
897 | 1000 | | |
898 | 1001 | | |
899 | 1002 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
116 | 128 | | |
117 | 129 | | |
118 | 130 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
347 | 350 | | |
348 | 351 | | |
349 | 352 | | |
350 | 353 | | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
351 | 364 | | |
352 | 365 | | |
353 | 366 | | |
| |||
399 | 412 | | |
400 | 413 | | |
401 | 414 | | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
402 | 418 | | |
403 | 419 | | |
404 | 420 | | |
405 | 421 | | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
406 | 432 | | |
407 | 433 | | |
408 | 434 | | |
| |||
453 | 479 | | |
454 | 480 | | |
455 | 481 | | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
456 | 485 | | |
457 | 486 | | |
458 | 487 | | |
459 | 488 | | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
460 | 495 | | |
461 | 496 | | |
462 | 497 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
59 | 63 | | |
60 | 64 | | |
61 | 65 | | |
| |||
108 | 112 | | |
109 | 113 | | |
110 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
111 | 130 | | |
112 | 131 | | |
113 | 132 | | |
| |||
131 | 150 | | |
132 | 151 | | |
133 | 152 | | |
| 153 | + | |
134 | 154 | | |
| 155 | + | |
| 156 | + | |
135 | 157 | | |
136 | 158 | | |
137 | 159 | | |
| |||
191 | 213 | | |
192 | 214 | | |
193 | 215 | | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
194 | 221 | | |
195 | 222 | | |
196 | 223 | | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
197 | 230 | | |
198 | 231 | | |
199 | 232 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
541 | 541 | | |
542 | 542 | | |
543 | 543 | | |
544 | | - | |
| 544 | + | |
545 | 545 | | |
546 | 546 | | |
547 | 547 | | |
548 | 548 | | |
549 | 549 | | |
| 550 | + | |
| 551 | + | |
550 | 552 | | |
551 | 553 | | |
552 | | - | |
| 554 | + | |
553 | 555 | | |
554 | 556 | | |
555 | 557 | | |
556 | 558 | | |
557 | 559 | | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
558 | 571 | | |
559 | 572 | | |
560 | 573 | | |
| |||
0 commit comments