about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el37
1 files changed, 37 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el b/configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el
new file mode 100644
index 000000000000..0d2760e73077
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-commentary-20170413.1451/evil-commentary-integration.el
@@ -0,0 +1,37 @@
+(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)