chore: updated FEATURES.md
All checks were successful
Run Test Suite / test (push) Successful in 13s

This commit is contained in:
Hayden Hargreaves 2026-03-10 14:25:56 -07:00
parent d4980c5532
commit f12ce37beb

View File

@ -213,11 +213,11 @@
- [x] `:set number!` - Toggle line numbers - [x] `:set number!` - Toggle line numbers
- [x] `:set tabstop=N` - Set tab width - [x] `:set tabstop=N` - Set tab width
- [x] `:register {name}` - Show register contents - [x] `:register {name}` - Show register contents
- [ ] `:w` - Write file - [x] `:w` - Write file
- [ ] `:q` - Quit - [x] `:q` - Quit
- [ ] `:wq` - Write and quit - [x] `:wq` - Write and quit
- [ ] `:q!` - Force quit - [x] `:q!` - Force quit
- [ ] `:e {file}` - Edit file - [x] `:e {file}` - Edit file
- [ ] `:bn` / `:bp` - Next/previous buffer - [ ] `:bn` / `:bp` - Next/previous buffer
- [ ] `:{range}` - Go to line - [ ] `:{range}` - Go to line
- [ ] `:%s/old/new/g` - Search and replace - [ ] `:%s/old/new/g` - Search and replace
@ -266,13 +266,13 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
### Buffer Model ### Buffer Model
- [x] Buffer struct (id, filename, lines, modified flag, cursor position) - [x] Buffer struct (id, filename, lines, modified flag, cursor position)
- [ ] Buffer list/manager - [ ] Buffer list/manager
- [ ] Current buffer tracking - [x] Current buffer tracking
- [ ] Buffer-local settings (tabstop, filetype, etc.) - [ ] Buffer-local settings (tabstop, filetype, etc.)
- [ ] Modified/dirty state tracking - [x] Modified/dirty state tracking
- [ ] Read-only buffer support - [x] Read-only buffer support
### Buffer Navigation ### Buffer Navigation
- [ ] `:e {file}` - Edit file (open in new buffer or switch to existing) - [x] `:e {file}` - Edit file (open in new buffer or switch to existing)
- [ ] `:bn` / `:bnext` - Next buffer - [ ] `:bn` / `:bnext` - Next buffer
- [ ] `:bp` / `:bprev` - Previous buffer - [ ] `:bp` / `:bprev` - Previous buffer
- [ ] `:b {name}` - Switch to buffer by name (partial match) - [ ] `:b {name}` - Switch to buffer by name (partial match)
@ -286,9 +286,9 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
- [ ] `:bd` / `:bdelete` - Delete buffer (close file) - [ ] `:bd` / `:bdelete` - Delete buffer (close file)
- [ ] `:bd!` - Force delete buffer (discard changes) - [ ] `:bd!` - Force delete buffer (discard changes)
- [ ] `:bw` / `:bwipeout` - Wipe buffer (remove completely) - [ ] `:bw` / `:bwipeout` - Wipe buffer (remove completely)
- [ ] `:w` - Write current buffer to file - [x] `:w` - Write current buffer to file
- [ ] `:w {file}` - Write buffer to specific file - [x] `:w {file}` - Write buffer to specific file
- [ ] `:wa` - Write all modified buffers - [x] `:wa` - Write all modified buffers
- [ ] `:sav {file}` - Save as (write to new file, switch to it) - [ ] `:sav {file}` - Save as (write to new file, switch to it)
### Buffer State ### Buffer State
@ -309,8 +309,8 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
### Hidden Buffers ### Hidden Buffers
- [ ] `:set hidden` - Allow switching with unsaved changes - [ ] `:set hidden` - Allow switching with unsaved changes
- [ ] Prompt to save when closing modified buffer - [x] Prompt to save when closing modified buffer
- [ ] `:q` behavior with modified buffers - [x] `:q` behavior with modified buffers
### Argument List (Advanced) ### Argument List (Advanced)
- [ ] `:args` - Show argument list - [ ] `:args` - Show argument list
@ -381,8 +381,8 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
- [ ] Color column (ruler) - [ ] Color column (ruler)
### Files ### Files
- [ ] File reading - [x] File reading
- [ ] File writing - [x] File writing
- [ ] Auto-save - [ ] Auto-save
- [ ] Backup files - [ ] Backup files
- [ ] Swap files - [ ] Swap files
@ -405,9 +405,49 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
--- ---
## Testing Coverage ### Well Tested - Editor Core
### Well Tested #### Command Execution (179 tests)
- [x] Command parsing and validation
- [x] Command lookup and prefix matching
- [x] Force flag handling (!)
- [x] Write commands (`:w`, `:w {file}`, `:w!`)
- [x] Write all commands (`:wa`, `:wall`, `:wa!`)
- [x] Quit commands (`:q`, `:q!`, `:qa`, `:qa!`)
- [x] Write-quit commands (`:wq`, `:wq!`, `:wqa`, `:wqa!`)
- [x] Edit command (`:e {file}`)
- [x] Register display (`:register`, `:reg {name}`)
- [x] Set commands (`:set number`, `:set tabstop=N`, etc.)
- [x] Setting lookup and validation
- [x] Buffer-level readonly protection
- [x] Scratch buffer write protection
- [x] Force write bypassing readonly/scratch checks
- [x] Multiple buffer write operations
- [x] File write error handling (permissions, paths)
- [x] Modified buffer tracking
- [x] Unicode filename and content handling
- [x] Edge cases (empty args, long filenames, special chars)
#### Program Initialization (70 tests)
- [x] Empty program creation
- [x] File program with nonexistent files (new file buffers)
- [x] File program with existing files (content loading)
- [x] Line ending handling (Unix `\n`, Windows `\r\n`, mixed)
- [x] Tab to space conversion based on TabStop
- [x] Unicode content preservation (CJK, emoji)
- [x] File extension and type detection
- [x] Buffer state initialization (flags, metadata)
- [x] Large file handling (10,000+ lines)
- [x] Long line handling (10,000+ chars)
- [x] Empty file handling
- [x] Builder pattern method chaining
- [x] Program option accumulation
- [x] Model state defaults (settings, registers, mode)
- [x] Error handling (permissions, invalid paths)
- [x] Integration workflows (end-to-end)
- [x] Edge cases (empty filenames, relative paths, dot files)
### Moderately Tested
- [x] Basic motions (h, j, k, l) - [x] Basic motions (h, j, k, l)
- [x] Word motions (w, e, b) - [x] Word motions (w, e, b)
- [x] Jump motions (G, gg, 0, $, _, ^, |) - [x] Jump motions (G, gg, 0, $, _, ^, |)
@ -422,6 +462,5 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
- [x] Visual modes (v, V, ctrl+v) - [x] Visual modes (v, V, ctrl+v)
- [x] Visual mode with motions - [x] Visual mode with motions
- [x] Delete actions (x, D) - [x] Delete actions (x, D)
- [x] Command mode basics
- [x] Register behavior - [x] Register behavior