emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r115859: Reverted revision 115838.


From: Vincent Belaïche
Subject: [Emacs-diffs] trunk r115859: Reverted revision 115838.
Date: Fri, 03 Jan 2014 14:23:03 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115859
revision-id: address@hidden
parent: address@hidden
committer: Vincent Belaïche  <address@hidden>
branch nick: trunk
timestamp: Fri 2014-01-03 15:18:24 +0100
message:
  Reverted revision 115838.
modified:
  doc/misc/ChangeLog             changelog-20091113204419-o5vbwnq5f7feedwu-6331
  doc/misc/ses.texi              ses.texi-20091113204419-o5vbwnq5f7feedwu-6319
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/ses.el                    ses.el-20091113204419-o5vbwnq5f7feedwu-2447
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog        2014-01-03 04:10:07 +0000
+++ b/doc/misc/ChangeLog        2014-01-03 14:18:24 +0000
@@ -19,10 +19,6 @@
 
        * eshell.texi (top): Fix incorrect info filename in an xref.
 
-2014-01-02  Vincent Belaïche  <address@hidden>
-
-       * ses.texi: Add documentation for local printer functions.
-
 2014-01-02  Glenn Morris  <address@hidden>
 
        * Makefile.in (cc_mode_deps): Rename from (typo) ccmode_deps.

=== modified file 'doc/misc/ses.texi'
--- a/doc/misc/ses.texi 2014-01-02 21:05:34 +0000
+++ b/doc/misc/ses.texi 2014-01-03 14:18:24 +0000
@@ -434,13 +434,6 @@
 Centering with tildes (~) and spill-over.
 @end table
 
-You can define printer function local to a sheet with command
address@hidden For instance define printer
address@hidden to @code{"%.2f"} and then use symbol @samp{foo} as a
-printer function. Then, if you call again
address@hidden on @samp{foo} to redefine it as
address@hidden"%.3f"} all the cells using printer @samp{foo} will be reprinted
-accordingly.
 
 @node Clearing cells
 @section Clearing cells

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-01-03 14:15:53 +0000
+++ b/lisp/ChangeLog    2014-01-03 14:18:24 +0000
@@ -45,34 +45,6 @@
        * mail/rmail.el (rmail-get-coding-function): Variable.
        (rmail-get-coding-system): Use it.
 
-2014-01-02  Vincent Belaïche  <address@hidden>
-
-       * ses.el (ses-initial-global-parameters-re): New defconst, a
-       specific regexp is needed now that ses.el can handle both
-       file-format 2 (no local printers) and 3 (may have local printers).
-       (silence compiler): Add local variables needed for local printer
-       handling.
-       (ses-set-localvars): Handle hashmap initialisation.
-       (ses-paramlines-plist): Add param-line for number of local printers.
-       (ses-paramfmt-plist): New defconst, needed for code factorization
-       between functions `ses-set-parameter' and
-       `ses-file-format-extend-paramter-list'
-       (ses-make-local-printer-info): New defsubst.
-       (ses-locprn-get-compiled, ses-locprn-compiled-aset)
-       (ses-locprn-get-def, ses-locprn-def-aset, ses-locprn-get-number)
-       (ses-cell-printer-aset): New defmacro.
-       (ses-local-printer-compile): New defun.
-       (ses-local-printer): New defmacro.
-       (ses-printer-validate, ses-call-printer): Add support for local
-       printer functions.
-       (ses-file-format-extend-paramter-list): New defun.
-       (ses-set-parameter): Use const `ses-paramfmt-plist' for code 
factorization.
-       (ses-load): Add support for local
-       printer functions.
-       (ses-read-printer): Update docstring and add support for local printer 
functions.
-       (ses-refresh-local-printer, ses-define-local-printer): New defun.
-       (ses-safe-printer): Add support for local printer functions.
-
 2013-12-31  Eli Zaretskii  <address@hidden>
 
        * international/mule-conf.el: Unify the charset indian-is13194.

=== modified file 'lisp/ses.el'
--- a/lisp/ses.el       2014-01-03 14:15:53 +0000
+++ b/lisp/ses.el       2014-01-03 14:18:24 +0000
@@ -238,10 +238,6 @@
   "\n( ;Global parameters (these are read first)\n 2 ;SES file-format\n 1 
;numrows\n 1 ;numcols\n)\n\n"
   "Initial contents for the three-element list at the bottom of the data 
area.")
 
-(defconst ses-initial-global-parameters-re
-  "\n( ;Global parameters (these are read first)\n [23] ;SES file-format\n 
[0-9]+ ;numrows\n [0-9]+ ;numcols\n\\( [0-9]+ ;numlocprn\n\\)?)\n\n"
-  "Match Global parameters for .")
-
 (defconst ses-initial-file-trailer
   ";; Local Variables:\n;; mode: ses\n;; End:\n"
   "Initial contents for the file-trailer area at the bottom of the file.")
@@ -275,17 +271,11 @@
 ;; Local variables and constants
 ;;----------------------------------------------------------------------------
 
-(eval-and-compile ; silence compiler
+(eval-and-compile
   (defconst ses-localvars
     '(ses--blank-line ses--cells ses--col-printers
       ses--col-widths ses--curcell ses--curcell-overlay
       ses--default-printer
-      (ses--local-printer-hashmap . :hashmap)
-      ;; the list is there to remember the order of local printers like there
-      ;; are written to the SES filen which service the hashmap does not
-      ;; provide.
-      ses--local-printer-list
-      (ses--numlocprn . 0); count of local printers
       ses--deferred-narrow ses--deferred-recalc
       ses--deferred-write ses--file-format
       ses--named-cell-hashmap
@@ -308,20 +298,7 @@
      ((symbolp x)
       (set (make-local-variable x) nil))
      ((consp x)
-      (cond
-       ((integerp (cdr x))
-       (set (make-local-variable (car x)) (cdr x)))
-       ((eq (cdr x) :hashmap)
-       (set (make-local-variable (car x))
-            (if (boundp (car x))
-                (let ((xv (symbol-value (car x))))
-                  (if (hash-table-p xv)
-                      (clrhash xv)
-                    (warn "Unexpected value of symbol %S, should be a hash 
table" x)
-                    (make-hash-table :test 'eq)))
-              (make-hash-table :test 'eq))))
-       (t (error "Unexpected initializer `%S' in list `ses-localvars' for 
entry %S"
-                (cdr x) (car x)) )     ))
+      (set (make-local-variable (car x)) (cdr x)))
      (t (error "Unexpected elements `%S' in list `ses-localvars'" x))))))
 
 (eval-when-compile                     ; silence compiler
@@ -333,21 +310,10 @@
 (defconst ses-paramlines-plist
   '(ses--col-widths  -5 ses--col-printers -4 ses--default-printer -3
     ses--header-row  -2 ses--file-format   1 ses--numrows          2
-    ses--numcols      3 ses--numlocprn     4)
+    ses--numcols      3)
   "Offsets from 'Global parameters' line to various parameter lines in the
 data area of a spreadsheet.")
 
-(defconst ses-paramfmt-plist
-  '(ses--col-widths       "(ses-column-widths %S)"
-    ses--col-printers     "(ses-column-printers %S)"
-    ses--default-printer  "(ses-default-printer %S)"
-    ses--header-row       "(ses-header-row %S)"
-    ses--file-format      " %S ;SES file-format"
-    ses--numrows          " %S ;numrows"
-    ses--numcols          " %S ;numcols"
-    ses--numlocprn        " %S ;numlocprn")
-  "Formats of 'Global parameters' various parameters in the data
-area of a spreadsheet.")
 
 ;;
 ;;  "Side-effect variables".  They are set in one function, altered in
@@ -388,30 +354,6 @@
                                   property-list)
   (vector symbol formula printer references property-list))
 
-(defsubst ses-make-local-printer-info (def &optional compiled-def number)
-  (let ((v  (vector def
-                   (or compiled-def (ses-local-printer-compile def))
-                   (or number ses--numlocprn)
-                    nil)))
-    (push v ses--local-printer-list)
-    (aset v 3 ses--local-printer-list)
-    v))
-
-(defmacro ses-locprn-get-compiled (locprn)
-  `(aref ,locprn 1))
-
-(defmacro ses-locprn-compiled-aset (locprn compiled)
-  `(aset ,locprn 1 ,compiled))
-
-(defmacro ses-locprn-get-def (locprn)
-  `(aref ,locprn 0))
-
-(defmacro ses-locprn-def-aset (locprn def)
-  `(aset ,locprn 0 ,def))
-
-(defmacro ses-locprn-get-number (locprn)
-  `(aref ,locprn 2))
-
 (defmacro ses-cell-symbol (row &optional col)
   "From a CELL or a pair (ROW,COL), get the symbol that names the 
local-variable holding its value.  (0,0) => A1."
   `(aref ,(if col `(ses-get-cell ,row ,col) row) 0))
@@ -429,10 +371,6 @@
   "From a CELL or a pair (ROW,COL), get the function that prints its value."
   `(aref ,(if col `(ses-get-cell ,row ,col) row) 2))
 
-(defmacro ses-cell-printer-aset (cell printer)
-  "From a CELL set the printer that prints its value."
-  `(aset ,cell 2 ,printer))
-
 (defmacro ses-cell-references (row &optional col)
   "From a CELL or a pair (ROW,COL), get the list of symbols for cells whose
 functions refer to its value."
@@ -612,29 +550,6 @@
   (set sym value)
   sym)
 
-(defun ses-local-printer-compile (printer)
-  "Convert local printer function into faster printer
-definition."
-  (cond
-   ((functionp printer) printer)
-   ((stringp printer)
-    `(lambda (x) (format ,printer x)))
-   (t (error "Invalid printer %S" printer))))
-
-(defmacro ses-local-printer (printer-name printer-def)
-  "Define a local printer with name PRINTER-NAME and definition
-PRINTER-DEF. Return the printer info."
-  (or
-   (and (symbolp printer-name)
-       (ses-printer-validate printer-def))
-   (error "Invalid local printer definition"))
-  (and (gethash printer-name ses--local-printer-hashmap)
-       (error "Duplicate printer definition %S" printer-name))
-  (add-to-list 'ses-read-printer-history (symbol-name printer-name))
-  (puthash printer-name
-          (ses-make-local-printer-info (ses-safe-printer printer-def))
-          ses--local-printer-hashmap))
-
 (defmacro ses-column-widths (widths)
   "Load the vector of column widths from the spreadsheet file.  This is a
 macro to prevent propagate-on-load viruses."
@@ -748,8 +663,6 @@
   "Signal an error if PRINTER is not a valid SES cell printer."
   (or (not printer)
       (stringp printer)
-      ;; printer is a local printer
-      (and (symbolp printer) (gethash printer ses--local-printer-hashmap))
       (functionp printer)
       (and (stringp (car-safe printer)) (not (cdr printer)))
       (error "Invalid printer function"))
@@ -1347,13 +1260,7 @@
            (format (car printer) value)
          ""))
        (t
-       (setq value  (funcall
-                     (or (and (symbolp printer)
-                              (let ((locprn (gethash printer 
ses--local-printer-hashmap)))
-                                (and locprn
-                                     (ses-locprn-get-compiled locprn))))
-                         printer)
-                     (or value "")))
+       (setq value (funcall printer (or value "")))
        (if (stringp value)
            value
          (or (stringp (car-safe value))
@@ -1426,22 +1333,6 @@
       (goto-char ses--params-marker)
       (forward-line def))))
 
-(defun ses-file-format-extend-paramter-list (new-file-format)
-  "Extend the global parameters list when file format is updated
-from 2 to 3. This happens when local printer function are added
-to a sheet that was created with SES version 2. This is not
-undoable. Return nil when there was no change, and non nil otherwise."  
-  (save-excursion
-    (cond
-     ((and (= ses--file-format 2) (= 3 new-file-format))
-      (ses-set-parameter 'ses--file-format 3 )
-      (ses-widen)
-      (goto-char ses--params-marker)
-      (forward-line   (plist-get ses-paramlines-plist 'ses--numlocprn ))
-      (insert (format (plist-get ses-paramfmt-plist 'ses--numlocprn) 
ses--numlocprn)
-             ?\n)
-      t) )))
-
 (defun ses-set-parameter (def value &optional elem)
   "Set parameter DEF to VALUE (with undo) and write the value to the data area.
 See `ses-goto-data' for meaning of DEF.  Newlines in the data are escaped.
@@ -1451,7 +1342,13 @@
     ;; in case one of them is being changed.
     (ses-goto-data def)
     (let ((inhibit-read-only t)
-         (fmt (plist-get ses-paramfmt-plist
+         (fmt (plist-get '(ses--col-widths      "(ses-column-widths %S)"
+                           ses--col-printers    "(ses-column-printers %S)"
+                           ses--default-printer "(ses-default-printer %S)"
+                           ses--header-row      "(ses-header-row %S)"
+                           ses--file-format     " %S ;SES file-format"
+                           ses--numrows         " %S ;numrows"
+                           ses--numcols         " %S ;numcols")
                          def))
          oldval)
       (if elem
@@ -1837,38 +1734,29 @@
   (search-backward ";; Local Variables:\n" nil t)
   (backward-list 1)
   (setq ses--params-marker (point-marker))
-  (let* ((params (ignore-errors (read (current-buffer))))
-        (params-len (safe-length params)))
-    (or (and (>=  params-len 3)
-            (<=  params-len 4)
+  (let ((params (ignore-errors (read (current-buffer)))))
+    (or (and (= (safe-length params) 3)
             (numberp (car params))
             (numberp (cadr params))
             (>= (cadr params) 0)
             (numberp (nth 2 params))
-            (> (nth 2 params) 0)
-            (or (<= params-len 3)
-                (let ((numlocprn (nth 3 params))) 
-                  (and (integerp numlocprn) (>= numlocprn 0)))))
+            (> (nth 2 params) 0))
        (error "Invalid SES file"))
     (setq ses--file-format (car params)
          ses--numrows     (cadr params)
-         ses--numcols     (nth 2 params)
-         ses--numlocprn (or (nth 3 params) 0))
+         ses--numcols     (nth 2 params))
     (when (= ses--file-format 1)
       (let (buffer-undo-list) ; This is not undoable.
        (ses-goto-data 'ses--header-row)
        (insert "(ses-header-row 0)\n")
-       (ses-set-parameter 'ses--file-format 3)
+       (ses-set-parameter 'ses--file-format 2)
        (message "Upgrading from SES-1 file format")))
-    (or (> ses--file-format 3)
+    (or (= ses--file-format 2)
        (error "This file needs a newer version of the SES library code"))
     ;; Initialize cell array.
     (setq ses--cells (make-vector ses--numrows nil))
     (dotimes (row ses--numrows)
-      (aset ses--cells row (make-vector ses--numcols nil)))
-    ;; initialize local printer map.
-    (clrhash ses--local-printer-hashmap))
-
+      (aset ses--cells row (make-vector ses--numcols nil))))
   ;; Skip over print area, which we assume is correct.
   (goto-char (point-min))
   (forward-line ses--numrows)
@@ -1879,22 +1767,7 @@
   (forward-char (1- (length ses-print-data-boundary)))
   ;; Initialize printer and symbol lists.
   (mapc 'ses-printer-record ses-standard-printer-functions)
-  (setq ses--symbolic-formulas                   nil)
-
-  ;; Load local printer definitions.  
-  ;; This must be loaded *BEFORE* cells and column printers because the latters
-  ;; may call them.
-  (save-excursion
-    (forward-line (* ses--numrows (1+ ses--numcols)))
-    (let ((numlocprn ses--numlocprn))
-      (setq ses--numlocprn 0)
-      (dotimes (lp numlocprn)
-       (let ((x      (read (current-buffer))))
-         (or (and (looking-at-p "\n")
-                  (eq (car-safe x) 'ses-local-printer)
-                  (eval x))
-             (error "local printer-def error"))
-         (setq ses--numlocprn (1+ ses--numlocprn))))))
+  (setq ses--symbolic-formulas nil)
   ;; Load cell definitions.
   (dotimes (row ses--numrows)
     (dotimes (col ses--numcols)
@@ -1907,8 +1780,6 @@
        (eval x)))
     (or (looking-at-p "\n\n")
        (error "Missing blank line between rows")))
-  ;; Skip local printer function declaration --- that were already loaded.
-  (forward-line (+ 2 ses--numlocprn))
   ;; Load global parameters.
   (let ((widths      (read (current-buffer)))
        (n1          (char-after (point)))
@@ -1933,7 +1804,8 @@
     (1value (eval head-row)))
   ;; Should be back at global-params.
   (forward-char 1)
-  (or (looking-at-p ses-initial-global-parameters-re)
+  (or (looking-at-p (replace-regexp-in-string "1" "[0-9]+"
+                                             ses-initial-global-parameters))
       (error "Problem with column-defs or global-params"))
   ;; Check for overall newline count in definitions area.
   (forward-line 3)
@@ -2517,10 +2389,8 @@
 ;;----------------------------------------------------------------------------
 
 (defun ses-read-printer (prompt default)
-  "Common code for functions `ses-read-cell-printer', 
`ses-read-column-printer',
-`ses-read-default-printer' and `ses-define-local-printer'.
-PROMPT should end with \": \".  Result is t if operation was
-canceled."
+  "Common code for `ses-read-cell-printer', `ses-read-column-printer', and 
`ses-read-default-printer'.
+PROMPT should end with \": \".  Result is t if operation was canceled."
   (barf-if-buffer-read-only)
   (if (eq default t)
       (setq default "")
@@ -2540,7 +2410,6 @@
       (or (not new)
          (stringp new)
          (stringp (car-safe new))
-         (and (symbolp new) (gethash new ses--local-printer-hashmap))
          (ses-warn-unsafe new 'unsafep-function)
          (setq new t)))
     new))
@@ -3474,71 +3343,6 @@
                                  (symbol-name new-name)))
     (force-mode-line-update)))
 
-(defun ses-refresh-local-printer (name compiled-value)
-  "Refresh printout of spreadsheet for all cells with printer
-  defined to local printer named NAME using the value COMPILED-VALUE for this 
printer"
-  (message "Refreshing cells using printer %S" name)
-  (let (new-print)
-    (dotimes (row ses--numrows)
-      (dotimes (col ses--numcols)
-       (let ((cell-printer (ses-cell-printer row col)))
-         (when (eq cell-printer name)
-           (unless new-print
-             (setq new-print t)
-             (ses-begin-change))
-           (ses-print-cell row col)))))))
-
-(defun ses-define-local-printer (printer-name)
-  "Define a local printer with name PRINTER-NAME."
-  (interactive "*SEnter printer name: ")
-  (let* ((cur-printer (gethash printer-name ses--local-printer-hashmap))
-        (default (and (vectorp cur-printer) (ses-locprn-get-def cur-printer)))
-        printer-def-text
-        create-printer
-        (new-printer (ses-read-printer (format "Enter definition of printer 
%S: " printer-name) default)))
-    (cond
-     ;; cancelled operation => do nothing
-     ((eq new-printer t))
-     ;; no change => do nothing
-     ((and (vectorp cur-printer) (equal new-printer default)))
-     ;; re-defined printer
-     ((vectorp cur-printer)
-      (setq create-printer 0)
-      (ses-locprn-def-aset cur-printer new-printer)
-      (ses-refresh-local-printer
-       printer-name
-       (ses-locprn-compiled-aset cur-printer  (ses-local-printer-compile 
new-printer))))
-     ;; new definition
-     (t
-      (setq create-printer 1)
-      (puthash printer-name
-              (setq cur-printer
-                    (ses-make-local-printer-info new-printer))
-              ses--local-printer-hashmap)))
-    (when create-printer
-      (setq printer-def-text
-           (concat
-            "(ses-local-printer "
-            (symbol-name printer-name)
-            " "
-            (prin1-to-string (ses-locprn-get-def cur-printer))
-            ")"))
-      (save-excursion
-       (ses-goto-data ses--numrows
-                      (ses-locprn-get-number cur-printer))
-       (let ((inhibit-read-only t))
-         ;; Special undo since it's outside the narrowed buffer.
-         (let (buffer-undo-list)
-           (if (= create-printer 0)
-               (delete-region (point) (line-end-position))
-             (insert ?\n)
-             (backward-char))
-           (insert printer-def-text)
-           (when (= create-printer 1)
-             (ses-file-format-extend-paramter-list 3)
-             (ses-set-parameter 'ses--numlocprn (+ ses--numlocprn 
create-printer))) )))))  )
-
-
 ;;----------------------------------------------------------------------------
 ;; Checking formulas for safety
 ;;----------------------------------------------------------------------------
@@ -3548,7 +3352,6 @@
   (if (or (stringp printer)
          (stringp (car-safe printer))
          (not printer)
-         (and (symbolp printer) (gethash printer ses--local-printer-hashmap))
          (ses-warn-unsafe printer 'unsafep-function))
       printer
     'ses-unsafe))


reply via email to

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