8002012705e785572cb1c03661031405cdc7bbff
Copyright 2025 Syed Daanish
Crib
A TUI IDE.
TODO
- Overwrite empty space between line number and line. (in the renderer)
- Make iterator for next/prev line reuse same allocation buffer (so only free once with iterator).
- Add tab/untab with [,<] and [.>]
- Add something that works like
pbut doesnt move cursor. - Fix the fact that hooks arent updated when a line is deleted/added.
- also use this sorta rules apart from previous lines indentation for the indentor.
- if previous line ends with { or similar → indent +1
- (i.e. just check the last line that is not string or comment or empty)
- language-specific rules later if you want
- ignore comments that dedent etc. - anything else should be handled by LSP.
- if previous line ends with { or similar → indent +1
- Fix bug where clicking outside eof sets to top.
- Add this thing where select at end of screen scrolls down. (and vice versa)
- Add a virtual text support (text that is rendered in the editor but not in the actual text)
- Add a whitespace highlighter (nerd font). for spaces and tabs at start/end of line.
- Add support for LSP & autocomplete / snippets.
- First research
textDocument/documentHighlight- for highlighting stuff (probably tree-sitter is enough)textDocument/selectionRange//textDocument/completion- ObviouslytextDocument/onTypeFormatting- seems promising for auto formatting (indentation etc)textDocument/inlayHint&textDocument/inlineHint&textDocument/codeLenstextDocument/formatting&textDocument/rangeFormattingtextDocument/semanticTokens/*(probably tree-sitter is enough)textDocument/linkedEditingRange- probably usefultextDocument/foldingRange- i will never use this for folding but it might be useful for other things.textDocument/rename&textDocument/prepareRename- probably useful- And a lot more (just go through each for
clangdand then expand to saysolargraph).
- Make a universal plug for lsp. So focus more on making a general purpose solid communication interface. Instead of something specific.
- With a 4ish pass system. (more like each returned value from the lsp is used in 4 ways)
- One for stuff like jump to x position. or rename symbol x to y. (stuff that explicitly requires user request to do something)
- Maybe even hover goes here
- One for stuff that only affects highlighting and styles . like symbol highlighting etc.
- One for Warnings/errors and inlay hints etc. (stuff that adds virtual text to the editor)
- One for fromatting and stuff like that. (stuff that edits the buffer text)
- One for stuff like jump to x position. or rename symbol x to y. (stuff that explicitly requires user request to do something)
- With a 4ish pass system. (more like each returned value from the lsp is used in 4 ways)
- First research
- Add snippets from wherever i get them. (like luasnip or vsnip)
- Add support for virtual cursor where edits apply at all the places.
- Add alt + click to set multiple cursors.
- Add search / replace along with search / virtual cursors are searched pos.
- Add support for undo/redo.
- Add
.scmfiles for all the supported languages. (2/14) Done. - Add splash screen / minigame jumping.
- Add codeium/copilot support.
- Normalize / validate unicode on file open.
- Add git stuff.
- Add SQL support. (viewer and basic editor)
- Add color picker/palette for hex or other css colors.
- Fix bug where alt+up at eof adds extra line.
- Think about how i would keep fold states sensical if i added code prettying/formatting.
- Use tree-sitter to get the node path of the current node under cursor and add an indicator bar.
- (possibly with a picker to jump to any node)
- Add the highlight of block edges when cursor is on a bracket (or in). (prolly from lsp)
- Add this thing where selection double click on a bracket selects whole block.
- (only on the first time) and sets mode to
WORD.
- (only on the first time) and sets mode to
- Redo folding system and its relation to move_line_* functions. (Currently its a mess)
Description
Languages
C++
50.1%
tree-sitter-query
48.8%
Makefile
1.1%