Allow also "#+NAME: table" for remote references

* lisp/org-table.el (org-table-get-remote-range): Extend regexp to
match "#+NAME: table" additionally to "#+TBLNAME: table".
* testing/lisp/test-org-table.el: Add test.
* testing/org-test.el (org-test-table-target-expect): Allow several
tables to support testing remote references in the last table.
This commit is contained in:
Michael Brand 2013-04-26 17:07:55 +02:00 committed by Nicolas Goaziou
parent e6ab7869f7
commit 92f3729857
3 changed files with 32 additions and 12 deletions

View File

@ -4996,7 +4996,8 @@ list of the fields in the rectangle."
(save-excursion
(goto-char (point-min))
(if (re-search-forward
(concat "^[ \t]*#\\+tblname:[ \t]*" (regexp-quote name-or-id) "[ \t]*$")
(concat "^[ \t]*#\\+\\(tbl\\)?name:[ \t]*"
(regexp-quote name-or-id) "[ \t]*$")
nil t)
(setq buffer (current-buffer) loc (match-beginning 0))
(setq id-loc (org-id-find name-or-id 'marker))

View File

@ -770,6 +770,24 @@ reference (with row). Mode string N."
;; "Remote reference."
;; (should
;; (string= "$3 = remote(FOO, @@#$2)" (org-table-convert-refs-to-rc "C& = remote(FOO, @@#B&)"))))
(ert-deftest test-org-table/remote-reference-access ()
"Access to remote reference."
(org-test-table-target-expect
"
#+NAME: table
| | 42 |
| replace | |
"
"
#+NAME: table
| | 42 |
| 42 | |
"
1 "#+TBLFM: $1 = remote(table, @1$2)"))
(ert-deftest test-org-table/org-at-TBLFM-p ()
(org-test-with-temp-text-in-file
"

View File

@ -239,15 +239,14 @@ get the table stable. Anyhow, if LAPS is 'iterate then iterate,
but this will run one recalculation longer. When EXPECT is nil
it will be set to TARGET.
If running a test interactively in ERT is not enough and you need
to examine the target table with e. g. the Org formula debugger
or an Emacs Lisp debugger (e. g. with point in a data field and
calling the instrumented `org-table-eval-formula') then copy and
paste the table with formula from the ERT results buffer or
temporarily substitute the `org-test-with-temp-text' of this
function with `org-test-with-temp-text-in-file'.
Consider setting `pp-escape-newlines' to nil manually."
When running a test interactively in ERT is not enough and you
need to examine the target table with e. g. the Org formula
debugger or an Emacs Lisp debugger (e. g. with point in a data
field and calling the instrumented `org-table-eval-formula') then
copy and paste the table with formula from the ERT results buffer
or temporarily substitute the `org-test-with-temp-text' of this
function with `org-test-with-temp-text-in-file'. Also consider
setting `pp-escape-newlines' to nil manually."
(require 'pp)
(let ((back pp-escape-newlines) (current-tblfm))
(unless tblfm
@ -256,9 +255,11 @@ Consider setting `pp-escape-newlines' to nil manually."
(unless expect (setq expect target))
(while (setq current-tblfm (pop tblfm))
(org-test-with-temp-text (concat target current-tblfm)
;; Search table, stop ERT at end of buffer if not found.
;; Search the last of possibly several tables, let the ERT
;; test fail if not found.
(goto-char (point-max))
(while (not (org-at-table-p))
(should (eq 0 (forward-line))))
(should (eq 0 (forward-line -1))))
(when laps
(if (and (symbolp laps) (eq laps 'iterate))
(should (org-table-recalculate 'iterate t))