From 38414a636f109f95ad6e8e7b7a67a85fd1cb424c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 4 Jul 2018 13:16:11 +0200 Subject: [PATCH] Fix evil-org's o/O in nested plain lists Thanks by @fuxialexander --- modules/lang/org/autoload/org.el | 11 +++++++++++ modules/lang/org/config.el | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/modules/lang/org/autoload/org.el b/modules/lang/org/autoload/org.el index 7a27bdeb1..9021a29f3 100644 --- a/modules/lang/org/autoload/org.el +++ b/modules/lang/org/autoload/org.el @@ -427,3 +427,14 @@ with `org-cycle')." "Auto-align table under cursor and re-calculate formulas." (when (eq major-mode 'org-mode) (+org|realign-table-maybe))) + +;;;###autoload +(defun +org*evil-org-open-below (orig-fn count) + "Fix o/O creating new list items in the middle of nested plain lists. Only has +an effect when `evil-org-special-o/O' has `item' in it (not the default)." + (cl-letf (((symbol-function 'end-of-visible-line) + (lambda () + (org-end-of-item) + (backward-char 1) + (evil-append nil)))) + (funcall orig-fn count))) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 92bf7c104..7c018deeb 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -255,6 +255,10 @@ between the two." (add-hook! 'org-tab-first-hook #'(+org|indent-maybe +org|yas-expand-maybe)) ;; Tell `doom/delete-backward-char' to respect org tables (add-hook 'doom-delete-backward-functions #'+org|delete-backward-char) + ;; Don't split current tree on M-RET + (setq org-M-RET-may-split-line nil + ;; insert new headings after current subtree rather than inside it + org-insert-heading-respect-content t) ;; Custom keybinds (define-key! org-mode-map (kbd "C-c C-S-l") #'+org/remove-link @@ -272,6 +276,10 @@ between the two." (add-hook 'org-tab-first-hook #'+org|toggle-only-current-fold t) ;; Fix newline-and-indent behavior in src blocks (advice-add #'org-return-indent :after #'+org*return-indent-in-src-blocks) + ;; Fix o/O creating new list items in the middle of nested plain lists. Only + ;; has an effect when `evil-org-special-o/O' has `item' in it (not the + ;; default). + (advice-add #'evil-org-open-below :around #'+org*evil-org-open-below) ;; Undo `evil-collection-outline' (evil-define-key* 'normal outline-mode-map "^" nil