Commit Graph

143 Commits

Author SHA1 Message Date
5e9f118b15 fixed two issues related to insertion in search-list.sml. First issue: in top level 'insert' function, we called 'insLeft' if new value is greater than first value on right, and we called 'insRight' in the opposite case; this is backwards. Second issue: in base cases of 'insLeft' and 'insRight', when we have reached the end of one side of the list, we used to return the same list we got back instead of adding the new value to this end of the list; this is now fixed. 2024-11-16 19:51:29 +00:00
09d9945201 add function to build search list from specific range 2024-11-16 12:27:14 +00:00
f2b4f256ec bugfix: in search-list.sml's 'delRightFromHere' function, make sure we preserve the last part of the vector when finish < last 2024-11-16 09:05:47 +00:00
436b3e0d92 simplify and rewrite function 'del' in search-list.sml 2024-11-16 08:33:26 +00:00
d6c59e140e replace text-builder.sml's 'buildCursor' function with a new 'Rect.lerp' function (which is in fcore/rect.sml) 2024-11-15 21:14:43 +00:00
2a2f64f00c add bgVertexBuffer and bgProgram to imperative shell, so we can draw bg and cursor without overlap, and without z-index 2024-11-15 10:26:22 +00:00
d5eb19f8d9 progress drawing spaces within search string, and drawing behind background of search string 2024-11-15 09:50:35 +00:00
025f9d2bf4 fix exception in bin-search.sml, by making sure that forwardLinearSearch always starts at 0 or more 2024-11-15 09:24:48 +00:00
c0c1a7c885 refactor app-update.sml to pass additional parameters to TextBuilder.build 2024-11-15 08:24:48 +00:00
91688441cf refactor fcore/text-builder.sml to take non-changing parameters as records, for brevity 2024-11-15 06:43:14 +00:00
df9c0e3b51 break out of infinite loop in build-search-list.sml's 'helpBuild' function, by passing 'matchedIdx + 1' to tail call, and return correct matchedIdx value from 'helpNextMatch' function by adding 1 rather than subtracting 2024-11-15 06:04:11 +00:00
13d6d51fe9 when buildinng search list, also save searchString into app 2024-11-15 05:40:57 +00:00
cac0d02fab initial implementation of building search list 2024-11-15 05:37:53 +00:00
f279dc0937 make 'de', 'dE', 'dj' and 'dk' commands work similarly to vi (details are in comments) 2024-11-14 08:57:31 +00:00
cae9f19787 add search list to app type 2024-11-14 08:12:27 +00:00
91663a6cae done implementing search list 2024-11-13 12:54:47 +00:00
11df1a6bcd done implementing delete function in SearchList 2024-11-13 03:49:12 +00:00
3b81d087f0 implement function to go specific number in search-list.sml 2024-11-12 07:57:36 +00:00
1bae34a067 done with insert into search list 2024-11-12 03:15:04 +00:00
8bf0b64ef3 implement insRight function in search-list.sml 2024-11-12 03:05:14 +00:00
54090ccf64 add yank functionality in imperative shell 2024-11-11 05:27:20 +00:00
5294da6780 use 'Cursor.clipIdx' in app-update.sml's 'helpDelete' and 'helpDeleteLine' functions, to ensure we never delete last line (unix text files always end with \n) 2024-11-10 07:57:49 +00:00
6e4f6b58b9 done with 'parseDelete' functionality in app-update.sml': have all the delete commands I would like 2024-11-10 07:51:12 +00:00
58a9c2ec69 add functionality for commands: 'dgg' (delete from cursor to start of buffer), 'dge' (delete from cursor to the end of the previous word) and 'dgE' (delete from cursor to the end of the previous WORD) 2024-11-10 07:34:30 +00:00
bc27925e75 similar loop optimisations described in previous commit to app-update.sml's 'helpDeleteToChr' function 2024-11-09 10:49:54 +00:00
fed827a6c9 same loop optimisation mentioned in previous commit to app-update.sml's 'helpDelete' function 2024-11-09 10:41:37 +00:00
dece4d4d83 break out of loop early in 'helpMove' and 'helpMoveToChr' functions, in case where calling 'fMove' returned the same value as before 2024-11-09 10:11:51 +00:00
cde4dbc67f reduce unnecessary intermediary allocations in app-update.sml's 'helpDeleteToChr' function, similarly to previous commit 2024-11-09 09:59:12 +00:00
5804620846 small optimisation in app-update.sml's 'helpDelete' function, reducing number of allocations by accumulating otherIdx, and deleting from buffer only once loop is over 2024-11-09 09:39:03 +00:00
19aaae72f3 add functionality to delete to chr (equivalent of Vi commands starting with 'df' like 'dfe' to delete to the next 'e', and also add equivalent of 'dFe' to delete backwards) 2024-11-09 09:24:14 +00:00
faff848cb4 in cursor.sml's 'helpTillPrevChr' function, properly handle edge case where graphical chr is followed by multiple line breaks 2024-11-09 06:33:32 +00:00
d4d0236dab amend cursor.sml's 'helpTillNextChr' function to work with new line break scheme, and use it to implement 'delete till' functionality starting with 'dt' (for example, 'dta' deletes till 'a', 'dts'detetes till 's', etc.) 2024-11-09 05:35:32 +00:00
e4f46295d4 improvement to app-update.sml's 'deleteEndOfLine' function, where we rely on 'helpRemoveChr' function to handle conditional 'go backwards' logic, and we also make sure not to do anything in 'deleteEndOfLine' if we are at a \n 2024-11-09 03:51:39 +00:00
267efae4cc add another custom delete function ('deleteToFirstNonSpaceChr', which can be triggered with command d^ and it works fine on testing 2024-11-08 22:19:57 +00:00
ae80ef5f21 code function to delete to end of line with command 'd$' (custom function needed because it did not work as expected to pass 'Cursor.viDlr' as a higher order function as with other motions) 2024-11-08 21:52:04 +00:00
74822d1541 rename cursor.sml's 'clipIdxAfterDelete' function to 'clipIdx', simplify it, and use it in other functions too 2024-11-08 20:43:36 +00:00
f02a20c6ea clip idx after delete if necessary 2024-11-08 18:47:26 +00:00
88f4ff6057 progress with delete 2024-11-08 15:19:16 +00:00
6e66d4c968 done with imperative shell/ffi aspect of sending KEY_ESC to update thread when that action has occurred 2024-11-08 09:46:01 +00:00
a4dea7626f add KEY_ESC message type, and refactor app-update.sml to use it (always calls 'clearMode' function which always sets the app to normal mode, and sets the command strnig to empty) 2024-11-08 09:30:57 +00:00
ff38e39deb do not use 'clearMode' in helpDeleteChr function, because we have 'buffer' and 'cursorIdx' parameters we would like to add to the app state before exiting the loop. Instead, go to end of loop by passing 'count' of 0 2024-11-08 04:25:33 +00:00
36763fce94 add count to 'x' command, allowing [count] chars to be deleted 2024-11-08 04:21:05 +00:00
81c516e907 fix very minor issue in cursor.sml's 'helpViL' function (previously returned cursorIdx when non-line breaks is followed by non-line break, but now return cursorIdx + 1 instead which is the correct behaviour, because we want to move the cursor rightwards one position in that case 2024-11-07 21:07:11 +00:00
fdb6e0292a fully done amending 'getCursorColumn' in cursor.sml it seems, because all the inputs I throw at it give the expected results 2024-11-07 21:00:56 +00:00
63f2945334 restore triple-line checking to 'startViK' in cursor.sml, as it seems safer 2024-11-07 20:51:02 +00:00
a77003e348 seem to have viK and viJ fixed for the moment, except when I delete from the first or second line with 'x' (deleting from other lines does not seem to make a difference) 2024-11-07 12:59:03 +00:00
a35c0803fb fix 'getStartLineBefore' in text-window.sml, where we always decrement 'lineNum' variable when encountering \n, and use 'Int.max (lineNum - 1, 0)' to clip lineNum to 0 if it happens to go below 0 2024-11-07 11:57:32 +00:00
c07afee77f simplify one part of cursor.sml's 'startViK' function, by calling 'helpVi0' rather than 'helpViK' when we know previous char is \n 2024-11-07 11:46:30 +00:00
9f0982ad91 simplify viK and especially startViK in cursor.sml, by only checking (strIdx - 1) and (strIdx - 2) 2024-11-06 19:47:14 +00:00
6b9cf8dbc2 amend problem with TextWindow.getStartLineBefore, where we were not following rule mentioned in previous commits to not count (graphical-chr -> \n) as line break 2024-11-06 12:46:53 +00:00