doomemacs/modules/editor/objed/config.el
Andrew Whatson 9e8517c59e Add :editor objed module
Integrates `objed` with Doom Emacs to provide text-object manipulation
for non-evil users.

See https://github.com/clemera/objed
2019-05-30 22:35:27 +10:00

30 lines
1.1 KiB
EmacsLisp

;;; editor/objed/config.el -*- lexical-binding: t; -*-
(def-package! objed
:after-call pre-command-hook
:config
;; Prevent undo actions from exiting edit state
(add-to-list 'objed-keeper-commands 'undo-tree-undo)
(add-to-list 'objed-keeper-commands 'undo-tree-redo)
(add-to-list 'objed-keeper-commands 'undo-tree-visualize)
(defvar +objed--extra-face-remaps nil)
(defun +objed*add-face-remaps (&rest _)
"Add extra face remaps when objed activates."
(when (memq 'objed-hl (assq 'hl-line face-remapping-alist))
(push (face-remap-add-relative 'solaire-hl-line-face 'objed-hl)
+objed--extra-face-remaps)))
(defun +objed*remove-face-remaps (&rest _)
"Remove extra face remaps when objed de-activates."
(unless (memq 'objed-hl (assq 'hl-line face-remapping-alist))
(dolist (remap +objed--extra-face-remaps)
(face-remap-remove-relative remap))
(setq +objed--extra-face-remaps nil)))
(advice-add 'objed--init :after #'+objed*add-face-remaps)
(advice-add 'objed--reset :after #'+objed*remove-face-remaps)
(objed-mode +1))