mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 18:00:49 +00:00
Revert "org-macro: Expand macros only within narrowed part of buffer"
This reverts commit 82db669de6
.
This commit is contained in:
parent
4df137420d
commit
6980b02b6f
|
@ -186,56 +186,54 @@ found in the buffer with no definition in TEMPLATES.
|
|||
|
||||
Optional argument KEYWORDS, when non-nil is a list of keywords,
|
||||
as strings, where macro expansion is allowed."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(let ((properties-regexp
|
||||
(format "\\`EXPORT_%s\\+?\\'" (regexp-opt keywords)))
|
||||
record)
|
||||
(while (re-search-forward "{{{[-A-Za-z0-9_]" nil t)
|
||||
(unless (save-match-data (org-in-commented-heading-p))
|
||||
(let* ((datum (save-match-data (org-element-context)))
|
||||
(type (org-element-type datum))
|
||||
(macro
|
||||
(cond
|
||||
((eq type 'macro) datum)
|
||||
;; In parsed keywords and associated node
|
||||
;; properties, force macro recognition.
|
||||
((or (and (eq type 'keyword)
|
||||
(member (org-element-property :key datum)
|
||||
keywords))
|
||||
(and (eq type 'node-property)
|
||||
(string-match-p properties-regexp
|
||||
(org-element-property :key
|
||||
datum))))
|
||||
(save-excursion
|
||||
(goto-char (match-beginning 0))
|
||||
(org-element-macro-parser))))))
|
||||
(when macro
|
||||
(let* ((value (org-macro-expand macro templates))
|
||||
(begin (org-element-property :begin macro))
|
||||
(signature (list begin
|
||||
macro
|
||||
(org-element-property :args macro))))
|
||||
;; Avoid circular dependencies by checking if the same
|
||||
;; macro with the same arguments is expanded at the
|
||||
;; same position twice.
|
||||
(cond ((member signature record)
|
||||
(error "Circular macro expansion: %s"
|
||||
(org-element-property :key macro)))
|
||||
(value
|
||||
(push signature record)
|
||||
(delete-region
|
||||
begin
|
||||
;; Preserve white spaces after the macro.
|
||||
(progn (goto-char (org-element-property :end macro))
|
||||
(skip-chars-backward " \t")
|
||||
(point)))
|
||||
;; Leave point before replacement in case of
|
||||
;; recursive expansions.
|
||||
(save-excursion (insert value)))
|
||||
(finalize
|
||||
(error "Undefined Org macro: %s; aborting"
|
||||
(org-element-property :key macro))))))))))))
|
||||
(org-with-wide-buffer
|
||||
(goto-char (point-min))
|
||||
(let ((properties-regexp (format "\\`EXPORT_%s\\+?\\'"
|
||||
(regexp-opt keywords)))
|
||||
record)
|
||||
(while (re-search-forward "{{{[-A-Za-z0-9_]" nil t)
|
||||
(unless (save-match-data (org-in-commented-heading-p))
|
||||
(let* ((datum (save-match-data (org-element-context)))
|
||||
(type (org-element-type datum))
|
||||
(macro
|
||||
(cond
|
||||
((eq type 'macro) datum)
|
||||
;; In parsed keywords and associated node
|
||||
;; properties, force macro recognition.
|
||||
((or (and (eq type 'keyword)
|
||||
(member (org-element-property :key datum) keywords))
|
||||
(and (eq type 'node-property)
|
||||
(string-match-p properties-regexp
|
||||
(org-element-property :key datum))))
|
||||
(save-excursion
|
||||
(goto-char (match-beginning 0))
|
||||
(org-element-macro-parser))))))
|
||||
(when macro
|
||||
(let* ((value (org-macro-expand macro templates))
|
||||
(begin (org-element-property :begin macro))
|
||||
(signature (list begin
|
||||
macro
|
||||
(org-element-property :args macro))))
|
||||
;; Avoid circular dependencies by checking if the same
|
||||
;; macro with the same arguments is expanded at the
|
||||
;; same position twice.
|
||||
(cond ((member signature record)
|
||||
(error "Circular macro expansion: %s"
|
||||
(org-element-property :key macro)))
|
||||
(value
|
||||
(push signature record)
|
||||
(delete-region
|
||||
begin
|
||||
;; Preserve white spaces after the macro.
|
||||
(progn (goto-char (org-element-property :end macro))
|
||||
(skip-chars-backward " \t")
|
||||
(point)))
|
||||
;; Leave point before replacement in case of
|
||||
;; recursive expansions.
|
||||
(save-excursion (insert value)))
|
||||
(finalize
|
||||
(error "Undefined Org macro: %s; aborting"
|
||||
(org-element-property :key macro))))))))))))
|
||||
|
||||
(defun org-macro-escape-arguments (&rest args)
|
||||
"Build macro's arguments string from ARGS.
|
||||
|
|
|
@ -108,10 +108,10 @@
|
|||
"* H1\n:PROPERTIES:\n:A: 1\n:END:\n* H2\n{{{property(A,*???)}}}<point>"
|
||||
(org-macro-initialize-templates)
|
||||
(org-macro-replace-all org-macro-templates)))
|
||||
;; Macro expansion preserves narrowing.
|
||||
;; Macro expansion ignores narrowing.
|
||||
(should
|
||||
(string-match-p
|
||||
"{{{macro}}}"
|
||||
(string-match
|
||||
"expansion"
|
||||
(org-test-with-temp-text
|
||||
"#+MACRO: macro expansion\n{{{macro}}}\n<point>Contents"
|
||||
(narrow-to-region (point) (point-max))
|
||||
|
|
Loading…
Reference in a new issue