emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 62f2c438625 3/3: Fix ses-formula-record


From: Vincent Belaïche
Subject: master 62f2c438625 3/3: Fix ses-formula-record
Date: Sun, 24 Dec 2023 16:08:19 -0500 (EST)

branch: master
commit 62f2c4386259f998442e8098d8a368835a36fb65
Author: Vincent Belaïche <vincentb1@users.sourceforge.net>
Commit: Vincent Belaïche <vincentb1@users.sourceforge.net>

    Fix ses-formula-record
    
    * lisp/ses.el (ses-is-cell-sym-p): Tighten test with checking
    argument is a local variable.
    (ses-formula-record): Fix definition.
    (ses-rename-cell): Loosen test on new-name, conversely to
    'ses-is-cell-sym-p' tightening.
---
 lisp/ses.el | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/lisp/ses.el b/lisp/ses.el
index c86871fa83f..881fe92a940 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -556,13 +556,15 @@ the corresponding cell with name PROPERTY-NAME."
 
 (defun ses-is-cell-sym-p (sym)
   "Check whether SYM point at a cell of this spread sheet."
-  (let ((rowcol (get sym 'ses-cell)))
-    (and rowcol
-        (if (eq rowcol :ses-named)
-            (and ses--named-cell-hashmap (gethash sym ses--named-cell-hashmap))
-          (and (< (car rowcol) ses--numrows)
-               (< (cdr rowcol) ses--numcols)
-               (eq (ses-cell-symbol (car rowcol) (cdr rowcol)) sym))))))
+  (and (symbolp sym)
+       (local-variable-p sym)
+       (let ((rowcol (get sym 'ses-cell)))
+         (and rowcol
+             (if (eq rowcol :ses-named)
+                 (and ses--named-cell-hashmap (gethash sym 
ses--named-cell-hashmap))
+               (and (< (car rowcol) ses--numrows)
+                    (< (cdr rowcol) ses--numcols)
+                    (eq (ses-cell-symbol (car rowcol) (cdr rowcol)) sym)))))))
 
 (defun ses--cell (sym value formula printer references)
   "Load a cell SYM from the spreadsheet file.
@@ -735,10 +737,8 @@ checking that it is a valid printer function."
 (defun ses-formula-record (formula)
   "If FORMULA is of the form \\='SYMBOL, add it to the list of symbolic 
formulas
 for this spreadsheet."
-  (when (and (eq (car-safe formula) 'quote)
-            (symbolp (cadr formula)))
-    (add-to-list 'ses--symbolic-formulas
-                (list (symbol-name (cadr formula))))))
+  (and (ses-is-cell-sym-p formula)
+    (cl-pushnew (symbol-name formula) ses--symbolic-formulas :test #'string=)))
 
 (defun ses-column-letter (col)
   "Return the alphabetic name of column number COL.
@@ -3677,9 +3677,8 @@ highlighted range in the spreadsheet."
   "Rename current cell."
   (interactive "*SEnter new name: ")
   (or
-   (and  (local-variable-p new-name)
-        (ses-is-cell-sym-p new-name)
-        (error "Already a cell name"))
+   (and (ses-is-cell-sym-p new-name)
+       (error "Already a cell name"))
    (and (boundp new-name)
        (null (yes-or-no-p
               (format-message



reply via email to

[Prev in Thread] Current Thread [Next in Thread]