From 92f3729857ac7577be442d46f663f615d95bcad0 Mon Sep 17 00:00:00 2001 From: Michael Brand Date: Fri, 26 Apr 2013 17:07:55 +0200 Subject: [PATCH] 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. --- lisp/org-table.el | 3 ++- testing/lisp/test-org-table.el | 18 ++++++++++++++++++ testing/org-test.el | 23 ++++++++++++----------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index 93c33b2b3..8e461c8e7 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -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)) diff --git a/testing/lisp/test-org-table.el b/testing/lisp/test-org-table.el index 732ddb304..52cdc74fb 100644 --- a/testing/lisp/test-org-table.el +++ b/testing/lisp/test-org-table.el @@ -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 " diff --git a/testing/org-test.el b/testing/org-test.el index 0c9ca58ee..8c81115de 100644 --- a/testing/org-test.el +++ b/testing/org-test.el @@ -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))