orzechod

joined 1 year ago
[โ€“] orzechod@alien.top 1 points 1 year ago (2 children)

it is possible! add a lambda to eat-mode-hook which calls face-remap-add-relative for default and, optionally, fringe faces. here's an example taken from my own dotfiles:

(add-hook
  'eat-mode-hook
  (lambda ()
    (face-remap-add-relative
     'default
     :foreground "#ffffff"
     :background "#000000")
    (face-remap-add-relative
      'fringe
     :foreground "#ffffff"
     :background "#000000")))

and here's what it looks like in practice: https://imgur.com/a/9gPCio5

[โ€“] orzechod@alien.top 1 points 1 year ago (1 children)

the paragraph here gives some useful details: https://www.gnu.org/software/emacs/manual/html_node/elisp/Undo.html#index-undo_002dauto_002damalgamate

The editor command loop automatically calls undo-boundary just before executing each key sequence, so that each undo normally undoes the effects of one command. A few exceptional commands are amalgamating: these commands generally cause small changes to buffers, so with these a boundary is inserted only every 20th command, allowing the changes to be undone as a group. By default, the commands self-insert-command, which produces self-inserting input characters (see User-Level Insertion Commands), and delete-char, which deletes characters (see Deleting Text), are amalgamating.

this means emacs will group together a certain number of inserted characters into an atomic unit; it's that unit which is undone by the undo command. if you want character-by-character undo then you will need to tell emacs to not perform this grouping. one thing to try would be to add advice to the insert-char function to set that undo boundary for you upon each keystroke; I'm sure there are other ways to do this as well.