Mercurial > emacs
changeset 85644:3704b3bdbf49
Make `ses--symbolic-formulas' a safe local variable.
(ses-mode-print-map): Add `c' and `t' (suggested by Gareth Rees).
(ses-recalculate-cell): Deal with point being just beyond end of data area (why does this happen?)
(ses-set-curcell): Ditto.
(ses-column-letter): Handle columns beyond 702. Code written by Gareth Rees.
author | Jonathan Yavner <jyavner@member.fsf.org> |
---|---|
date | Thu, 25 Oct 2007 20:12:17 +0000 |
parents | 19d0f5a3c0ff |
children | a94c8845eebc |
files | lisp/ses.el |
diffstat | 1 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ses.el Thu Oct 25 20:11:14 2007 +0000 +++ b/lisp/ses.el Thu Oct 25 20:12:17 2007 +0000 @@ -172,8 +172,10 @@ "\"" 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 "\M-p" ses-read-column-printer)) @@ -271,6 +273,9 @@ (make-local-variable x) (set x nil))) +;;;This variable is documented as being permitted in file-locals: +(put 'ses--symbolic-formulas 'safe-local-variable 'consp) + (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 @@ -507,10 +512,12 @@ (list (symbol-name (cadr formula)))))) (defun ses-column-letter (col) - "Converts a column number to A..Z or AA..ZZ" - (if (< col 26) - (char-to-string (+ ?A col)) - (string (+ ?@ (/ col 26)) (+ ?A (% col 26))))) + "Return the alphabetic name of column number COL. +0-25 become A-Z; 26-701 become AA-ZZ, and so on." + (let ((units (char-to-string (+ ?A (% col 26))))) + (if (< col 26) + units + (concat (ses-column-letter (1- (/ col 26))) units)))) (defun ses-create-cell-symbol (row col) "Produce a symbol that names the cell (ROW,COL). (0,0) => 'A1." @@ -738,6 +745,9 @@ ;;Range (let ((bcell (get-text-property (region-beginning) 'intangible)) (ecell (get-text-property (1- (region-end)) 'intangible))) + (when (= (region-end) ses--data-marker) + ;;Correct for overflow + (setq ecell (get-text-property (- (region-end) 2) 'intangible))) (setq ses--curcell (if (and bcell ecell) (cons bcell ecell) nil)))) @@ -2328,6 +2338,9 @@ (defun ses-copy-region (beg end) "Treat the region as rectangular. Convert the intangible attributes to SES attributes recording the contents of the cell as of the time of copying." + (when (= end ses--data-marker) + ;;Avoid overflow situation + (setq end (1- ses--data-marker))) (let* ((inhibit-point-motion-hooks t) (x (mapconcat 'ses-copy-region-helper (extract-rectangle beg (1- end)) "\n")))