summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--evil-org.el17
1 files 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