pepper 0.2.0

Experimental code editor
# pepper

Experimental code editor

# development thread

https://twitter.com/ahvamolessa/status/1276978064166182913

# todo

- ~~undo/redo~~
	- ~~store/apply edit diffs~~
	- ~~compress history when adding edits~~
	- ~~fix cursor position on multiple cursors~~
- ~~modes~~
	- ~~basic implementation~~
	- ~~key chords actions~~
- ~~selection~~
	- ~~swap position and anchor~~
	- ~~selection merging~~
- ~~multiple cursors~~
	- ~~merge cursors~~
- ~~long lines~~
- ~~search~~
	- ~~highlight search matches~~
	- ~~navigate between search matches~~
- ~~operations~~
	- ~~delete~~
	- ~~copy~~
	- ~~paste~~
- ~~client/server model~~
	- ~~dumb client sends events and receives display bytes~~
	- ~~track client that last sent event (focused)~~
	- ~~show status messages on focused client~~
- ~~custom bindings~~
	- ~~custom bindings expand to builtin bindings~~
	- ~~custom bindings take precedence~~
	- ~~define custom bindings in config file~~
- ~~script (command) mode~~
	- ~~execute script line and preserve context~~
	- ~~builtin bindings~~
- ~~syntax highlighting~~
	- ~~simple pattern matching~~
	- ~~define language syntaxes~~
	- ~~calculate highlight ranges when code changes~~
	- ~~recalculate only changed portions of buffer~~
	- ~~show whitespace with correct colors~~
- ~~utf8~~
- ~~file operations~~
	- ~~edit (command to open/create file?)~~
	- ~~save~~
	- ~~reuse buffer if already open~~
	- ~~remove all buffer views when closing a buffer~~
- ~~external commands~~
	- ~~spawn commands (processes) that execute on the server~~
- ~~cli~~
	- ~~custom session name~~
	- ~~config path~~
	- ~~send keys to server~~
	- ~~open files~~
- ~~autocomplete~~
	- ~~select/entries ui~~
	- ~~selection movements~~
	- ~~clear/change entries~~
	- ~~completion suggestion as typing word~~
	- ~~accept completion~~
	- ~~word database~~
- ~~text objects~~
	- ~~inner word~~
	- ~~outer word~~
	- ~~inner balanced braces~~
	- ~~outer balanced braces~~
- status bar
	- ~~buffer name~~
	- ~~buffer position~~
	- buffered keys
- scripting
	- ~~integrate lua to use as command interface~~
	- ~~config file is lua script~~
	- ~~builtin bindings~~
	- full api exposed
- code navigation
	- ~~go to line (new mode)~~
	- ~~word forward/backward~~
	- ~~home/end/first-column~~
	- ~~half-page down/up~~
	- ~~find char~~
	- ~~center main cursor, main cursor at top, main cursor at bottom (`zz`, `zk`, `zj`)~~
	- ~~go to matching bracket (`gm`)~~
	- ~~select all text in buffer~~
	- ~~limit selections to search ranges (or cursor = search ranges if empty) (`?`)~~
	- remember column when moving between lines
	- cursor history navigation
- selections
	- ~~select current word and search~~
	- ~~add cursor on 'next search result' (`*`)~~
	- ~~skip one and add cursor on 'next next search result'~~
	- ~~remove selections (set anchor to position)~~
	- ~~swap anchor and position~~
	- ~~select cursor lines~~
	- ~~keep only main cursor~~
	- ~~add cursor to each selection line~~
	- cursor movement kind AnchorThenPosition (??)
- editing
	- ~~edit new line bellow/above (`o` and `O`)~~
	- ~~keep current identation~~
	- delete identation
- macros (??)
	- repeat last insert (`.`)
	- record/play custom macros
- language server protocol
- debug adapter protocol