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 tabstop=N` - Set tab width
- [x] `:register {name}` - Show register contents
- [ ] `:w` - Write file
- [ ] `:q` - Quit
- [ ] `:wq` - Write and quit
- [ ] `:q!` - Force quit
- [ ] `:e {file}` - Edit file
- [x] `:w` - Write file
- [x] `:q` - Quit
- [x] `:wq` - Write and quit
- [x] `:q!` - Force quit
- [x] `:e {file}` - Edit file
- [ ] `:bn` / `:bp` - Next/previous buffer
- [ ] `:{range}` - Go to line
- [ ] `:%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
- [x] Buffer struct (id, filename, lines, modified flag, cursor position)
- [ ] Buffer list/manager
- [ ] Current buffer tracking
- [x] Current buffer tracking
- [ ] Buffer-local settings (tabstop, filetype, etc.)
- [ ] Modified/dirty state tracking
- [ ] Read-only buffer support
- [x] Modified/dirty state tracking
- [x] Read-only buffer support
### 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
- [ ] `:bp` / `:bprev` - Previous buffer
- [ ] `: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!` - Force delete buffer (discard changes)
- [ ] `:bw` / `:bwipeout` - Wipe buffer (remove completely)
- [ ] `:w` - Write current buffer to file
- [ ] `:w {file}` - Write buffer to specific file
- [ ] `:wa` - Write all modified buffers
- [x] `:w` - Write current buffer to file
- [x] `:w {file}` - Write buffer to specific file
- [x] `:wa` - Write all modified buffers
- [ ] `:sav {file}` - Save as (write to new file, switch to it)
### Buffer State
@ -309,8 +309,8 @@ Buffers are in-memory representations of files. A buffer exists for each open fi
### Hidden Buffers
- [ ] `:set hidden` - Allow switching with unsaved changes
- [ ] Prompt to save when closing modified buffer
- [ ] `:q` behavior with modified buffers
- [x] Prompt to save when closing modified buffer
- [x] `:q` behavior with modified buffers
### Argument List (Advanced)
- [ ] `: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)
### Files
- [ ] File reading
- [ ] File writing
- [x] File reading
- [x] File writing
- [ ] Auto-save
- [ ] Backup 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] Word motions (w, e, b)
- [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 mode with motions
- [x] Delete actions (x, D)
- [x] Command mode basics
- [x] Register behavior