|
|
bf18e143c7
|
refactor text builder to use z-index for creating text vector
|
2025-09-11 02:02:41 +01:00 |
|
|
|
0f78a25382
|
add z-index parameter to cursors, and refactor code to use them
|
2025-09-11 01:53:13 +01:00 |
|
|
|
2e0f749229
|
adjust imperative shell to use xyz coordinates for position, instead of simply xy; need to ensure the functional core code outputs a vector in this format too
|
2025-09-11 01:43:23 +01:00 |
|
|
|
781691060c
|
begin refactoring code to use a single vertex buffer for all shapes
|
2025-09-11 01:31:19 +01:00 |
|
|
|
62e5777f75
|
pull in update to cozette-vector, which will allow us to use the z-index for layering shapes below/on top of each other
|
2025-09-10 12:30:10 +01:00 |
|
|
|
fee8ba5207
|
set preemptive scheduling time to change threads every 555 microseconds, instead of every 20 milliseoncds (which was the default)
|
2025-09-10 01:58:35 +01:00 |
|
|
|
95a07bcd92
|
rename 'UpdateThread' structure to 'Updater', because it is no longer a separate thread
|
2025-09-10 01:44:25 +01:00 |
|
|
|
6961a76471
|
done merging draw thread with update thread
|
2025-09-10 01:41:59 +01:00 |
|
|
|
dc3009bf54
|
create separate mailbox structures for draw and input messages, because our plan is to: 'handle input + drawing on a single thread'
|
2025-09-10 01:04:56 +01:00 |
|
|
|
0a0f723b9b
|
add '<count>yx' function to both yank and delete a specified character
|
2025-09-07 23:39:33 +01:00 |
|
|
|
fd303c0f7d
|
reimplement part of 'deleteToEndOfLine' function in make-normal-delete.sml, so that it doesn't rely on the 'helpRemoveChr' function, and so we can delete the 'helpRemoveChr' function.
|
2025-09-07 23:24:31 +01:00 |
|
|
|
494c702ab6
|
add commends to clarify 'removeChr' logic.
|
2025-09-07 23:06:52 +01:00 |
|
|
|
e2acdd90f4
|
new implementation for removing characters with 'x', which is simpler than previous implementation as well
|
2025-09-07 22:30:39 +01:00 |
|
|
|
a037211763
|
add a new test validating that the cursor does not move when cursor is on an empty line
|
2025-09-07 21:09:20 +01:00 |
|
|
|
11212430f4
|
fix bug with ViDlrDfa.next: we previously did not consider the case of cursor starts on a line containing nothing but a blank \n newline. We consider this now, returning the same index when it occurs.
|
2025-09-07 20:59:13 +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 |
|
|
|
9ba3e8464b
|
add backtract functionality for range search as well
|
2025-09-06 23:05:11 +01:00 |
|
|
|
435c520955
|
add backtracking functionality to search; when we find a partial but incomplete match, we want to start looking for a match from ('idx + 1'), where 'idx' is the index we started this failed search at.
|
2025-09-06 22:53:07 +01:00 |
|
|
|
8d241366a1
|
handle edge cases in line-break removal function ('J' command). If the newline we find is the last character in the file, we don't delete it, because of Unix convention that text files always end with newlines.
|
2025-09-06 10:05:06 +01:00 |
|
|
|
764c5367eb
|
remove unneeded todo comment
|
2025-09-06 04:53:08 +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 |
|
|
|
caf43d0864
|
functorise NormalDelete structure so we can use share the same deletion logic and code for NormalDelete and NormalYankDelete (the latter which is not yet implemented)
|
2025-09-06 03:43:45 +01:00 |
|
|
|
5bfafe3987
|
replace redundant code (which matched semantics of a newly added function) with a function call.
|
2025-09-06 03:07:01 +01:00 |
|
|
|
0dede58ca0
|
done parsing yank-around
|
2025-09-06 02:59:05 +01:00 |
|
|
|
fb6cab7d0d
|
fix minor bug when deleting around (with motion like da( or da< or da) or da>). The bug was that, if the last character we delete with the highest index is also the last character at the end of this line, we deleted the range properly but placed the cursor at a linebreak. In this case, the cursor is meant to be a single character before the line break, and after this commit, we have this desired behaviour.
|
2025-09-06 02:46:49 +01:00 |
|
|
|
0506cf6176
|
done implementing 'yankInside' functions and functionality.
|
2025-09-06 02:27:01 +01:00 |
|
|
|
9369bbed93
|
in normal mode, when we receive an event which we don't want to handle (like enter), we clear the app's mode and command history instead of simply returning the same app unmodified. This fixes a bug: say we pres 'f' to go to a character and then press enter. Before this commit, pressing a character after that 'enter' will go to that character. This is contrary to Vim, which resets the command history on an invalid command, and now we reset the command history too.
|
2025-09-06 01:40:32 +01:00 |
|
|
|
58e74afffb
|
add function to yank inside WORD
|
2025-09-06 01:15:45 +01:00 |
|
|
|
73ec4e7578
|
bug fix when yanking or deleting inside a word (we should not clip 'high' value, and we should search for end of word strictly); this handles cases like when we only have one character in the buffer, or an empty buffer
|
2025-09-06 01:12:59 +01:00 |
|
|
|
b9332bcd94
|
fix bugs related to deleting ('dge' and 'dgE' motions should also delete the letter which the cursor is currently at, and now they do)
|
2025-09-06 00:02:37 +01:00 |
|
|
|
76e14ea491
|
add functions to yank to end-of-previous-character, and to yank from current line to start of buffer
|
2025-09-05 23:46:10 +01:00 |
|
|
|
367e691349
|
implement additional non-terminal yank commands
|
2025-09-04 00:50:16 +01:00 |
|
|
|
e1a15ab1d0
|
append non-terminal characters after string in yank
|
2025-09-02 22:41:34 +01:00 |
|
|
|
6cd038cf81
|
done refactoring terminal yank commands
|
2025-09-02 12:46:30 +01:00 |
|
|
|
d7f69574af
|
a bit of refactoring
|
2025-09-02 12:39:50 +01:00 |
|
|
|
d135526386
|
refactoring, and fix bug in 'y^' motion. (When cursor is after first-non-space-character, copy from first-non-space-character to cursor. Otherwise, copy spaces at beginning until first-non-space-character.)
|
2025-09-02 12:33:02 +01:00 |
|
|
|
44441ad26b
|
add two additional terminal yank operations: '<count-y-n> for copying to next match, and <count-y-N> for copying to prev match
|
2025-09-02 11:48:14 +01:00 |
|
|
|
a90cdf7943
|
implement a couple of more yank operations
|
2025-09-02 11:35:29 +01:00 |
|
|
|
1d631a708c
|
implement a few more yank motions
|
2025-09-02 09:43:50 +01:00 |
|
|
|
74f1fb77ab
|
parse a few additional motions for yanking
|
2025-09-02 03:13:01 +01:00 |
|
|
|
ea38e95e6b
|
add a few additional motions to be parsed by yank
|
2025-09-02 03:07:50 +01:00 |
|
|
|
298cec88b3
|
create higher order functions to remove boilerplate code when implementing different yank cases
|
2025-09-02 02:55:19 +01:00 |
|
|
|
b3436b2963
|
implement function to yank a single line
|
2025-09-02 02:37:08 +01:00 |
|
|
|
72e3b59bb7
|
because GLFW at this time has clipboard bugs on Wayland (setting clipboard string), we print out whenever the shell receives a 'yank' message indicating for GLFW to copy. This will let us test that the correct string is yanked.
|
2025-09-02 02:18:14 +01:00 |
|