Fix file permissions
This commit is contained in:
@@ -2,33 +2,42 @@ Copyright 2025 Syed Daanish
|
||||
|
||||
# TODO
|
||||
|
||||
- Fix bug where scroll up at top of screen first line jumps to bottom
|
||||
|
||||
- Make completions work with new system
|
||||
- And factorize renderer into its own class
|
||||
- which is just managed by the renderer
|
||||
- and adjusment.cc will call it
|
||||
- which is just managed by the renderer
|
||||
- and adjusment.cc will call it
|
||||
- which is reused by scrollers/ensurers too (for knowing screen wrapped end)
|
||||
- this will then allow inlay hints to be possible
|
||||
- and also make VAI easier to implement
|
||||
- and also make VAI easier to implement (probably as inlay hints)
|
||||
- and also allow code lens to work too
|
||||
- and an api to allow line skipping / virtual text which allows for folding logic as extention
|
||||
|
||||
- Also time extentions and disable if they take too long / for larger files with options to force
|
||||
|
||||
* Allow keybinds to be set in ruby
|
||||
|
||||
* ruby file for project specific runs alongside any system wide ones
|
||||
|
||||
- Seperate system functions into a class that branches to support local / ssh / server modes.
|
||||
- Even lsp shouldnt be directly controlled because it can branch on local and server modes
|
||||
- check libssh2 or child process stuff for remote editing (remote mode)
|
||||
- Thick and thin mode (server mode) (through ssh or port) (for website only port + webhook)
|
||||
- thin mode only shares screen diffing over the network - uses server settings / themes / shell
|
||||
- only one user connects at a time
|
||||
- provides data as a websocket with tui or gui/online modes where tui shares diffing as is (can be connected to by gui or website)
|
||||
- and gui/online modes try to (if not then render onto a canvas) forward window.render_gui() and dedicated windowing system (i.e windowing is html divs)
|
||||
- and window.render_gui() returns a markup code (custom markup)
|
||||
- and for events i could either leave tui as-is and for markup have special event handling or i
|
||||
- implement the widget system in both and have the same event handling then
|
||||
- actually for true cross platform i need to make a ui lib with widgets etc. so it is workable on all platforms (so they all need only a single ui lib)
|
||||
- thick only shared fileio and lsp data with local used for all else - uses local settings / themes
|
||||
- multiple users connect at once but maybe either make them not be allowed to open same file or make vscode like multiediting (unsure how exactly)
|
||||
- they all share same lsp instances
|
||||
- they all have the same shell access
|
||||
- allow having an instance that forwards thick mode to thin mode (to connect online mode to a thick server for code collaboration)
|
||||
- check libssh2 or child process stuff for remote editing (remote mode)
|
||||
- Thick and thin mode (server mode) (through ssh or port) (for website only port + webhook)
|
||||
- thin mode only shares screen diffing over the network - uses server settings / themes / shell
|
||||
- only one user connects at a time
|
||||
- provides data as a websocket with tui or gui/online modes where tui shares diffing as is (can be connected to by gui or website)
|
||||
- and gui/online modes try to (if not then render onto a canvas) forward window.render_gui() and dedicated windowing system (i.e windowing is html divs)
|
||||
- and window.render_gui() returns a markup code (custom markup)
|
||||
- and for events i could either leave tui as-is and for markup have special event handling or i
|
||||
- implement the widget system in both and have the same event handling then
|
||||
- actually for true cross platform i need to make a ui lib with widgets etc. so it is workable on all platforms (so they all need only a single ui lib)
|
||||
- thick only shared fileio and lsp data with local used for all else - uses local settings / themes
|
||||
- multiple users connect at once but maybe either make them not be allowed to open same file or make vscode like multiediting (unsure how exactly)
|
||||
- they all share same lsp instances
|
||||
- they all have the same shell access
|
||||
- allow having an instance that forwards thick mode to thin mode (to connect online mode to a thick server for code collaboration)
|
||||
|
||||
* Then allow ruby code to create and handle windows as extentions
|
||||
* Then 3 inbuilt extentions being file manager, theme picker, tab selector
|
||||
|
||||
@@ -37,8 +46,8 @@ Copyright 2025 Syed Daanish
|
||||
* also implement info strings for all the stuff that take focus
|
||||
|
||||
* Mode is a feild on a editor and there is no global "mode system" except in editors (enxtentions do their own thing)
|
||||
* make mode normal and not atomic if it is truly unused across threads
|
||||
* this means keybinds can be set to use the editor as insert mode only and so behave like vscode
|
||||
- make mode normal and not atomic if it is truly unused across threads
|
||||
- this means keybinds can be set to use the editor as insert mode only and so behave like vscode
|
||||
|
||||
* split lsp stuff into multiple files (not a monolithic class as it is now)
|
||||
* Extentions can also be used as file openers (for like databases . diffing . images . audio etc)
|
||||
@@ -59,10 +68,10 @@ Copyright 2025 Syed Daanish
|
||||
* Add a file picker suggestion while typing a path (including stuff like ~ and .. and $HOME etc)
|
||||
* allow opening directory after filemanger is sorted out.
|
||||
* commands to:
|
||||
change pwd
|
||||
load a rb file
|
||||
run a ruby command
|
||||
close a window etc.
|
||||
change pwd
|
||||
load a rb file
|
||||
run a ruby command
|
||||
close a window etc.
|
||||
* [ ] Add mgems for most common things and a ruby library to allow combining true ruby with mruby
|
||||
* add command to set and use a file type at runtime
|
||||
* [ ] color alpha in ini files
|
||||
@@ -70,12 +79,12 @@ Copyright 2025 Syed Daanish
|
||||
* [ ] **LSP Bug:** Check why `fish-lsp` is behaving so off with completions filtering.
|
||||
* [ ] **Line move:** fix the move line functions to work without the calculations from folds as folds are removed.
|
||||
* [ ] **Editor Indentation Fix:** - Main : merger indentation with the parser for more accurate results.
|
||||
* [ ] Ignore comments/strings from parser when auto-indenting.
|
||||
* [ ] Support for stuff like bash \ and math operators in other languages and comma and line starting with a dot (like in ruby)
|
||||
etc.
|
||||
- [ ] Ignore comments/strings from parser when auto-indenting.
|
||||
- [ ] Support for stuff like bash \ and math operators in other languages and comma and line starting with a dot (like in ruby)
|
||||
etc.
|
||||
* [ ] **Readme:** Update readme to show ruby based config in detail.
|
||||
* [ ] **UI Refinement:**
|
||||
* [ ] Finish autocomplete box style functions.
|
||||
- [ ] Finish autocomplete box style functions.
|
||||
* [ ] **Documentation UI:** Capture `Ctrl+h` / `Ctrl+l` for scrolling documentation windows.
|
||||
* Cap line_tree data limit for large files and just store about a thousand previous lines maybe? (lazily loaded)
|
||||
|
||||
@@ -88,17 +97,17 @@ Copyright 2025 Syed Daanish
|
||||
* allow flushing functions in ruby to tell c++ to refresh keybinds/themes etc.
|
||||
|
||||
* [ ] **LSP:**
|
||||
support snippets in completion properly
|
||||
check::
|
||||
pull diagnostics for ruby-lsp
|
||||
lsp selection range - use to highlight start / end of range maybe?
|
||||
goto definiton
|
||||
signature help
|
||||
document symbol for the top bar maybe? (or workspace symbol)
|
||||
also setup workspaces
|
||||
Semantic highlighting
|
||||
Quick fixes
|
||||
Rename symbols
|
||||
support snippets in completion properly
|
||||
check::
|
||||
pull diagnostics for ruby-lsp
|
||||
lsp selection range - use to highlight start / end of range maybe?
|
||||
goto definiton
|
||||
signature help
|
||||
document symbol for the top bar maybe? (or workspace symbol)
|
||||
also setup workspaces
|
||||
Semantic highlighting
|
||||
Quick fixes
|
||||
Rename symbols
|
||||
|
||||
* Allow ruby to config lsp capabilities
|
||||
|
||||
@@ -122,49 +131,45 @@ Copyright 2025 Syed Daanish
|
||||
|
||||
### UX
|
||||
|
||||
* [ ] **Completion Filtering:**
|
||||
* [ ] Stop filtering case-sensitive.
|
||||
* [ ] Normalize completion edits if local filtering is used.
|
||||
- [ ] **Completion Filtering:**
|
||||
- [ ] Stop filtering case-sensitive.
|
||||
- [ ] Normalize completion edits if local filtering is used.
|
||||
|
||||
* [ ] **Basic Autocomplete:** Keep a list of words in the current buffer for non-LSP fallback.
|
||||
- [ ] **Basic Autocomplete:** Keep a list of words in the current buffer for non-LSP fallback.
|
||||
|
||||
### Features
|
||||
|
||||
* [ ] **Search & Replace:**
|
||||
* [ ] Add Search/Replace UI.
|
||||
* [ ] Support capture groups (`$1`, `$2`) or allow Perl regex directly.
|
||||
* [ ] Ensure virtual cursors are included in search positions.
|
||||
- [ ] **Search & Replace:**
|
||||
- [ ] Add Search/Replace UI.
|
||||
- [ ] Support capture groups (`$1`, `$2`) or allow Perl regex directly.
|
||||
- [ ] Ensure virtual cursors are included in search positions.
|
||||
|
||||
* [ ] **Multi-Cursor:**
|
||||
* [ ] Add virtual cursor support (edits apply to all locations).
|
||||
* [ ] Add `Alt+Click` to set multiple cursors.
|
||||
* [ ] Allow search and place cursor at all matches.
|
||||
- [ ] **Multi-Cursor:**
|
||||
- [ ] Add virtual cursor support (edits apply to all locations).
|
||||
- [ ] Add `Alt+Click` to set multiple cursors.
|
||||
- [ ] Allow search and place cursor at all matches.
|
||||
|
||||
* [ ] **Block Selection:**
|
||||
* [ ] Double-clicking a bracket selects the whole block and sets mode to `WORD`.
|
||||
- [ ] **Block Selection:**
|
||||
- [ ] Double-clicking a bracket selects the whole block and sets mode to `WORD`.
|
||||
|
||||
### Visuals, UI & Extensions?
|
||||
|
||||
* [ ] Add color picker/palette (as a floating extention).
|
||||
- [ ] Add color picker/palette (as a floating extention).
|
||||
|
||||
* [ ] **Git:** Add Git integration (status, diffs).
|
||||
* [ ] **AI/Snippets:**
|
||||
* [ ] Add snippets support (LuaSnip/VSnip style).
|
||||
* [ ] Add Codeium/Copilot support (using VAI virtual text) as a test phase.
|
||||
|
||||
* [ ] **SQL:** Add SQL support (Viewer and Basic Editor) (as ruby extension).
|
||||
* [ ] **Prolly?:** Add Splash Screen / Minigame.
|
||||
- [ ] **Git:** Add Git integration (status, diffs).
|
||||
- [ ] **AI/Snippets:**
|
||||
- [ ] Add snippets support (LuaSnip/VSnip style).
|
||||
- [ ] Add Codeium/Copilot support (using VAI virtual text) as a test phase.
|
||||
|
||||
- [ ] **SQL:** Add SQL support (Viewer and Basic Editor) (as ruby extension).
|
||||
- [ ] **Prolly?:** Add Splash Screen / Minigame.
|
||||
|
||||
### Unimportant optimizations
|
||||
|
||||
* [ ] **Performance:**
|
||||
* [ ] Switch JSON parser to `RapidJSON` (or similar high-performance lib).
|
||||
* [ ] Decrease usage of `std::string` in UI, LSP, warnings etc.
|
||||
* [ ] Also for vectors into managed memory especially for completions/lsp-stuff.
|
||||
|
||||
|
||||
|
||||
- [ ] **Performance:**
|
||||
- [ ] Switch JSON parser to `RapidJSON` (or similar high-performance lib).
|
||||
- [ ] Decrease usage of `std::string` in UI, LSP, warnings etc.
|
||||
- [ ] Also for vectors into managed memory especially for completions/lsp-stuff.
|
||||
|
||||
<!-- The pits of hell: -->
|
||||
<!-- * Replace perfectly working superfast rope with a structure that stores for small files everything -->
|
||||
@@ -173,3 +178,59 @@ Copyright 2025 Syed Daanish
|
||||
<!-- - also for the line mode still go through entire file to get and store line offsets -->
|
||||
<!-- - also it stores everything prolly still as rope tho (rope of lines) (or sparse map) -->
|
||||
<!-- - it stores the line text as-is which is only unicode / crlf normalized during usage -->
|
||||
|
||||
whyy is visible returnint x1,y2 and x2, 2y2 instead of x1,y1 and x2,y2
|
||||
|
||||
Render H: 1, Cursor: 0,0, Visible: 0,26 - 0,52
|
||||
Render H: 2, Cursor: 0,0, Visible: 1,0 - 1,0
|
||||
Render H: 3, Cursor: 0,0, Visible: 2,30 - 2,60
|
||||
Render H: 4, Cursor: 0,0, Visible: 3,36 - 3,72
|
||||
Render H: 5, Cursor: 0,0, Visible: 4,32 - 4,64
|
||||
Render H: 6, Cursor: 0,0, Visible: 5,40 - 5,80
|
||||
Render H: 7, Cursor: 0,0, Visible: 6,11 - 6,22
|
||||
Render H: 8, Cursor: 0,0, Visible: 7,3 - 7,6
|
||||
Render H: 9, Cursor: 0,0, Visible: 8,19 - 8,38
|
||||
Render H: 10, Cursor: 0,0, Visible: 9,76 - 9,152
|
||||
Render H: 11, Cursor: 0,0, Visible: 10,50 - 10,100
|
||||
Render H: 12, Cursor: 0,0, Visible: 11,29 - 11,58
|
||||
Render H: 13, Cursor: 0,0, Visible: 12,49 - 12,98
|
||||
Render H: 14, Cursor: 0,0, Visible: 13,32 - 13,64
|
||||
Render H: 15, Cursor: 0,0, Visible: 14,30 - 14,60
|
||||
Render H: 16, Cursor: 0,0, Visible: 15,56 - 15,112
|
||||
Render H: 17, Cursor: 0,0, Visible: 16,42 - 16,84
|
||||
Render H: 18, Cursor: 0,0, Visible: 17,20 - 17,40
|
||||
Render H: 19, Cursor: 0,0, Visible: 18,31 - 18,62
|
||||
Render H: 20, Cursor: 0,0, Visible: 19,77 - 19,154
|
||||
Render H: 21, Cursor: 0,0, Visible: 20,77 - 20,154
|
||||
Render H: 22, Cursor: 0,0, Visible: 21,44 - 21,88
|
||||
Render H: 23, Cursor: 0,0, Visible: 22,56 - 22,112
|
||||
Render H: 24, Cursor: 0,0, Visible: 23,13 - 23,26
|
||||
Render H: 25, Cursor: 0,0, Visible: 24,3 - 24,6
|
||||
Render H: 26, Cursor: 0,0, Visible: 25,24 - 25,48
|
||||
Render H: 27, Cursor: 0,0, Visible: 26,32 - 26,64
|
||||
Render H: 28, Cursor: 0,0, Visible: 27,38 - 27,76
|
||||
Render H: 29, Cursor: 0,0, Visible: 28,1 - 28,2
|
||||
Render H: 30, Cursor: 0,0, Visible: 29,0 - 29,0
|
||||
Render H: 31, Cursor: 0,0, Visible: 30,30 - 30,60
|
||||
Render H: 32, Cursor: 0,0, Visible: 31,19 - 31,38
|
||||
Render H: 33, Cursor: 0,0, Visible: 32,76 - 32,152
|
||||
Render H: 34, Cursor: 0,0, Visible: 33,50 - 33,100
|
||||
Render H: 35, Cursor: 0,0, Visible: 34,36 - 34,72
|
||||
Render H: 36, Cursor: 0,0, Visible: 35,66 - 35,132
|
||||
Render H: 37, Cursor: 0,0, Visible: 36,12 - 36,24
|
||||
Render H: 38, Cursor: 0,0, Visible: 37,13 - 37,26
|
||||
Render H: 39, Cursor: 0,0, Visible: 38,17 - 38,34
|
||||
Render H: 40, Cursor: 0,0, Visible: 39,37 - 39,74
|
||||
Render H: 41, Cursor: 0,0, Visible: 40,16 - 40,32
|
||||
Render H: 42, Cursor: 0,0, Visible: 41,23 - 41,46
|
||||
Render H: 43, Cursor: 0,0, Visible: 42,15 - 42,30
|
||||
Render H: 44, Cursor: 0,0, Visible: 43,13 - 43,26
|
||||
Render H: 45, Cursor: 0,0, Visible: 44,5 - 44,10
|
||||
Render H: 46, Cursor: 0,0, Visible: 45,41 - 45,82
|
||||
Render H: 47, Cursor: 0,0, Visible: 46,12 - 46,24
|
||||
Render H: 48, Cursor: 0,0, Visible: 47,22 - 47,44
|
||||
Render H: 49, Cursor: 0,0, Visible: 48,24 - 48,48
|
||||
Render H: 50, Cursor: 0,0, Visible: 49,28 - 49,56
|
||||
Render H: 51, Cursor: 0,0, Visible: 50,26 - 50,52
|
||||
Render H: 52, Cursor: 0,0, Visible: 51,20 - 51,40
|
||||
Render H: 53, Cursor: 0,0, Visible: 52,74 - 52,148
|
||||
|
||||
Reference in New Issue
Block a user