Commit Graph

42 Commits

Author SHA1 Message Date
0315bd6550 rewrite Cursor.viH for new line-break-skip scheme, as mentioned in previous commit 2024-11-05 19:44:49 +00:00
b0a37c5c56 new task: rewrite basic cursor.sml functions (h, j, k, l) to look for 'is line break preceded by non-line break?' rather than 'is there a double line break?' because the second question which is already implemented has buggy behaviour on triple line breaks, where cursor does not go to the place user expects. Currently, on Cursor.viL has been rewritten to match the first question. 2024-11-05 13:14:52 +00:00
9df6f92a33 progress with equivalent of vi's 'x' command 2024-11-05 12:38:01 +00:00
66d4346c74 improvement in Cursor.getLineStartIdx when going to last line in buffer 2024-11-04 02:46:02 +00:00
b368619df3 add functionality to go to specific line in buffer 2024-11-02 13:59:55 +00:00
f7b755d6a6 fix minor bug in cursor.sml (we checked if strPos is equal to 'String.size str - 1' but then accessed strPos + 1, which makes our bound check useless and may cause an exception. Instead, check 'strPos < String.size str - 1' 2024-11-01 03:35:12 +00:00
25f06b1f9a fix minor bug in Cursor.matchPair fuunction; depending on chr at strIdx, we might want to iterate on the leftStrings or on the rightStrings. Before, we iterated on the rightStrings only, but now we iterate on whichever is appropriate 2024-10-31 11:50:18 +00:00
fe317ca220 add missing implementation of Cursor.matchPair when strIdx is in tl 2024-10-31 11:19:10 +00:00
553d4605e7 add implementation of matching cursor pairs 2024-10-31 11:07:52 +00:00
deab30c46d add equivalent of vi's 'ge' and 'gE' commands 2024-10-28 06:52:58 +00:00
22f7c7f8c3 return nonLastLine from helpTillPrevChr function 2024-10-27 02:45:15 +00:00
44af1441cf add equivalent functionality of vi's 'T' command 2024-10-26 22:11:52 +01:00
8ef0365e20 a little refactoring 2024-10-26 21:56:11 +01:00
22ca7c5ed4 add equivalent of vi's 'F' 2024-10-26 21:21:33 +01:00
01213fb2fb fix bug with tillNextChr which would place cursor on a newline 2024-10-26 16:20:24 +01:00
62a9aaaaab progress with moving cursor to specific char (vi's 't' command and vi's 'f' command) 2024-10-26 10:47:45 +01:00
17a69720fd add function to go to first non-space character in line 2024-10-25 21:44:46 +01:00
7a62ad3afc pass higher order function to word motions, for less code duplication 2024-10-25 21:27:58 +01:00
a198840961 add WORD motions (as opposed to word motions) 2024-10-25 21:01:48 +01:00
c2ea6e5e04 just formatting cursor.sml 2024-10-25 15:47:39 +01:00
b79a8696f5 refactor many functions in cursor.sml so they don't need to be mutually recursive 2024-10-25 15:25:39 +01:00
8b3bd97af3 fully remove 'word_type' datatype from cursor.sml 2024-10-24 13:44:12 +01:00
5534fd3645 refactor another cursor.sml function 2024-10-24 13:30:02 +01:00
50a0a3e31b begin preparation to remove 'word_type' datatype in cursor.sml, which will simplify implementation of word motions 2024-10-24 13:13:49 +01:00
1f9b01c858 implement equivalent of vi's 'e' command 2024-10-24 12:29:43 +01:00
15ff3a111a implement equivalent of vi's 'b' cursor motion 2024-10-24 06:26:40 +01:00
80cdcdccd6 implement nextWord in cursor.sml (vi's lowercase w) 2024-10-23 04:31:34 +01:00
a454524ecc reimplement part of non-recursive start function 'viK' in cursor.sml 2024-10-22 09:46:29 +01:00
dd71dda9f2 in start of cursor.sml's viK function, use vi0 function if cursor is at newline, so there's no need to worry about or track column 2024-10-22 07:06:16 +01:00
b22222cf5d implement vi0 and viDlr (viDlr = function called when pressing $), which both work fine 2024-10-21 03:04:47 +01:00
e08f2c4f77 add implementation of viK, completing hjkl movement keys 2024-10-21 01:34:54 +01:00
d8e1c9d0fd in cursor.sml's 'viJ' function, make sure to call helpViJString with nest str hd/tl, when strIdx is in the strTl 2024-10-20 21:58:58 +01:00
6b3d322c1c progress with viJ to move cursor downwards 2024-10-20 21:30:06 +01:00
47f4d452fe amend error in cursor.sml's 'getCursorColumn' function, where we may need to check tail of string to start convert cursorIdx to relative strIdx 2024-10-19 23:04:26 +01:00
e0f44fc8ea better handling of double linebreaks in cursor.sml's viH function 2024-10-19 07:24:27 +01:00
7fd59c734a add function to retrieve column that cursor is on, relative to line 2024-10-19 07:03:32 +01:00
92b834427c code 'viH' function to move leftwards by one char 2024-10-18 00:40:43 +01:00
19073cb56c improve code to move rightwards in cursor.sml (making it clearer with comments), and improve code to draw cursor at newline in text=builder.sml 2024-10-17 08:40:28 +01:00
0299a9e6b2 draw cursor at newline linebreaks (only \n though and not \r\n) 2024-10-17 06:25:43 +01:00
8fb362ba8b handle \r\n pair in 'viL' function 2024-10-17 04:03:45 +01:00
766ab6787c in viL function, use 'cursorIdx + 1' instead of 'bufferIdx + ...' because what we want is to increment the cursor by one index, rather than to move the cursor to the end of the hd 2024-10-17 03:17:57 +01:00
428e5f2ecd complete implementation of rightwards navigation (viL) 2024-10-17 02:57:26 +01:00