notepad-- is a minimalist, featureless text editor. It supports the most basic text
navigation and editing actions, and nothing else. Currently, it only supports ASCII text.
For example, on Arch:
sudo pacman -S cmake sdl3 sdl3_ttfgit clone https://github.com/abdulnafe-t/notepad--
cd notepad--
# notepad-- uses git submodules for Dear ImGui.
git submodule init
git submodule updatecmake -S src -B build
cmake --build build- [X] left/right cursor motions
- [X] up/down cursor motions
- [X] add build system
- [X] refactor main()
- [X] stop cursor motion at EOF
- [X] stop down movement at last line
- [X] stop right movement at the end of the last line
- [X] implement cut, copy, & paste
- [X] implement mark
- [X] implement shift+arrow selection to activate the mark
- [X] implement text overwriting if the mark is active
- [X] implement C-x, C-c, C-v
- [X] keep track of the mark as the gap moves
- [X] implement C-c
- [X] implement C-v
- [X] implement C-x
- [X] implement frame rate limit
- [X] implement text scrolling
- [X] implement opening/saving file
- [X] implement Ctrl+s (save)
- [X] implement Ctrl+o (open)
- [X] implement Ctrl+shift+s (save as)
- [X] implement new file
- [X] implement select all
- [X] use vendored font: Cousine Regular, packaged with Dear ImGui
- [ ] implement scroll-bars
- [ ] implement undo/redo
- [ ] use system font
- [ ] highlight entire region when the mark is active
- [ ] implement search & replace
- [ ] light/dark mode switching
- [ ] smart buffering of large files
- [ ] unicode support
- [ ] emacs-style keybindings
- [ ] font size customization
- [ ] implement RAII: wrap SDL pointers in a custom class