org-macs: Move a macro

This commit is contained in:
Nicolas Goaziou 2018-07-17 11:41:58 +02:00
parent a2636b5286
commit 417479238b
1 changed files with 10 additions and 17 deletions

View File

@ -200,6 +200,16 @@ because otherwise all these markers will point to nowhere."
`(let (pop-up-frames display-buffer-alist)
,@body))
(defmacro org-table-with-shrunk-field (&rest body)
"Save field shrunk state, execute BODY and restore state."
(declare (debug (body)))
(org-with-gensyms (end shrunk size)
`(let* ((,shrunk (save-match-data (org-table--shrunk-field)))
(,end (and ,shrunk (copy-marker (overlay-end ,shrunk) t)))
(,size (and ,shrunk (- ,end (overlay-start ,shrunk)))))
(when ,shrunk (delete-overlay ,shrunk))
(unwind-protect (progn ,@body)
(when ,shrunk (move-overlay ,shrunk (- ,end ,size) ,end))))))
;;; Buffer and windows
@ -1035,23 +1045,6 @@ move it back by one char before doing this check."
(backward-char 1))
(org-invisible-p)))
;;; Tables
;; This macro is placed here because it is used in org.el.
;; org-table.el requires org.el. So, if we put this macro in its
;; natural place (org-table), a require loop would result.
(defmacro org-table-with-shrunk-field (&rest body)
"Save field shrunk state, execute BODY and restore state."
(declare (debug (body)))
(org-with-gensyms (end shrunk size)
`(let* ((,shrunk (save-match-data (org-table--shrunk-field)))
(,end (and ,shrunk (copy-marker (overlay-end ,shrunk) t)))
(,size (and ,shrunk (- ,end (overlay-start ,shrunk)))))
(when ,shrunk (delete-overlay ,shrunk))
(unwind-protect (progn ,@body)
(when ,shrunk (move-overlay ,shrunk (- ,end ,size) ,end))))))
;;; Time