From 177f0758536582d1770ac79129172facb873bfa3 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Tue, 26 Apr 2022 23:39:48 +0100 Subject: [PATCH] feat(editor): replace undo-tree with undo-fu and vundo Also replace undohist with undo-fu-session. Overall this seems to yield a more reliable undo history, as undo-fu and vundo supposedly operate with vanilla emacs undo history state, while undo-tree supposedly does some custom tweaks to the undo state. --- core/siren-core-modules.el | 5 +++-- modules/editor/siren-undo-fu-session.el | 23 +++++++++++++++++++++++ modules/editor/siren-undo-fu.el | 22 ++++++++++++++++++++++ modules/editor/siren-vundo.el | 18 ++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 modules/editor/siren-undo-fu-session.el create mode 100644 modules/editor/siren-undo-fu.el create mode 100644 modules/editor/siren-vundo.el diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 477a385..5008658 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -39,9 +39,10 @@ (require 'siren-rainbow) (require 'siren-recentf) (require 'siren-savehist) -(require 'siren-undo-tree) -(require 'siren-undohist) +(require 'siren-undo-fu) +(require 'siren-undo-fu-session) (require 'siren-uniquify) +(require 'siren-vundo) (require 'siren-which-key) (require 'siren-whitespace) diff --git a/modules/editor/siren-undo-fu-session.el b/modules/editor/siren-undo-fu-session.el new file mode 100644 index 0000000..2128acd --- /dev/null +++ b/modules/editor/siren-undo-fu-session.el @@ -0,0 +1,23 @@ +;;; siren-undo-fu-session.el --- jimeh's Emacs Siren: undo-fu-session configuration. + +;;; Commentary: + +;; Basic configuration for undo-fu-session. + +;;; Code: + +(use-package undo-fu-session + :demand + :custom + (undo-fu-session-directory (siren-cache-dir "undo-fu-session")) + (undo-fu-session-linear nil) + (undo-fu-session-compression 'gz) + (undo-fu-session-file-limit nil) + (undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" + "/git-rebase-todo\\'")) + + :config + (global-undo-fu-session-mode)) + +(provide 'siren-undo-fu-session) +;;; siren-undo-fu-session.el ends here diff --git a/modules/editor/siren-undo-fu.el b/modules/editor/siren-undo-fu.el new file mode 100644 index 0000000..2588e98 --- /dev/null +++ b/modules/editor/siren-undo-fu.el @@ -0,0 +1,22 @@ +;;; siren-undo-fu.el --- jimeh's Emacs Siren: undo-fu configuration. + +;;; Commentary: + +;; Basic configuration for undo-fu. + +;;; Code: + +(use-package undo-fu + :demand + :general + ("M--" 'undo-fu-only-undo) + ("M-_" 'undo-fu-only-redo) + ("s-z" 'undo-fu-only-undo) + ("s-Z" 'undo-fu-only-redo) + + :custom + (undo-fu-allow-undo-in-region nil) + (undo-fu-ignore-keyboard-quit t)) + +(provide 'siren-undo-fu) +;;; siren-undo-fu.el ends here diff --git a/modules/editor/siren-vundo.el b/modules/editor/siren-vundo.el new file mode 100644 index 0000000..0e0b5ff --- /dev/null +++ b/modules/editor/siren-vundo.el @@ -0,0 +1,18 @@ +;;; siren-vundo.el --- jimeh's Emacs Siren: vundo configuration. + +;;; Commentary: + +;; Basic configuration for vundo. + +;;; Code: + +(use-package vundo + :demand + :general + ("C-x u" 'vundo) + + :custom + (vundo-glyph-alist vundo-unicode-symbols)) + +(provide 'siren-vundo) +;;; siren-vundo.el ends here