TODO.md 4.8 KB

Todo

GNU Emacs Features

Easy

  • delete word
  • show selected region
  • M-\ remove whitespace
  • C-o, insert newline below
  • C-l, recenter screen
  • C-t and M-t, transposes
  • highlight isearch results
    • it only highlights the one you're on
  • universal argument (C-u)
    • only works with some functions for now
  • numerical arguments (C-[0-9])
  • zap to char (M-z)
  • suspend (C-z)
  • lowercase/upper case word
  • display line/col in modeline

Medium

  • Jump bracket C-M-f and C-M-b
  • show match bracket
  • C-x C-x, return to mark
    • okay this was very easy...
  • file path for buffers
    • prereq for backupfiles
  • backup files (i.e. foo.txt~)
  • negate (C--/M--)
    • Just works with zap-to-char for now
  • auto-indent

Hard

  • Vertical split (C-x 3)
  • buffer controls (C-x b)
  • better isearch
    • highlight all searching on the page
    • put new page searches in middle of the screen
    • case-insensitive searches unless a capital letter is present in query
    • auto-jump to the first match (most Emacs' do this)
  • proper undo/redo
    • undo
    • redo (redo might be bound to C-x r or M-/ which would conflict with dabbrev-expand)
  • keyboard macros
    • save the keybindings and replay them
  • better clipboard support
    • just use M-e pbpaste or M-e xclip-whatever
  • unicode inputs
  • Alert when a buffer-revert is needed (file has been updated outside the editor)

Maybe Later

Likely

  • open file at line number
    • Go to the line specified by number (do not insert a space between the + sign and the number).
    • If a negative number is specified, the line number counts backwards from the end of the file.
    • I.e. +-1 will be the last line of the file, +-2 will be second last.
    • I.e. ait +20 file.txt
  • tab completion for shell commands

Considering

  • Auto-save files (i.e. #foo.txt#)
  • open multiple files from shell

Less Likely

  • keybindings in msgline (isearch, find-file, etc.)
    • all keybindings use the curwp or curbp and msgline doesn't have those
    • might only support some bindings.
  • various colors for highlighting
    • this might be tricky to work with various terminal colors
  • Beginning & end of paragraph (M-a, M-e)
    • It appears version 29 of GNU Emacs has replaced these functions with beginning/end of sentence.
  • M-/, dabbrev-expand
    • big maybe on this one, but it is very useful.
  • man page and --help option
  • highlight trailing whitespace
  • syntax highlighting based on file extension

Non-Standard Emacs

Likely

  • quick jump to char in line
  • shell commands
    • input STDOUT at point or new buffer
    • pipe region or file into shell command (sort, linter, etc)
    • accept output of a program as an input (fzf, pick, etc.)

Less Likely

  • jump to word
  • multiple cursors
  • avy quick jump to line

Housekeeping

  • Standardize tabs or spaces
  • More generic functions
  • Speed up rendering
    • disabled keyword syntax highlight to speed this up
    • keyword syntax highlighting isn't really that important
  • Compile on:
    • OpenBSD
    • FreeBSD
  • tty on BSDs
    • technically not fixed, but I added in a wsvt25 alias to termbox.

Bugs

High Priority

  • undoing is broken sometimes
  • canceled shell commands shouldn't do things
  • selecting a region and ending the cursor at curbp->b_ebuf and cutting will cause an assertion error.
  • if you edit a file and save it a lot, eventually it'll start saving binary data at the top of the file
  • if the region contains a $, it will mess up shell commands due to $'s use in shell
  • M-t transposes symbols as well
  • cutting from the last line usually breaks the editor
  • shell commands can be buggy
  • screen flickers, especially on large files
    • it appears to happen when you get farther in the file

Low Priority

  • sometimes isearch doesn't highlight the entire match when you're not current on it
  • sometimes isearch doesn't properly recenter
  • find-file crashes if you're in a deep path
  • sometimes the top row's first character is missing
  • matching <> '' and "" doesn't work right when you're on the ending one
    • I didn't fix the string '' or "" because figuring out direction is too annoying. The rule will be that you can only match '' and "" when on the front.
  • C-x b doesn't work well sometimes
  • opening files of the same name have no unique id
  • can only input and view standard emojis

Termbox

  • Basic rendering
  • some functions don't work like isearch and find-file
  • use termbox stuff for keybindings
  • highlighting
  • atto syntax highlighting
    • atto supported some very basic highlighting
  • UTF8
  • use termbox keys for keybind definitions