From cf383c9772178f9ef4be552fb56aeb544daa4097 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sun, 22 Mar 2026 10:12:18 +0100 Subject: [PATCH] Update todos --- src/text_editor.cpp | 97 ++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/src/text_editor.cpp b/src/text_editor.cpp index 63273fb..8ca8842 100644 --- a/src/text_editor.cpp +++ b/src/text_editor.cpp @@ -1,71 +1,57 @@ /* -- [x] list_functions.sh and rg in general in the color mode is prinitng differently from terminal as well as output is truncated! -- [ ] Syntax for executing commands from root of project, or maybe commands should be executed from root of the CurrentDirectory and there should be a cd command instead of OpenProject -- [ ] Fuzzy search over executed command ouput + +## Basics +- [ ] Ctrl+Shift+ArrowDown at the end of buffer, doesn't capture characters on last line without new line, same at the top - [ ] When inserting parenthesis and selection is there, put the parens on both sides? -- [ ] KillProcess in console !!! - should also kill all the children ........... -- [x] ctrl-e with these short main.c:290: breaks a little, need to first click ctrl-e and then alt-e to jump -- [ ] Use command window without special fuzzy search features to type commands and stuff for executing shell etc.. -- [ ] I noticed WordComplete getting busted and returning cutdown words but not sure how to repro ... +- [ ] I noticed WordComplete getting busted after using editor for a while and returning cutdown words but not sure how to repro ... +- [ ] Rewrite WordComplete to use CoroutineCreate, maybe try reducing globals to just the coroutine itself +- [ ] WorkComplete, Bounded search, after a while it becomes problematic with many buffers ## Monaco like design for familiarity -- [x] Ctrl+Alt+- and Ctrl+Shift+- Jump back, jump forward -- [x] ctrl-shift-l select all occurences of a string -- [x] ctrl-alt-r open containing folder (file explorer system) -- [x] ctrl-alt-MouseMove should do a box select with multiple cursors thing - [ ] ctrl-tab - switch file lister with instant hold release semantics? - [ ] SearchAndReplace how to do better? - [ ] ctrl-t find workspace symbols? how can we do it? - [ ] Snippet design? +## Refactor - [ ] Make a platform layer and separate SDL stuff out -- [x] ReplaceAll - heap-use-after-free address, how to debug? I think would be nice to iterate all buffer ids and their addresses along with the state - -- [x] BRO, the caret teleports on linux when I press the arrow for too long - - [ ] Report SDL newest vs SDL previous version on wayland - -- [ ] Ctrl+Shift+ArrowDown at the end of buffer, doesn't capture characters on last line without new line +- [ ] Report a regression in SDL in newer versions that make it so that events are doubled when unpressing the held button - [ ] Remove -lbacktrace and add my backtrace library thing - [ ] Refactor build.sh to accept commands and remove build_web.sh +- [ ] GetWindowZOrder to IterateWindowsInZOrder +- [ ] Investigate reworking history API, tagging modification blocks with carets? +- [ ] How to enable framerate to be unlimited and not break scrolling? +- [ ] When 2 views of same buffer are open, the view with caret below the caret which modifies the view - starts moving and getting messed up +- [ ] The lexing / parsing code for config / bindings appears sloppy would be nice to clean it up but I don't have any ideas +- [ ] Redesign `:QueryFile` -- [ ] Cleanups - - [ ] How to enable framerate to be unlimited and not break scrolling? - - [x] When dragging a file into the editor, would be nice if the file opened in the window user dropped the file into. Not the active window. - - [ ] When 2 views of same buffer are open, the view with caret below the caret which modifies the view - starts moving and getting messed up - - [ ] Reduce number of created buffers to one per window, should be enough - - [ ] GetWindowZOrder to IterateWindowsInZOrder - - [ ] Rework history API, tagging modification blocks with carets? - - [ ] The lexing / parsing code for config / bindings appears sloppy would be nice to clean it up but I don't have any ideas - - [ ] Directory tree doesn't make much sense! Maybe just consolidate into one folder? create nice names - the raddbg idea didn't pan out well here +## Features +- [ ] KillProcess in console !!! - should also kill all the children ........... +- [ ] BeginLog and EndLog, show all logs in the UI thing at the end +- [ ] Fuzzy search over executed command ouput +- [ ] Command window but for executing commands without special fuzzy stuff? +- [ ] Implement Regex and jumps using regex so as to allow for using ctags +- [ ] Add UndoKinds (SnapshotUndo, DiffUndo), I want to enable history in fuzzy search buffers without a huge memory cost +- [ ] General parser / data description thing, rewrite other parsers using this, rewrite env handling +- [ ] DirNav, update lister when files change on disk +- [ ] Investigate ways to bind "open" commands to keys from config +- [ ] Ability to access and set clipboard as well as affect selection in the open scripts +- [ ] Syntax for executing commands from root of project, or maybe commands should be executed from root of the CurrentDirectory + +## Test - [ ] Test BlockArena correctnsess - random allocations, writes and undos, try to crash -- [ ] General parser / data description thing - - [ ] Rewrite other parsers using this - - [ ] Rewrite Env handling (to not be OS specific) - -- New error mechanism - we were losing errors when ReportError was called multiple times, I still want that but I don't want to lose errors, so turn it into a summary list of errors - - [ ] BeginLog EndLog, and then show all logs as a list in the UI thing -- [ ] Undo kinds (to enable history in fuzzy buffers) - - [ ] Add undo kind. Snapshot kind, so that history is possible in weird buffers without paying a huge memory cost. The idea is that we would store the exact buffer state to replace with, editor would just save history of first line etc. - -- [x] Macros -- [ ] Regex - - [ ] ctags based indexing -- [ ] WordComplete - - [ ] Rewrite WordComplete to use CoroutineCreate, maybe try reducing globals to just the coroutine itself - - [ ] More bounded? seems like it might be problematic on a bigger project but so far it isn't (even for SDL or raddbg) +## Low - [ ] Shell / terminal buffer plugin (keep the shell alive and talk with it) -- [ ] Directory Navigation - - [ ] Remake lister when files change on disk - - [ ] When saving apply all the modifications instead (like deleting files, renaming etc.) or maybe that's not even needed considering we are integrating shell commands -- [ ] OpenCode - - [ ] Hangs the editor on big files -- [ ] Open - - [ ] Way to bind "open" commands to keys from config - - [ ] Ability to access and set clipboard as well as affect selection in the open scripts -- [ ] QueryFile - - [ ] Indicate to user that he is choosing a file - - [ ] Define clear rules for opt out (like switching to different window) and kill or views that were for choosing? +- [ ] Fix somehow OpenCode hanging the editor on big files + +----------------------------------------------------------------------- + +## :QueryFile problems +- User doesn't see that he in a special mode +- Coroutine is boundless here and the boundries of the mode are too lossely defined, it makes it strange when you learn that you are still in this mode +- How do we kill all the views/buffers we entered? Do we care? + */ #define PLUGIN_PROFILER 1 @@ -581,6 +567,7 @@ void GarbageCollect() { return; } RunGCThisFrame = false; + ReportConsolef("GarbageCollect"); ProfileFunction(); Allocator sys_allocator = GetSystemAllocator(); @@ -602,8 +589,8 @@ void GarbageCollect() { continue; } - bool ref = ViewIsReferenced(it); - if (ref) { + Int ref = ViewIsReferenced(it); + if (ref < 25) { continue; } @@ -668,7 +655,7 @@ void GarbageCollect() { JumpToLastValidView(it); } } - } + } } void LayoutWindows(int16_t wx, int16_t wy) {