Skip to content

abdulnafe-t/notepad--

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

notepad--: A featureless text editor

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.

Installation

Make sure you have SDL3 and CMake installed

For example, on Arch:

sudo pacman -S cmake sdl3 sdl3_ttf

Get the source from this repo

git clone https://github.com/abdulnafe-t/notepad--
cd notepad--

# notepad-- uses git submodules for Dear ImGui.
git submodule init
git submodule update

Build notepad--

cmake -S src -B build
cmake --build build

TODO:

  • [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

Nice to have:

  • [ ] 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

About

A featureless text editor. Written in C++, SDL3, and Dear ImGui. [WIP]

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors