From e91f6db1e3ddae0f0db035eaf4699e423308476f Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Thu, 25 Aug 2011 08:16:00 +0200 Subject: [PATCH] Keep table row/column removal from creating invalid formulas * lisp/org-table.el (org-table-fix-formulas): Throw error when changing formula leads to an invalid formula. This fix catches at least one case, the one described by Nicolas: > | 1 | 2 | 3 | > | 1 | 2 | 3 | > #+TBLFM: @2$1..@2$3=@1 > If I remove the second column (M-S-Left), the formula is correctly > updated. But when I remove the last column, the formula gets partly > deleted and becomes: > > #+TBLFM: @2$1.. > --- lisp/org-table.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index 03b11263c..c35e7708d 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -2136,7 +2136,10 @@ For all numbers larger than LIMIT, shift them by DELTA." (when remove (while (re-search-forward re2 (point-at-eol) t) (unless (save-match-data (org-in-regexp "remote([^)]+?)")) - (replace-match "")))) + (if (equal (char-before (match-beginning 0)) ?.) + (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))