mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-07-20 11:56:29 +00:00
TBLFM remote ref: Improve indirection
* lisp/org-table.el (org-table-remote-reference-indirection): Use the optional arg START of `string-match' to improve performance and to avoid endless loop on user error.
This commit is contained in:
parent
bc1d54b84b
commit
9a5b8a7434
|
@ -5017,19 +5017,17 @@ For example \"remote($1, @>$2)\" => \"remote(year_2013, @>$1)\".
|
|||
This indirection works only with the format @ROW$COLUMN. The
|
||||
format \"B3\" is not supported because it can not be
|
||||
distinguished from a plain table name or ID."
|
||||
(let ((index-last -1) index-this)
|
||||
(while (and (setq index-this
|
||||
(string-match (concat
|
||||
(let ((start 0))
|
||||
(while (string-match (concat
|
||||
;; Same as in `org-table-eval-formula'.
|
||||
"\\<remote([ \t]*\\("
|
||||
;; Allow "$1", "@<", "$-1", "@<<$1" etc.
|
||||
"[@$][^,]+"
|
||||
"[@$][^,)]+"
|
||||
;; Same as in `org-table-eval-formula'.
|
||||
"\\)[ \t]*,[ \t]*\\([^\n)]+\\))")
|
||||
form))
|
||||
;; Protect from last replace replaced itself.
|
||||
(/= index-last index-this))
|
||||
(setq index-last index-this)
|
||||
form
|
||||
start)
|
||||
(setq start (match-end 0))
|
||||
;; Substitute the remote reference with the value found in the
|
||||
;; field.
|
||||
(setq form
|
||||
|
|
Loading…
Reference in a new issue