From 9e8517c59e20a881fe0a5a167b464c3b08df12dc Mon Sep 17 00:00:00 2001 From: Andrew Whatson Date: Fri, 19 Apr 2019 15:41:55 +1000 Subject: [PATCH 1/2] Add :editor objed module Integrates `objed` with Doom Emacs to provide text-object manipulation for non-evil users. See https://github.com/clemera/objed --- init.example.el | 1 + modules/editor/objed/README.org | 11 +++++++++++ modules/editor/objed/config.el | 30 ++++++++++++++++++++++++++++++ modules/editor/objed/packages.el | 4 ++++ modules/ui/modeline/config.el | 4 ++-- 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 modules/editor/objed/README.org create mode 100644 modules/editor/objed/config.el create mode 100644 modules/editor/objed/packages.el diff --git a/init.example.el b/init.example.el index e56360472..9289e42fc 100644 --- a/init.example.el +++ b/init.example.el @@ -49,6 +49,7 @@ ;;(format +onsave) ; automated prettiness ;;lispy ; vim for lisp, for people who dont like vim multiple-cursors ; editing in many places at once + ;;objed ; text object editing for the innocent ;;parinfer ; turn lisp into python, sort of rotate-text ; cycle region at point between text candidates snippets ; my elves. They type so I don't have to diff --git a/modules/editor/objed/README.org b/modules/editor/objed/README.org new file mode 100644 index 000000000..fb8cecb46 --- /dev/null +++ b/modules/editor/objed/README.org @@ -0,0 +1,11 @@ +#+TITLE: :editor objed + +This modules adds [[https://github.com/clemera/objed][objed]], a global minor-mode for navigating and manipulating +text objects. It combines the ideas of versor-mode and other editors like Vim or +Kakoune and tries to align them with regular Emacs conventions. + +Note that `objed` is intended as an *alternative* to the `evil` module, for +people who prefer standard Emacs key-bindings and conventions. It's not +recommended to use these modules together. + +See the project [[https://github.com/clemera/objed][README]] for information on keybinds and usage. diff --git a/modules/editor/objed/config.el b/modules/editor/objed/config.el new file mode 100644 index 000000000..67bc792bb --- /dev/null +++ b/modules/editor/objed/config.el @@ -0,0 +1,30 @@ +;;; 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)) diff --git a/modules/editor/objed/packages.el b/modules/editor/objed/packages.el new file mode 100644 index 000000000..56bc61702 --- /dev/null +++ b/modules/editor/objed/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; editor/objed/packages.el + +(package! objed) diff --git a/modules/ui/modeline/config.el b/modules/ui/modeline/config.el index f6c4b95de..68b6e8284 100644 --- a/modules/ui/modeline/config.el +++ b/modules/ui/modeline/config.el @@ -57,11 +57,11 @@ ;; Remove unused segments & extra padding (doom-modeline-def-modeline 'main '(bar window-number matches buffer-info remote-host buffer-position selection-info) - '(misc-info persp-name irc mu4e github debug input-method buffer-encoding lsp major-mode process vcs checker)) + '(objed-state misc-info persp-name irc mu4e github debug input-method buffer-encoding lsp major-mode process vcs checker)) (doom-modeline-def-modeline 'special '(bar window-number matches buffer-info-simple buffer-position selection-info) - '(misc-info persp-name debug input-method irc-buffers buffer-encoding lsp major-mode process checker)) + '(objed-state misc-info persp-name debug input-method irc-buffers buffer-encoding lsp major-mode process checker)) (doom-modeline-def-modeline 'project '(bar window-number buffer-default-directory) From 563dfac8fa2d78acbf5dab782cecf7f666d81633 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 30 May 2019 13:03:56 -0400 Subject: [PATCH 2/2] Conform editor/objed README to conventions --- modules/editor/objed/README.org | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/editor/objed/README.org b/modules/editor/objed/README.org index fb8cecb46..fb557af79 100644 --- a/modules/editor/objed/README.org +++ b/modules/editor/objed/README.org @@ -1,11 +1,13 @@ -#+TITLE: :editor objed +#+TITLE: editor/objed +#+DATE: May 30, 2019 +#+SINCE: v2.1 This modules adds [[https://github.com/clemera/objed][objed]], a global minor-mode for navigating and manipulating text objects. It combines the ideas of versor-mode and other editors like Vim or Kakoune and tries to align them with regular Emacs conventions. -Note that `objed` is intended as an *alternative* to the `evil` module, for -people who prefer standard Emacs key-bindings and conventions. It's not -recommended to use these modules together. +Note that =objed= is intended as an *alternative* to =evil=, for people who +prefer standard Emacs key-bindings and conventions. It's not recommended to use +these modules together. -See the project [[https://github.com/clemera/objed][README]] for information on keybinds and usage. +[[https://github.com/clemera/objed][See the objed project README]] for information on keybinds and usage.