浏览代码

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.
Michael Brand 12 年之前
父节点
当前提交
92f3729857
共有 3 个文件被更改,包括 32 次插入12 次删除
  1. 2 1
      lisp/org-table.el
  2. 18 0
      testing/lisp/test-org-table.el
  3. 12 11
      testing/org-test.el

+ 2 - 1
lisp/org-table.el

@@ -4996,7 +4996,8 @@ list of the fields in the rectangle."
 	  (save-excursion
 	  (save-excursion
 	    (goto-char (point-min))
 	    (goto-char (point-min))
 	    (if (re-search-forward
 	    (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)
 		 nil t)
 		(setq buffer (current-buffer) loc (match-beginning 0))
 		(setq buffer (current-buffer) loc (match-beginning 0))
 	      (setq id-loc (org-id-find name-or-id 'marker))
 	      (setq id-loc (org-id-find name-or-id 'marker))

+ 18 - 0
testing/lisp/test-org-table.el

@@ -770,6 +770,24 @@ reference (with row).  Mode string N."
 ;;   "Remote reference."
 ;;   "Remote reference."
 ;;   (should
 ;;   (should
 ;;    (string= "$3 = remote(FOO, @@#$2)" (org-table-convert-refs-to-rc "C& = remote(FOO, @@#B&)"))))
 ;;    (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 ()
 (ert-deftest test-org-table/org-at-TBLFM-p ()
   (org-test-with-temp-text-in-file
   (org-test-with-temp-text-in-file
       "
       "

+ 12 - 11
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
 but this will run one recalculation longer.  When EXPECT is nil
 it will be set to TARGET.
 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)
   (require 'pp)
   (let ((back pp-escape-newlines) (current-tblfm))
   (let ((back pp-escape-newlines) (current-tblfm))
     (unless tblfm
     (unless tblfm
@@ -256,9 +255,11 @@ Consider setting `pp-escape-newlines' to nil manually."
     (unless expect (setq expect target))
     (unless expect (setq expect target))
     (while (setq current-tblfm (pop tblfm))
     (while (setq current-tblfm (pop tblfm))
       (org-test-with-temp-text (concat target current-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))
 	(while (not (org-at-table-p))
-	  (should (eq 0 (forward-line))))
+	  (should (eq 0 (forward-line -1))))
 	(when laps
 	(when laps
 	  (if (and (symbolp laps) (eq laps 'iterate))
 	  (if (and (symbolp laps) (eq laps 'iterate))
 	      (should (org-table-recalculate 'iterate t))
 	      (should (org-table-recalculate 'iterate t))