tvl-depot/configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el
William Carroll 9da3ffee41 Update Emacs packages
This is a massive diff that I had to do in a hurry - when leaving
Urbint. I'm pretty sure that most of these are updating Emacs packages,
but I'm not positive.
2018-10-02 09:54:39 -04:00

37 lines
1.3 KiB
EmacsLisp

(declare-function org-in-src-block-p "org")
(defmacro evil-commentary/org-babel-do-in-edit-buffer (beg end &rest body)
"Do `org-babel-do-in-edit-buffer' and restore view.
Return the same value as `org-babel-do-in-edit-buffer'. Save top
line of current window and restore it if sucess."
(declare (indent defun))
`(when (and (fboundp 'org-babel-do-in-edit-buffer)
(org-in-src-block-p t))
(let ((top-line (line-number-at-pos (window-start)))
(current-point (point))
found)
(push-mark ,beg)
(goto-char ,end)
(setq mark-active t)
(setq found (eval '(org-babel-do-in-edit-buffer
,@body)))
(pop-mark)
(if (not found)
(goto-char current-point)
(save-excursion
(scroll-up 1) ; stupid fix
(goto-char (point-min))
(forward-line (1- top-line))
(recenter 0)))
found)))
;;;###autoload
(defun evil-commentary/org-comment-or-uncomment-region (beg end)
"Comment function for `org-mode'."
(interactive "r")
(unless (evil-commentary/org-babel-do-in-edit-buffer beg end
(call-interactively 'evil-commentary))
(comment-or-uncomment-region beg end)))
(provide 'evil-commentary-integration)