Adding ved
This commit is contained in:
@@ -1,80 +0,0 @@
|
|||||||
# Vi-style Editor with Ollama Code Prediction
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
Terminal-based code editor written in C with nvi-style modal editing and local LLM-powered code completion via Ollama. For Linux CLI. Target users: personal + colleagues.
|
|
||||||
|
|
||||||
## Editor Scope (nvi-style)
|
|
||||||
|
|
||||||
### Modal Editing
|
|
||||||
- Normal, Insert, Command-line (`:`) modes
|
|
||||||
|
|
||||||
### Navigation
|
|
||||||
- `h/j/k/l` — basic movement
|
|
||||||
- `w/b/e` — word movement
|
|
||||||
- `0/$` — line start/end
|
|
||||||
- `^f/^b` — page up/down
|
|
||||||
- `G/gg` — file start/end
|
|
||||||
- `f/t/F/T` — find char on line, with counts
|
|
||||||
|
|
||||||
### Operators + Motions
|
|
||||||
- `d`, `y`, `c` combined with any motion (e.g. `c3td`, `d$`, `y2w`)
|
|
||||||
- Single unnamed buffer for yank/delete
|
|
||||||
- `p/P` — paste after/before
|
|
||||||
|
|
||||||
### Other
|
|
||||||
- `.` — repeat last command
|
|
||||||
- `u` — undo
|
|
||||||
- `:w`, `:q`, `:wq`, `:e` — file commands
|
|
||||||
- `:/regex` — search
|
|
||||||
- `:%s/pat/rep/g` — substitution
|
|
||||||
|
|
||||||
### Out of Scope
|
|
||||||
- Macros, named registers, splits, tabs
|
|
||||||
|
|
||||||
## Language Support
|
|
||||||
- C
|
|
||||||
- Assembly
|
|
||||||
|
|
||||||
## Ollama Integration
|
|
||||||
|
|
||||||
### Models (user-configurable)
|
|
||||||
- gemma2:2b
|
|
||||||
- deepseek-r1:1.5b
|
|
||||||
- qwen2.5-coder:3b
|
|
||||||
- gemma3:4b
|
|
||||||
|
|
||||||
### Completion Behavior
|
|
||||||
- Idle timer in insert mode (~300ms) triggers completion request
|
|
||||||
- Tab to accept ghost text (rendered dim)
|
|
||||||
- Context sent: current function/block (enclosing `{}`) + current line
|
|
||||||
- Endpoint: `POST http://localhost:11434/api/generate` (streaming JSON)
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
src/
|
|
||||||
main.c — entry point, arg parsing
|
|
||||||
terminal.c — raw mode, ncurses screen management
|
|
||||||
buffer.c — gap buffer or piece table, line indexing
|
|
||||||
editor.c — editor state, viewport, cursor
|
|
||||||
input.c — keypress reading, modal dispatch
|
|
||||||
normal.c — normal mode commands, operator-motion parsing
|
|
||||||
insert.c — insert mode, char input, trigger completion
|
|
||||||
command.c — : command line parsing and execution
|
|
||||||
search.c — regex search (POSIX regex.h)
|
|
||||||
undo.c — undo list
|
|
||||||
ollama.c — HTTP client (libcurl), prompt building, response parsing
|
|
||||||
syntax.c — minimal scope detection for C/asm (brace matching)
|
|
||||||
config.c — runtime config (~/.editorrc or similar)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
- ncurses — terminal UI
|
|
||||||
- libcurl — Ollama HTTP communication
|
|
||||||
- POSIX regex.h — search/replace (libc)
|
|
||||||
- cJSON (or hand-rolled) — parse Ollama JSON responses
|
|
||||||
|
|
||||||
## Design Decisions to Finalize
|
|
||||||
- [ ] Text buffer: gap buffer (simpler) vs piece table (better for large files)
|
|
||||||
- [ ] Visual mode: include char/line visual mode?
|
|
||||||
- [ ] Config file format and location
|
|
||||||
Reference in New Issue
Block a user