|
|
c28ae4d8cd
|
code function that can insert into both searchList and buffer
|
2026-02-08 02:32:32 +00:00 |
|
|
|
2292c30cd3
|
bookmark checkpoint in refactoring code to call funhction which deletes from both (searchList and buffer), instead of just deleting buffer
|
2026-02-06 20:43:47 +00:00 |
|
|
|
000cf4ab62
|
implement 'yj' motion. (Next: add tests for it.)
|
2026-01-31 12:05:16 +00:00 |
|
|
|
66f1fb0b5e
|
implement 'yk' motion (next: add tests for it)
|
2026-01-13 23:54:48 +00:00 |
|
|
|
e37e04a2a2
|
rename 'NormalDelete.deleteLineBack' function to 'NormalDelete.deleteLineUp' which is clearer ('k' in 'dk' motion means move cursor up one line)
|
2026-01-13 23:40:29 +00:00 |
|
|
|
407f78ce7a
|
fix bug in 'NormalYank.yankRight' function. Instead of calling 'Int.max (endOfLineIdx, high)', we should call 'Int.min (endOfLineIdx, high)' because we are trying to get the smaller number, and not the largest.
|
2026-01-07 06:55:42 +00:00 |
|
|
|
adb8757ed8
|
implemented 'yh' motion (yank left)
|
2026-01-05 10:39:42 +00:00 |
|
|
|
bce2a5a22d
|
finish reimplementing 'di<symbol>' and 'da<symbol>' motions so that they align more closely with the behaviour of Vim. (Todo: test them next)
|
2026-01-02 20:07:36 +00:00 |
|
|
|
886f384490
|
when deleting inside pair, instead of searching either for either chr1 or chr2 and stopping at first match, search instead for openChr and closeChr, and keep an integer tracking what level of nesting we are at. This gives us the behaviour we want, which is to delete the pair at the correct level of nesting. When we encounter openChr, we increment the nesting counter by 1 and continue searching. When we encounter closeChr, if the nesting counter is 0, we return the current index, but if the nesting counter is higher than 0 when encounter closeChr, we decrement the nesting counter by 1 and continue searching.
|
2026-01-02 18:50:04 +00:00 |
|
|
|
6efce2dd67
|
make 'dW' motion use transition function that is specific for deleting, and add a test to ensure that 'dW' does not delete a newline when it is not on a newline character
|
2025-12-27 09:45:11 +00:00 |
|
|
|
742b571b4e
|
amend 'dw' motion in line with previous commit
|
2025-12-27 07:32:22 +00:00 |
|
|
|
204f549c79
|
implement 'daw' motion
|
2025-12-13 03:40:32 +00:00 |
|
|
|
8fdc710db4
|
begin parsing right-arrow in normal mode, for normal mode commands
|
2025-11-25 21:37:09 +00:00 |
|
|
|
d60e8bf7aa
|
add todo note to implement yh/yj/yk/yl motions (yank according to h/j/k/l motions)
|
2025-11-23 23:44:24 +00:00 |
|
|
|
eefe5221ba
|
begin parsing left arrow in normal mode
|
2025-11-23 23:19:31 +00:00 |
|
|
|
7d1272180b
|
remove 'Cursor.tillPrevChr', replacing usages of that function with 'Cursor.toPrevChr'
|
2025-10-19 14:30:26 +01:00 |
|
|
|
60ec24453f
|
reimplement 'yt<char>' motion to use 'Cursor.toNextChr'
|
2025-10-18 19:55:53 +01:00 |
|
|
|
e07f21d6f4
|
remove usages of 'Cursor.toNextChr' and delete it
|
2025-10-18 15:14:41 +01:00 |
|
|
|
ee96419901
|
repace usage of 'Cursor.toNextChr' with 'Cursor.toNextChrNew' ins make-normal-delete.sml
|
2025-10-18 15:07:14 +01:00 |
|
|
|
d7adae374f
|
reimplement 'dt' motion
|
2025-10-18 14:59:37 +01:00 |
|
|
|
5d00da2cbb
|
reimplement 'df' motion as per previous commits, and add a new test for 'df' motion to check that cursor does not land on a 'newline following a non-newline' position, after deleting using 'df<char>'
|
2025-10-18 14:24:16 +01:00 |
|
|
|
239aaacfc5
|
reimplement 't' movement motion the same way that 'f' movement motion was reimplemented in previous commit
|
2025-10-18 14:05:25 +01:00 |
|
|
|
e44eae6d46
|
reimplement 'f' move motion more efficiently, not leaving the LineGap.t data structure while iterating to next count
|
2025-10-18 14:01:06 +01:00 |
|
|
|
111e0cf66d
|
remove usage of concurrent ml, deciding that we prefer to run everything in the main thread instead
|
2025-10-17 23:08:16 +01:00 |
|
|
|
c4c6634d79
|
add 'D' motion, which does the same thing as 'd$' (these two aliases exist in Vim too, to do the same thing)
|
2025-10-16 15:02:45 +01:00 |
|
|
|
a855cecd25
|
implement 'dG' motion (need to test it next)
|
2025-10-16 01:13:14 +01:00 |
|
|
|
5c8e74ac11
|
change type of SEARCH message to take a DFA, instead of a searchString
|
2025-10-08 05:54:19 +01:00 |
|
|
|
06106f5de8
|
remove 'searchString' field from app_type, because the same role is fulfilled by new 'dfa' field
|
2025-10-08 05:40:29 +01:00 |
|
|
|
df346d0a9e
|
add ability to switch to case-sensitive-search-mode using '?' command from normal mode
|
2025-10-08 05:29:05 +01:00 |
|
|
|
fd8385fa81
|
add dfa field to app_type so that we don't rebuild DFA each time we want to execute a search again (like after deleting)
|
2025-10-08 05:02:15 +01:00 |
|
|
|
7f68084398
|
add 'caseSensitive' field to NORMAL_SEARCH_MODE, so that we know what kind of DFA to build
|
2025-10-08 04:53:04 +01:00 |
|
|
|
665497cf46
|
fix all remaining type errors
|
2025-09-29 15:06:33 +01:00 |
|
|
|
e24230834e
|
rename existing 'MakeNormalDelete.deleteLine' function to 'MakeNormalDelete.deleteLineDown', make 'dj' and 'ydj' commands use the renamed function, and add a new 'MakeNormalDelete.deleteLine' function (which has no implementation yet). We do this because we want to distinguish between 'dd' and 'dj' commands, allowing 'dd' to delete to the end of the file despite any count, while stoppinhg 'dj' from deleting the file when on the last line.
|
2025-09-25 04:56:25 +01:00 |
|
|
|
6af2b58b0f
|
make 'dl' motion (including count) call the same function as the 'x' motion, because they have identical behaviour.
|
2025-09-21 00:22:24 +01:00 |
|
|
|
2758b864bc
|
fix bug found by unit test: when deleting leftwards, we should never delete beyond the end of the line
|
2025-09-20 18:04:59 +01:00 |
|
|
|
859860b19f
|
reimplement vi's 'j' motion, and remove the original function for this motion which was in cursor.sml
|
2025-09-19 22:33:37 +01:00 |
|
|
|
4c1a76ae67
|
begin reimplementing motion to move cursor up (vi's 'k' command), although it is in progress and buggy
|
2025-09-19 04:59:40 +01:00 |
|
|
|
dbf05ec8dc
|
refactor Cursor.viH to use DFA
|
2025-09-17 10:45:37 +01:00 |
|
|
|
9ddb5f68d7
|
fix bugs in vi-l-dfa (we want to stop looping when the counter is ~1, because the starting character will likely be final/a not-newline, and we want to loop at least once; also, we want to special case 'twoNewlineState' as a final case which causes us to go backwards by 1 instead of treating 'oneNewlineState' as a final/special case). We also modify other code to use the new vi-l implementation in the program.
|
2025-09-17 03:52:31 +01:00 |
|
|
|
c4fedc6434
|
fix 'Cursor.getLineStartIdx' function, which should look at the left nodes if there is no relevant line in this node
|
2025-09-16 22:09:15 +01:00 |
|
|
|
f1a06f946d
|
add searchScrollColumn to NORMAL_SEARCH_MODE variant, and update and recalculate it where needed
|
2025-09-14 09:50:07 +01:00 |
|
|
|
0a0f723b9b
|
add '<count>yx' function to both yank and delete a specified character
|
2025-09-07 23:39:33 +01:00 |
|
|
|
b7e0bab04a
|
modify dedent functionality to support dedenting multiple lines, acting on count parameter
|
2025-09-07 15:12:34 +01:00 |
|
|
|
345801ea08
|
implement indenting for multiple lines, using the 'count' parameter
|
2025-09-07 14:34:00 +01:00 |
|
|
|
f7960efab1
|
add dedent functionality
|
2025-09-07 14:03:31 +01:00 |
|
|
|
299735f500
|
only update search list if timestamp for search message is greater than the buffer's modified time
|
2025-09-07 13:37:14 +01:00 |
|
|
|
f3c1905c0c
|
when constructing SEARCH message, include time in the message as well. This will enable us to ignore any messages when we have a 'later' state available.
|
2025-09-07 13:24:41 +01:00 |
|
|
|
89c4e85c98
|
add indent-line functionality
|
2025-09-07 13:13:00 +01:00 |
|
|
|
42bd641be4
|
add a function to remove line breaks: the equivalent of Vim's 'J' command.
|
2025-09-06 04:39:53 +01:00 |
|
|
|
6ab3e592ad
|
add yank-delete motions like 'ydw' and so on
|
2025-09-06 03:53:47 +01:00 |
|