From d2232c0660a64d423a854acf250f1c30a2c74195 Mon Sep 17 00:00:00 2001 From: Somelauw Date: Sun, 27 May 2018 21:19:09 +0200 Subject: Make :wq do the right thing for org-src-buffers First it saves changes, then it exits --- evil-org.el | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/evil-org.el b/evil-org.el index 4ef96ae..1144219 100644 --- a/evil-org.el +++ b/evil-org.el @@ -797,15 +797,26 @@ Optional argument THEME list of themes. See evil-org-keytheme for a list of valu evil-org-mode-map))) ;;; vim-like confirm/abort for capture and src -;;; Taken from mwillsey (Max Willsey) on https://github.com/syl20bnr/spacemacs/pull/7400 +(defmacro evil-org-save-and-closer (close-cmd) + "Create a command to save and close from a special org buffer." + (let ((newcmd (intern (concat "evil-org-save-and-" (symbol-name close-cmd))))) + `(progn + (defun ,newcmd () + ,(concat "Call `evil-write' followed by `" (symbol-name close-cmd) "'.") + (interactive) + (call-interactively #'evil-write) + (call-interactively #',close-cmd)) + #',newcmd))) + +;; Taken from mwillsey (Max Willsey) on https://github.com/syl20bnr/spacemacs/pull/7400 (with-eval-after-load 'org-capture (define-key org-capture-mode-map [remap evil-save-and-close] 'org-capture-finalize) (define-key org-capture-mode-map [remap evil-save-modified-and-close] 'org-capture-finalize) (define-key org-capture-mode-map [remap evil-quit] 'org-capture-kill)) (with-eval-after-load 'org-src - (define-key org-src-mode-map [remap evil-save-and-close] 'org-edit-src-exit) - (define-key org-src-mode-map [remap evil-save-modified-and-close] 'org-edit-src-exit) + (define-key org-src-mode-map [remap evil-save-and-close] (evil-org-save-and-closer org-edit-src-exit)) + (define-key org-src-mode-map [remap evil-save-modified-and-close] (evil-org-save-and-closer org-edit-src-exit)) (define-key org-src-mode-map [remap evil-quit] 'org-edit-src-abort)) (with-eval-after-load 'org-table -- cgit v1.0