%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
;ELC ;;; Compiled ;;; in Emacs version 25.2.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312\313\314\315\316\317\320& \210\321\322\323\324\325DD\326\311\304\327\330&\210\321\331\323\324\332DD\333\311\304\327\334&\210\321\335\323\324\336DD\337\311\304\327\340&\210\321\341\323\324\342DD\343\311\304\327\344\345\346& \210\321\347\323\324\350DD\351\311\304\327\344&\207" [require unsafep macroexp custom-declare-group ses nil "Simple Emacs Spreadsheet." :tag "SES" :group applications :link (custom-manual "(ses) Top") :prefix "ses-" :version "21.1" custom-declare-variable ses-initial-size funcall function #[0 "\300\207" [(1 . 1)] 1] "Initial size of a new spreadsheet, as a cons (NUMROWS . NUMCOLS)." :type (cons (integer :tag "numrows") (integer :tag "numcols")) ses-initial-column-width #[0 "\300\207" [7] 1] "Initial width of columns in a new spreadsheet." (integer :match (lambda (widget value) (> value 0))) ses-initial-default-printer #[0 "\300\207" [#1="%.7g"] 1 #1#] "Initial default printer for a new spreadsheet." (choice string (list :tag "Parenthesized string" string) function) ses-after-entry-functions #[0 "\300\207" [(forward-char)] 1] "Things to do after entering a value into a cell.\nAn abnormal hook that usually runs a cursor-movement function.\nEach function is called with ARG=1." hook :options (forward-char backward-char next-line previous-line) ses-mode-hook #[0 "\300\207" [nil] 1] "Hook functions to be run upon entering SES mode."] 14) #@43 List of formulas that have been typed in. (defvar ses-read-cell-history nil (#$ . 1857)) #@52 List of printer functions that have been typed in. (defvar ses-read-printer-history nil (#$ . 1952)) #@72 Context menu when mouse-3 is used on the header-line in an SES buffer. (defvar ses-header-line-menu nil (#$ . 2059)) (easy-menu-do-define 'ses-header-line-menu nil "Context menu when mouse-3 is used on the header-line in an SES buffer." '("SES header row" ["Set current row" ses-set-header-row t] ["Unset row" ses-unset-header-row (> ses--header-row 0)])) #@44 Local keymap for Simple Emacs Spreadsheet. (defconst ses-mode-map (byte-code "\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\324\326\327BBBBBBBBBBBBBBBBBBBBBBBB\330 \203H \331@A@#\210AA\262\2023 \207" [ses-header-line-menu "\214" ses-reconstruct-all "\f" ses-recalculate-all "" ses-renarrow-buffer "" ses-recalculate-cell "\223" ses-sort-column "\210" ses-set-header-row "" ses-truncate-cell "\n" ses-jump "" ses-read-default-printer "\214" ses-reprint-all [33554444] [header-line down-mouse-3] ([header-line mouse-2] ses-sort-column-click) make-sparse-keymap define-key] 25) (#$ . 2421)) #@24 Menu bar menu for SES. (defvar ses-menu nil (#$ . 3074)) (easy-menu-do-define 'ses-menu ses-mode-map "Menu bar menu for SES." '("SES" ["Insert row" ses-insert-row (ses-in-print-area)] ["Delete row" ses-delete-row (ses-in-print-area)] ["Insert column" ses-insert-column (ses-in-print-area)] ["Delete column" ses-delete-column (ses-in-print-area)] ["Set column printer" ses-read-column-printer t] ["Set column width" ses-set-column-width t] ["Set default printer" ses-read-default-printer t] ["Jump to cell" ses-jump t] ["Set cell printer" ses-read-cell-printer t] ["Recalculate cell" ses-recalculate-cell t] ["Truncate cell display" ses-truncate-cell t] ["Export values" ses-export-tsv t] ["Export formulas" ses-export-tsf t])) #@47 Local keymap for SES minibuffer cell-editing. (defconst ses-mode-edit-map (byte-code "\301\302 \303\"\210\203 \304\211A\262\242\211A\262\242#\210\202 \207" [minibuffer-local-map ("" ses-insert-range "" ses-insert-ses-range [S-mouse-3] ses-insert-range-click [C-S-mouse-3] ses-insert-ses-range-click "\211" lisp-complete-symbol) make-sparse-keymap set-keymap-parent define-key] 7) (#$ . 3807)) (byte-code "\300\301\302\303\304\305 \306\307\"\210G\310\211W\203) \211\311\211TO\312#\266\211T\262\202 \266\203B \313@A@\314 $\210AA\262\202+ \311\315\316#\210\203^ \311@A@#\210AA\262\202H \266\203\"\207" [defalias ses-mode-print-map ([backtab] backward-char [tab] ses-forward-or-insert " " ses-forward-or-insert "\357" ses-insert-column "" ses-insert-row " " ses-edit-cell "\353" ses-delete-column "\371" ses-yank-pop "" ses-delete-row "\n" ses-append-row-jump-first-column "\350" ses-mark-row "\310" ses-mark-column "" ses-clear-cell-forward "" ses-clear-cell-backward "(" ses-read-cell "\"" ses-read-cell "'" ses-read-symbol "=" ses-edit-cell "c" ses-recalculate-cell "j" ses-jump "p" ses-read-cell-printer "t" ses-truncate-cell "w" ses-set-column-width "x" ses-export-keymap "\360" ses-read-column-printer) (clipboard-kill-region ses-kill-override end-of-line ses-end-of-line kill-line ses-delete-row kill-region ses-kill-override open-line ses-insert-row) "0123456789.-" make-keymap suppress-keymap t 0 define-key ses-read-cell substitute-key-definition current-global-map [(menu-bar) edit cut] ses-kill-override] 14) (defconst ses-mode-print-map (symbol-function 'ses-mode-print-map)) (byte-code "\300\301\302\303!\304\305\306\307B#\210\304\310\311\312B#\210\211\262\"\207" [defalias ses-export-keymap make-sparse-keymap "SES export" define-key "T" " tab-formulas" ses-export-tsf "t" " tab-values" ses-export-tsv] 8) #@71 Marker string denoting the boundary between print area and data area. (defconst ses-print-data-boundary "\n\f\n" (#$ . 5676)) #@77 Initial contents for the three-element list at the bottom of the data area. (defconst ses-initial-global-parameters "\n( ;Global parameters (these are read first)\n 2 ;SES file-format\n 1 ;numrows\n 1 ;numcols\n)\n\n" (#$ . 5808)) #@31 Match Global parameters for . (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" (#$ . 6045)) #@71 Initial contents for the file-trailer area at the bottom of the file. (defconst ses-initial-file-trailer ";; Local Variables:\n;; mode: ses\n;; End:\n" (#$ . 6279)) #@47 The initial contents of an empty spreadsheet. (defconst ses-initial-file-contents (concat " \n" ses-print-data-boundary "(ses-cell A1 nil nil nil nil)\n" "\n" "(ses-column-widths [7])\n" "(ses-column-printers [nil])\n" "(ses-default-printer \"%.7g\")\n" "(ses-header-row 0)\n" ses-initial-global-parameters ses-initial-file-trailer) (#$ . 6450)) #@73 Display properties to create a raised box for cells in the header line. (defconst ses-box-prop '(:box (:line-width 2 :style released-button)) (#$ . 6808)) #@269 List of print functions to be included in initial history of printer functions. None of these standard-printer functions is suitable for use as a column printer or a global-default printer because they invoke the column or default printer and then modify its output. (defconst ses-standard-printer-functions '(ses-center ses-center-span ses-dashfill ses-dashfill-span ses-tildefill-span) (#$ . 6970)) #@37 Buffer-local variables used by SES. (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) (ses--numlocprn . 0) ses--deferred-narrow ses--deferred-recalc ses--deferred-write ses--file-format ses--named-cell-hashmap (ses--header-hscroll . -1) ses--header-row ses--header-string ses--linewidth ses--numcols ses--numrows ses--symbolic-formulas ses--data-marker ses--params-marker (ses--Dijkstra-attempt-nb . 0) ses--Dijkstra-weight-bound ses--in-killing-named-cell-list next-line-add-newlines transient-mark-mode) (#$ . 7378)) (defalias 'ses--metaprogramming '(macro . #[257 "\300\301\"\207" [eval t] 4 "\n\n(fn EXP)"])) (put 'ses--metaprogramming 'edebug-form-spec t) #@53 Set buffer-local and initialize some SES variables. (defalias 'ses-set-localvars #[0 "\211\205V \211@\2119\203 \301!\302L\210\202O \211:\203J \211A\250\203+ \301@!AL\210\202O \211A\303=\203? \301@!\304\305\306\"L\210\202O \307\310A@#\210\202O \307\311\"\210A\266\202\202 \207" [ses-localvars make-local-variable nil :hashmap make-hash-table :test eq error "Unexpected initializer `%S' in list `ses-localvars' for entry %S" "Unexpected elements `%S' in list `ses-localvars'"] 6 (#$ . 8178)]) (put 'ses--symbolic-formulas 'safe-local-variable 'consp) #@101 Offsets from "Global parameters" line to various parameter lines in the data area of a spreadsheet. (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) (#$ . 8745)) #@86 Formats of "Global parameters" various parameters 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") (#$ . 9047)) #@320 Set by `ses-relocate-formula' and `ses-relocate-range', read by `ses-relocate-all'. Set to `delete' if a cell-reference was deleted from a formula--so the formula needs recalculation. Set to `range' if the size of a `ses-range' was changed--so both the formula's value and list of dependents need to be recalculated. (defvar ses-relocate-return nil (#$ . 9484)) #@202 Set to t if last cell printer invoked by `ses-call-printer' requested left-justification of the result. Set to error-signal if `ses-call-printer' encountered an error during printing. Otherwise nil. (defvar ses-call-printer-return nil (#$ . 9855)) #@107 Time when current operation started. Used by `ses-time-check' to decide when to emit a progress message. (defvar ses-start-time nil (#$ . 10112)) #@87 Return the cell structure that stores information about cell (ROW,COL). (fn ROW COL) (defalias 'ses-get-cell '(macro . #[514 "\300\211\301EE\207" [aref ses--cells] 6 (#$ . 10265)])) (put 'ses-get-cell 'edebug-form-spec t) (defalias 'ses-cell--symbol--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses-cell--symbol (declare (side-effect-free t)) (aref cl-x 0)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses-cell--symbol 'compiler-macro 'ses-cell--symbol--cmacro) (defalias 'ses-cell--symbol #[257 "\211\300H\207" [0] 3 "\n\n(fn CL-X)"]) (function-put 'ses-cell--symbol 'side-effect-free t) (defalias 'ses-cell--formula--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses-cell--formula (declare (side-effect-free t)) (aref cl-x 1)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses-cell--formula 'compiler-macro 'ses-cell--formula--cmacro) (defalias 'ses-cell--formula #[257 "\211\300H\207" [1] 3 "\n\n(fn CL-X)"]) (function-put 'ses-cell--formula 'side-effect-free t) (defalias 'ses-cell--printer--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses-cell--printer (declare (side-effect-free t)) (aref cl-x 2)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses-cell--printer 'compiler-macro 'ses-cell--printer--cmacro) (defalias 'ses-cell--printer #[257 "\211\300H\207" [2] 3 "\n\n(fn CL-X)"]) (function-put 'ses-cell--printer 'side-effect-free t) (defalias 'ses-cell--references--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses-cell--references (declare (side-effect-free t)) (aref cl-x 3)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses-cell--references 'compiler-macro 'ses-cell--references--cmacro) (defalias 'ses-cell--references #[257 "\211\300H\207" [3] 3 "\n\n(fn CL-X)"]) (function-put 'ses-cell--references 'side-effect-free t) (defalias 'ses-cell--properties--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses-cell--properties (declare (side-effect-free t)) (aref cl-x 4)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses-cell--properties 'compiler-macro 'ses-cell--properties--cmacro) (defalias 'ses-cell--properties #[257 "\211\300H\207" [4] 3 "\n\n(fn CL-X)"]) (function-put 'ses-cell--properties 'side-effect-free t) (defalias 'ses-make-cell--cmacro #[1281 "\300\301\302\303\211\211 & \207" [cl--defsubst-expand (symbol formula printer references) (cl-block ses-make-cell "Constructor for objects of type `ses-cell'." (declare (side-effect-free t)) (vector symbol formula printer references nil)) nil] 15 "\n\n(fn CL-WHOLE-ARG &optional SYMBOL FORMULA PRINTER REFERENCES)"]) (put 'ses-make-cell 'compiler-macro 'ses-make-cell--cmacro) #@95 Constructor for objects of type `ses-cell'. (fn &optional SYMBOL FORMULA PRINTER REFERENCES) (defalias 'ses-make-cell #[1024 "\300\301%\207" [vector nil] 10 (#$ . 13026)]) (byte-code "\300\301\302\303#\210\304\305\306\211\307\306\310\311\312\306& \207" [function-put ses-make-cell side-effect-free t cl-struct-define ses-cell nil vector ((symbol) (formula) (printer) (references) (properties)) cl-struct-ses-cell-tags cl-struct-ses-cell] 10) (defalias 'ses--locprn-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses--locprn-p (declare (side-effect-free error-free)) (and (vectorp cl-x) (>= (length cl-x) 5) (memq (aref cl-x 0) cl-struct-ses--locprn-tags) t)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses--locprn-p 'compiler-macro 'ses--locprn-p--cmacro) (defalias 'ses--locprn-p #[257 "\301!\205 \211G\302Y\205 \211\303H>\205 \304\207" [cl-struct-ses--locprn-tags vectorp 5 0 t] 3 "\n\n(fn CL-X)"]) (byte-code "\300\301\302\303#\210\304\305\306\301#\207" [function-put ses--locprn-p side-effect-free error-free put ses--locprn cl-deftype-satisfies] 4) (defalias 'ses--locprn-def--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses--locprn-def (declare (side-effect-free t)) (or (and (memq (aref cl-x 0) cl-struct-ses--locprn-tags)) (signal 'wrong-type-argument (list 'ses--locprn cl-x))) (aref cl-x 1)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses--locprn-def 'compiler-macro 'ses--locprn-def--cmacro) (defalias 'ses--locprn-def #[257 "\211\301H>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-ses--locprn-tags 0 signal wrong-type-argument ses--locprn 1] 5 "\n\n(fn CL-X)"]) (function-put 'ses--locprn-def 'side-effect-free t) (defalias 'ses--locprn-compiled--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses--locprn-compiled (declare (side-effect-free t)) (or (and (memq (aref cl-x 0) cl-struct-ses--locprn-tags)) (signal 'wrong-type-argument (list 'ses--locprn cl-x))) (aref cl-x 2)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses--locprn-compiled 'compiler-macro 'ses--locprn-compiled--cmacro) (defalias 'ses--locprn-compiled #[257 "\211\301H>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-ses--locprn-tags 0 signal wrong-type-argument ses--locprn 2] 5 "\n\n(fn CL-X)"]) (function-put 'ses--locprn-compiled 'side-effect-free t) (defalias 'ses--locprn-number--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses--locprn-number (declare (side-effect-free t)) (or (and (memq (aref cl-x 0) cl-struct-ses--locprn-tags)) (signal 'wrong-type-argument (list 'ses--locprn cl-x))) (aref cl-x 3)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses--locprn-number 'compiler-macro 'ses--locprn-number--cmacro) (defalias 'ses--locprn-number #[257 "\211\301H>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-ses--locprn-tags 0 signal wrong-type-argument ses--locprn 3] 5 "\n\n(fn CL-X)"]) (function-put 'ses--locprn-number 'side-effect-free t) (defalias 'ses--locprn-local-printer-list--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ses--locprn-local-printer-list (declare (side-effect-free t)) (or (and (memq (aref cl-x 0) cl-struct-ses--locprn-tags)) (signal 'wrong-type-argument (list 'ses--locprn cl-x))) (aref cl-x 4)) nil] 9 "\n\n(fn CL-WHOLE-ARG CL-X)"]) (put 'ses--locprn-local-printer-list 'compiler-macro 'ses--locprn-local-printer-list--cmacro) (defalias 'ses--locprn-local-printer-list #[257 "\211\301H>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-ses--locprn-tags 0 signal wrong-type-argument ses--locprn 4] 5 "\n\n(fn CL-X)"]) (byte-code "\300\301\302\303#\210\304\305\306\"\207" [function-put ses--locprn-local-printer-list side-effect-free t defalias copy-ses--locprn copy-sequence] 4) #@71 (fn CL-WHOLE &cl-quote &key DEF COMPILED NUMBER LOCAL-PRINTER-LIST) (defalias 'make-ses--locprn--cmacro #[385 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\211\203D \211@\305>\203, \211AA\262\202 \306>A@\203; \307\262\202 \310\311@\"\210\202 \210\312\313\314\307 \307 & \207" [plist-member :def :compiled :number :local-printer-list (:def :compiled :number :local-printer-list :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:def :compiled :number :local-printer-list)" cl--defsubst-expand (def compiled number local-printer-list) (cl-block make-ses--locprn "Constructor for objects of type `ses--locprn'." (declare (side-effect-free t)) (vector 'cl-struct-ses--locprn def compiled number local-printer-list))] 16 (#$ . 16859)]) (put 'make-ses--locprn 'compiler-macro 'make-ses--locprn--cmacro) #@98 Constructor for objects of type `ses--locprn'. (fn &key DEF COMPILED NUMBER LOCAL-PRINTER-LIST) (defalias 'make-ses--locprn #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\211\203D \211@\305>\203, \211AA\262\202 \306>A@\203; \307\262\202 \310\311@\"\210\202 \210\312\313%\207" [plist-member :def :compiled :number :local-printer-list (:def :compiled :number :local-printer-list :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:def :compiled :number :local-printer-list)" vector cl-struct-ses--locprn] 11 (#$ . 17719)]) (function-put 'make-ses--locprn 'side-effect-free t) #@135 Constructor for objects of type `ses--locprn'. (fn DEF &optional (COMPILED (ses-local-printer-compile def)) (NUMBER ses--numlocprn)) (defalias 'ses-make-local-printer-info #[385 "\211\203 \211A\262\242\202 \301!\203 \211A\262\242\202 \203- \302\303\304\305G\\D\"\210\306\307\310%\207" [ses--numlocprn ses-local-printer-compile signal wrong-number-of-arguments ses-make-local-printer-info 3 vector cl-struct-ses--locprn nil] 10 (#$ . 18356)]) (byte-code "\300\301\302\303#\210\304\305\306\307\306\211\310\311\312\303& \207" [function-put ses-make-local-printer-info side-effect-free t cl-struct-define ses--locprn nil cl-structure-object ((cl-tag-slot) (def) (compiled) (number) (local-printer-list)) cl-struct-ses--locprn-tags cl-struct-ses--locprn] 10) #@136 From a CELL or a pair (ROW,COL), get the symbol that names the local-variable holding its value. (0,0) => A1. (fn ROW &optional COL) (defalias 'ses-cell-symbol '(macro . #[513 "\300\203\f \301E\202 D\207" [ses-cell--symbol ses-get-cell] 6 (#$ . 19135)])) (byte-code "\300\301\302\303#\210\300\301\304\303#\207" [put ses-cell-symbol edebug-form-spec t safe-function] 4) #@100 From a CELL or a pair (ROW,COL), get the function that computes its value. (fn ROW &optional COL) (defalias 'ses-cell-formula '(macro . #[513 "\300\203\f \301E\202 D\207" [ses-cell--formula ses-get-cell] 6 (#$ . 19518)])) (put 'ses-cell-formula 'edebug-form-spec t) #@98 From a CELL or a pair (ROW,COL), get the function that prints its value. (fn ROW &optional COL) (defalias 'ses-cell-printer '(macro . #[513 "\300\203\f \301E\202 D\207" [ses-cell--printer ses-get-cell] 6 (#$ . 19796)])) (put 'ses-cell-printer 'edebug-form-spec t) #@128 From a CELL or a pair (ROW,COL), get the list of symbols for cells whose functions refer to its value. (fn ROW &optional COL) (defalias 'ses-cell-references '(macro . #[513 "\300\203\f \301E\202 D\207" [ses-cell--references ses-get-cell] 6 (#$ . 20073)])) (put 'ses-cell-references 'edebug-form-spec t) #@135 From a cell-symbol SYM, gets the cons (row . col). A1 => (0 . 0). Result is nil if SYM is not a symbol that names a cell. (fn SYM) (defalias 'ses-sym-rowcol '(macro . #[257 "\300\301\302\303D\304\305BBEDC\306\307\310\311BB\312BBBE\207" [let rc and symbolp get ('ses-cell) if (eq rc :ses-named) gethash (ses--named-cell-hashmap) (rc)] 8 (#$ . 20389)])) (put 'ses-sym-rowcol 'edebug-form-spec t) #@64 Return non-nil if CELL is a cell of current buffer. (fn CELL) (defalias 'ses-cell-p #[257 "\302!\205; \211G\303U\205; \211\304H9\205 \304H\305N\211\306=\203) \307\304H\"\202* \211\262\211:\2058 @HAH\262=\207" [ses--named-cell-hashmap ses--cells vectorp 5 0 ses-cell :ses-named gethash] 6 (#$ . 20795)]) #@110 Return PLIST after deleting the first pair (if any) with symbol PROP. This can alter PLIST. (fn PLIST PROP) (defalias 'ses-plist-delq #[514 "\204 \300\207@=\203 AA\207A\211A\301\"\241\210\207" [nil ses-plist-delq] 8 (#$ . 21117)]) #@49 A list of buffers containing a SES spreadsheet. (defvar ses--ses-buffer-list nil (#$ . 21366)) #@54 Make NAME non longer a renamed cell name. (fn NAME) (defalias 'ses--unbind-cell-name #[257 "\302\"\210\303!\210\304 \304\203A \211A\262\242\262\211p=\204\f \305!\204, \306 \"\202\f r\211q\210\307\"\203= \310\262\304\262)\202\f ?\205P \311\312\313!\314\"\"\207" [ses--named-cell-hashmap ses--ses-buffer-list remhash kill-local-variable nil buffer-live-p delq gethash t setplist ses-plist-delq symbol-plist ses-cell] 9 (#$ . 21467)]) (defalias 'ses--letref '(macro . #[642 "\300\301\302\303\304\305 \"\306\"\307\310%\"\207" [gv-get make-byte-code 514 "\302\300@\303\304DE\300A@\305\306\304D\307BBED\301BB\207" vconcat vector [cl-macrolet nil quote (v) funcall (v)] 9 "\n\n(fn GETTER SETTER)"] 12 "\n\n(fn VARS PLACE &rest BODY)"])) (byte-code "\300\301\302\303#\210\304\301\305\306#\207" [function-put ses--letref lisp-indent-function 2 put edebug-form-spec (sexp form &rest body)] 4) #@240 Get property named PROPERTY-NAME from a CELL or a pair (ROW,COL). When COL is omitted, CELL=ROW is a cell object. When COL is present ROW and COL are the integer coordinates of the cell of interest. (fn PROPERTY-NAME ROW &optional COL) (defalias 'ses-cell-property '(macro . #[770 "\300\301\203 \302E\202 DE\207" [alist-get ses-cell--properties ses-get-cell] 9 (#$ . 22383)])) (put 'ses-cell-property 'edebug-form-spec t) #@157 From a CELL or a pair (ROW,COL), get and remove the property value of the corresponding cell with name PROPERTY-NAME. (fn PROPERTY-NAME ROW &optional COL) (defalias 'ses-cell-property-pop '(macro . #[770 "\300\301\302\303\203 \304E\202 D\305BBB\306BBB\207" [ses--letref (pget pset) alist-get ses-cell--properties ses-get-cell (nil t) ((prog1 (pget) (pset nil)))] 11 (#$ . 22822)])) #@95 From a CELL or a pair (ROW,COL), get the current value for that cell. (fn ROW &optional COL) (defalias 'ses-cell-value '(macro . #[513 "\300\301ED\207" [symbol-value ses-cell-symbol] 6 (#$ . 23221)])) (put 'ses-cell-value 'edebug-form-spec t) #@44 Return the width for column COL. (fn COL) (defalias 'ses-col-width '(macro . #[257 "\300\301E\207" [aref ses--col-widths] 4 (#$ . 23473)])) (put 'ses-col-width 'edebug-form-spec t) #@54 Return the default printer for column COL. (fn COL) (defalias 'ses-col-printer '(macro . #[257 "\300\301E\207" [aref ses--col-printers] 4 (#$ . 23662)])) (put 'ses-col-printer 'edebug-form-spec t) #@67 Check whether SYM point at a cell of this spread sheet. (fn SYM) (defalias 'ses-is-cell-sym-p #[257 "\211\304N\211\2054 \211\305=\203 \2054 \306\"\2024 \211@ W\2054 \211A\nW\2054 @HAH\211\307H\262=\207" [ses--named-cell-hashmap ses--numrows ses--numcols ses--cells ses-cell :ses-named gethash 0] 5 (#$ . 23867)]) #@256 Load a cell SYM from the spreadsheet file. Does not recompute VALUE from FORMULA, does not reprint using PRINTER, does not check REFERENCES. Safety-checking for FORMULA and PRINTER are deferred until first use. (fn SYM VALUE FORMULA PRINTER REFERENCES) (defalias 'ses--cell #[1285 "9\205 \303N\211\304=\203 \305\"\202 \211\262\306!\210\307!\210\2040 \310=\2040 \311!\262:\203@ \312=\204@ \313D\262\203T ;\204T \312=\204T \314D\262\n@HA\315\n \316%I\266L\207" [ses--named-cell-hashmap safe-functions ses--cells ses-cell :ses-named gethash ses-formula-record ses-printer-record *skip* macroexp-quote t ses-safe-formula ses-safe-printer vector nil] 16 (#$ . 24197)]) #@78 Convert local printer function into faster printer definition. (fn PRINTER) (defalias 'ses-local-printer-compile #[257 "\300!\203 \207\211;\203 \301\302\303\304BBE\207\305\306\"\207" [functionp lambda (x) format (x) error "Invalid printer %S"] 6 (#$ . 24906)]) #@99 Define a local printer with name NAME and definition DEF. Return the printer info. (fn NAME DEF) (defalias 'ses--local-printer #[514 "9\203 \302!\204 \303\304!\210\305\"\203 \303\306\"\210\307!\211 \235\203) \210\202- \211 B\210\310\311\312!!#\207" [ses--local-printer-hashmap ses-read-printer-history ses-printer-validate error "Invalid local printer definition" gethash "Duplicate printer definition %S" symbol-name puthash ses-make-local-printer-info ses-safe-printer] 7 (#$ . 25179)]) #@129 Load the vector of column widths from the spreadsheet file. This is a macro to prevent propagate-on-load viruses. (fn WIDTHS) (defalias 'ses-column-widths '(macro . #[257 "\304!\203 \211GU\204 \305\306!\210\211\307\310\311\312\313\"#\314\n\315\"\316P\317\207" [ses--numcols ses--col-widths ses--linewidth ses--blank-line vectorp error "Bad column-width vector" apply + -1 mapcar 1+ make-string 32 "\n" t] 7 (#$ . 25690)])) #@160 Load the vector of column printers from the spreadsheet file and checks them for safety. This is a macro to prevent propagate-on-load viruses. (fn PRINTERS) (defalias 'ses-column-printers '(macro . #[257 "\302!\203 \211GU\204 \303\304!\210\305\211W\203, \211\306H!I\266\211T\262\202 \266\211\307\310\"\210\311\207" [ses--numcols ses--col-printers vectorp error "Bad column-printers vector" 0 ses-safe-printer mapc ses-printer-record t] 9 (#$ . 26130)])) #@150 Load the global default printer from the spreadsheet file and checks it for safety. This is a macro to prevent propagate-on-load viruses. (fn DEF) (defalias 'ses-default-printer '(macro . #[257 "\301!\302!\210\303\207" [ses--default-printer ses-safe-printer ses-printer-record t] 3 (#$ . 26610)])) #@138 Load the header row from the spreadsheet file and checks it for safety. This is a macro to prevent propagate-on-load viruses. (fn ROW) (defalias 'ses-header-row '(macro . #[257 "\302!\203 \303U\204 \211W\204 \304\305!\210\211\306\207" [ses--numrows ses--header-row wholenump 0 error "Bad header-row" t] 3 (#$ . 26920)])) #@223 Execute BODY repeatedly, with the variables `row' and `col' set to each cell in the range specified by CURCELL. The range is available in the variables `minrow', `maxrow', `mincol', and `maxcol'. (fn CURCELL &rest BODY) (defalias 'ses-dorange '(macro . #[385 "\300\301!\300\302!\300\303!\300\304!\300\305!\306D\307\310\311\nD\312DFDD\307\310\311D\313\fD\fFDDE\314\315\312DD\316\312DD\317\313\nDD\320\313\nDDF\321\322\323B\314\324\325\326BBDC\322\n\327B\314\330\325\331BBDCBBEEEFE\207" [make-symbol "cur" "min" "max" "r" "c" let* ses-sym-rowcol if consp car cdr let minrow maxrow mincol maxcol (if (or (> minrow maxrow) (> mincol maxcol)) (error "Empty range")) dotimes ((- maxrow minrow -1)) row + (minrow) ((- maxcol mincol -1)) col (mincol)] 23 (#$ . 27257)])) (byte-code "\300\301\302\303#\210\304\301\305\306#\207" [function-put ses-dorange lisp-indent-function defun put edebug-form-spec (form body)] 4) #@101 For code-coverage testing, indicate that FORM is expected to always have the same value. (fn FORM) (defalias '1value '(macro . #[257 "\207" [] 2 (#$ . 28204)])) (put '1value 'edebug-form-spec t) #@87 For code-coverage testing, indicate that FORM will always signal an error. (fn FORM) (defalias 'noreturn '(macro . #[257 "\207" [] 2 (#$ . 28406)])) (put 'noreturn 'edebug-form-spec t) #@113 Create a new vector which is one larger than ARRAY and has NEW inserted before element IDX. (fn ARRAY IDX NEW) (defalias 'ses-vector-insert #[771 "G\300T\"\301\211W\203, \211W\203 \202 T HI\266\211T\262\202 \266\207" [make-vector 0] 12 (#$ . 28599)]) #@246 Create a new vector which is a copy of ARRAY with COUNT objects removed starting at element IDX. ARRAY is either a vector or a symbol whose value is a vector--if a symbol, the new vector is assigned as the symbol's value. (fn ARRAY IDX COUNT) (defalias 'ses-vector-delete #[771 "\300!\203\n \202\f J\211GZ\301\302\"\303\211W\203; \211W\203, \2020 \n\\HI\266\211T\262\202 \2669\203F L\210\207" [arrayp make-vector nil 0] 14 (#$ . 28877)]) #@49 Like `kill-line', but no kill ring. (fn COUNT) (defalias 'ses-delete-line #[257 "`y\210\211`|\207" [] 4 (#$ . 29347)]) #@75 Signal an error if PRINTER is not a valid SES cell printer. (fn PRINTER) (defalias 'ses-printer-validate #[257 "\211\203+ \211;\204+ \2119\203 \301\"\204+ \302!\204+ \211\242;\203&