Browse Source

Fix multiple TBLFM

Simplify commit release_8.2.4-14-geb28fe4 and commit
release_8.2.5c-8-ga2619b7.

* org-table.el (org-table-fix-formulas): Handle multiple #+TBLFM lines
with `forward-line'.
Michael Brand 11 years ago
parent
commit
34af2fe7ff
1 changed files with 28 additions and 29 deletions
  1. 28 29
      lisp/org-table.el

+ 28 - 29
lisp/org-table.el

@@ -2274,36 +2274,35 @@ KEY is \"@\" or \"$\".  REPLACE is an alist of numbers to replace.
 For all numbers larger than LIMIT, shift them by DELTA."
   (save-excursion
     (goto-char (org-table-end))
-    (let ((case-fold-search t)
-	  (s-end (min (save-excursion (re-search-forward "^\\S-*$\\|\\'" nil t))
-		      (save-excursion (org-end-of-subtree t)))))
-      (while (re-search-forward "[ \t]*#\\+tblfm:" s-end t)
-	(let ((msg "The formulas in #+TBLFM have been updated")
-	      (re (concat key "\\([0-9]+\\)"))
-	      (re2
-	       (when remove
-		 (if (or (equal key "$") (equal key "$LR"))
-		     (format "\\(@[0-9]+\\)?%s%d=.*?\\(::\\|$\\)"
-			     (regexp-quote key) remove)
-		   (format "@%d\\$[0-9]+=.*?\\(::\\|$\\)" remove))))
-	      s n a)
-	  (when remove
-	    (while (re-search-forward re2 (point-at-eol) t)
-	      (unless (save-match-data (org-in-regexp "remote([^)]+?)"))
-		(if (equal (char-before (match-beginning 0)) ?.)
-		    (user-error "Change makes TBLFM term %s invalid, use undo to recover"
-				(match-string 0))
-		  (replace-match "")))))
-	  (while (re-search-forward re (point-at-eol) t)
+    (while (let ((case-fold-search t)) (looking-at "[ \t]*#\\+tblfm:"))
+      (let ((msg "The formulas in #+TBLFM have been updated")
+	    (re (concat key "\\([0-9]+\\)"))
+	    (re2
+	     (when remove
+	       (if (or (equal key "$") (equal key "$LR"))
+		   (format "\\(@[0-9]+\\)?%s%d=.*?\\(::\\|$\\)"
+			   (regexp-quote key) remove)
+		 (format "@%d\\$[0-9]+=.*?\\(::\\|$\\)" remove))))
+	    s n a)
+	(when remove
+	  (while (re-search-forward re2 (point-at-eol) t)
 	    (unless (save-match-data (org-in-regexp "remote([^)]+?)"))
-	      (setq s (match-string 1) n (string-to-number s))
-	      (cond
-	       ((setq a (assoc s replace))
-		(replace-match (concat key (cdr a)) t t)
-		(message msg))
-	       ((and limit (> n limit))
-		(replace-match (concat key (int-to-string (+ n delta))) t t)
-		(message msg))))))))))
+	      (if (equal (char-before (match-beginning 0)) ?.)
+		  (user-error
+		   "Change makes TBLFM term %s invalid, use undo to recover"
+		   (match-string 0))
+		(replace-match "")))))
+	(while (re-search-forward re (point-at-eol) t)
+	  (unless (save-match-data (org-in-regexp "remote([^)]+?)"))
+	    (setq s (match-string 1) n (string-to-number s))
+	    (cond
+	     ((setq a (assoc s replace))
+	      (replace-match (concat key (cdr a)) t t)
+	      (message msg))
+	     ((and limit (> n limit))
+	      (replace-match (concat key (int-to-string (+ n delta))) t t)
+	      (message msg))))))
+      (forward-line))))
 
 (defun org-table-get-specials ()
   "Get the column names and local parameters for this table."