FOR NEXT UPDATE: [ ] More duat-lsp features: [x] Diagnostics. [x] Goto locations. [x] Autocompletions. [x] Formatting. [x] Caching. [x] Rename. [x] Actions. [ ] Hover. [x] Info. [ ] Diagnostics. [ ] See all diagnostics. [x] Configuration. [x] Snippet support. [ ] More work on the Gutter. [x] Diferentiate hovering, cursoring, related and default display. [ ] Implement Widget spawning. [x] More functional style. [x] Add user configuration. [ ] Perfect print iterators. [ ] Perfect words iterator. [ ] Link tags apparently. [x] Fix pager search. [x] Fix commandline completion bs. [x] Additional wrap continuation characters. [x] Add a donation splash screen. [x] Some QoL features: [x] Autocompletions only after n characters. [x] Remember if a buffer needed to be saved. [x] Case insensitive completions. [x] Include duat-lsp by default. [x] Strs improvement. [x] More fundamental functions. [x] Better search functionality. [x] Remove Widget argument from Modes. [x] Widget::text and Widget::text_mut have been amplified immensely. [x] Picker implementation. [x] Expose duatmode keys as functions. [x] Improvements to duatmode: [x] `m` key like helix's. [x] Surround keys. [x] i and a. [x] composite `(` and `)` (and maybe `f` and `t`?). [x] Reimplement the minimum prefix stuff. [ ] For now, on Windows, duat can only reload if there is only one instance open. [ ] Turn the History into a tree. [x] Implementation. [ ] Mapping onto keys. [x] Fix rendering issues with layout changes. [x] Make Text spawning immediate. QoL TODO LIST: [x] Fix jumps not being recorded or being too recorded. [x] Reloading shouldn't change your active Buffer. [x] The g key should record your current position. [x] Highlight background of currently active Buffer. [x] Allow going to specific coordinates on Buffers. [x] Hover should get rid of links. Bugs with new Completions: [x] Same entry causes the first one to be gobbled up. [x] Sometimes shows up delayed in PromptLine. [x] Replacement is incorrect with Lsp sometimes. [x] Immediate replacements with empty paths. [ ] Flickering in some situations. KNOWN BUGS: HIGH PRIORITY: [ ] Indentation is inefficient because tree-sitter query results aren't cached. [ ] Stop eagerly merging Selections. [x] Snippets are not working properly sometimes. LOW PRIORITY: [ ] Selections struct that holds a reference to the StrsBuf. [ ] Also make the Bytes-less version inaccessible. [ ] tree-sitter-duat-text is not being used. [ ] Overlays can't remove previous Forms early. [ ] Sometimes Completions don't open immediately on PromptLine. FUTURE UPDATES: [ ] Add registers possibly. [ ] `z` and `q` keys for duatmode. [ ] Non Ui specific PrintInfo. [ ] Hover to reveal full shell expansion. [ ] Add a little button next to tree-sitter injections to download them. [ ] Add a HandleMut or something like that. [ ] Add a simplified KDL based configuration, in systems where people don't want to have to install cargo. [ ] Named StatusParts. [ ] Flags parameter macro. [ ] An Align Tag? [ ] Get started on a Vim mode. [ ] Create a fun lil' spinner. [ ] Remove requirement of Clone on Modes. [ ] Coordinates based tagging. [ ] Use track_caller on TextBuilder. [ ] Anonymous Forms, with index based on hashing the Form itself. [ ] Keep information of PushSpecs and SpawnSpecs on the Handles. [ ] Initial installation configuration menu. [ ] Print only changed lines. [ ] Handle mostly utf-8 strings. [ ] Add a failure mode for remapping. [ ] Additive Forms. [ ] Remapping on `Mode` creation. [ ] FileBuilder::push_detached! [ ] Split suggested max range by conceals. [ ] macro_mode! or something like that. [ ] Fuzzy path detection should be rule based, not on what buffers are open. [ ] rustc_on_unimplemented for State. [ ] Crumple zone tags (?). [ ] Custom error messages for unimplemented on status!. [ ] It is technically possible to reverse iterate without going over the whole line, if you know where in the screen said line ends. [ ] add options to the build script, about which type of UI you want, and where to get your config files. [ ] general undo/redo, that can delete/create files. [ ] ghosts 👻 on doc comments for tests. [ ] mouse drag binding to resize widgets. [ ] adaptive widget size. [ ] Least common denominator for showing paths. [ ] An updater function that returns true if a certain hook was triggered. [ ] No wrapping Tag. [ ] Search bar widget that shows up when you hover over a tooltip. [ ] Go to reference should popup a list of references, while swapping the whole screen as you scroll. [ ] Completion lists should have automatic triggers. [ ] Compilation should automatically plug plugins. [ ] Completion/hover panels should allow you to press tab to go to the next element and search for it. [ ] fixed_file and dyn_file should only call for updates if the File has actually changed at all. [ ] LSP option to show function arguments only when parenthesis is typed. [ ] Use the format-like modif to modify forms on the fly. [ ] `m` key could act on additional pairs if cursor is in specific chars. [ ] Option to show colored text on the txt! macro. PERFORMANCE IDEAS: [ ] Try not iterating over every character in scroll_vertically.