! What precise workflow do I need for me to be viable to use this? ! From a user (novice) point of view, how does it look like? - Make a fuzzy command !> grep and fuzzy over it??? (doesn't seem very useful for grep) - Add Bool variable - Initialize all keybindings at the start and refer using global variables? - RegisterCommand should_appear_in_listing variable - Maybe one list for all variables including the commands etc? Use session 3: - Maybe status view, commit changes (like to buffer name or line) on enter? How to go about search/replace, opening code and other considerations - Search and replace sign Find@>ReplaceWith - We can use sed + find to search and replace, the automatic reopen should do the job - Maybe also we can List all files recursively instead of opening them, how fast is that??? - For fuzzy find number of files is the problem - most likely just getting them in one place is the biggest problem that can be optimized - Opening code is problematic for large / weird files, they stall for a while, getting them buffered up is hard. And they stall the execution when they go overboard. Maybe just skipping on filesisze on something would be enough, or making a very large skip list. Another solution would be lazy loaded buffers + determining what kind of file we are dealing with on open before loading - Search everything, like fuzzy panel, on every key stroke we grep immediately and get new results, cancel old, reset Use session 2 - Guide on the first page for new users with links to configs, tutorials Debug session: - Report errorf - use coroutine dialogs - Replace in render layer also - BlockAllocator something is not working there which only showed after executing OpenCode on many files - Some bad allocating happening in Clipboard for sure New UI Session - Cleanup String16/String with Open and EvalCommands after lua refactor - Uneditable buffers ? - Maybe marked allocations??? So that we can associate allocations with a buffer or view and then dealloc all at the same time - Open with seek string (open at pattern) filename:32 filename:/^Window$/ - Show what process/coroutines are running and allow to kill (active process buffer?) - Database idea: use special buffers to store information - Editing the buffer doesn't seem to be the slow part rather, accessing the data and putting it into the buffer (potentially hitting many different memory locations) I have a crazy idea to use buffers in order to store the names in a serialized format - non editable buffers (raw ops ok, non-raw no op) - DBBuffer - Try to add Tracking Allocator and rewrite the app, free all memory at the end of the app and check all is well - Maybe fix OS layer returning with "/" at the end for directories - Fix open code pattern backlog FEATURE Some decl/function indexing in fuzzy format ISSUE? Fix jump scroll, the query ends up the last line on screen, kind of wacky FEATURE dump text editor state to file, restore state - Search and replace - word complete - Search all buffers in 10X style, incrementally searched results popping up on every key press (maybe we need coroutine library in C so this is easier?) - escapeing multiple cursor after ctrl + d should put the cursor where it was (probably will need to swap secondary and primary cursor for new cursor - draw indentation levels like in sublime (those lines) - we render chars one by one so seems relatively easy to figure out if whitespace belongs to beginning of line (make sure to add max value like 40 because of big files) - code sections, visual demarkation if beginning of line has a very specific text + goto next / goto prev section hotkey! - combine glyph and selection rendering - Test stdin writing code - Implement shell interaction (the valid cmd lines should start with '>' or '$', user can add more lines like this to expand the command size maybe?, if we have a case where we have a line with '>' but the last line doesn't have (just a space) then it should execute?) - drop text into window - I think the way sublime text and we display line highlights is confusing with multiple cursors (line highlight can be confused with selection) - make the editor replayable, store events and then replay, be careful about globals - maybe open should return multiple options if there are many more? (like in sublime if many symbols you get a window and you choose and it automatically jumps you to the symbol in the background) - I want a way to assign flags to buffers/views/windows from user perspective so that console window concept can be created from user space - font cache and on demand unicode loads - color parens, braces - gap buffer - optimize rendering - command buffer, and vertice buffer instead of vertice buffer with scissor