comparison lisp/ses.el @ 91073:4bc33ffdda1a

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 902-908) - Update from CVS - Merge from emacs--rel--22 * emacs--rel--22 (patch 131-137) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 261-262) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-278
author Miles Bader <miles@gnu.org>
date Sat, 27 Oct 2007 09:12:07 +0000
parents 14c4a6aac623 3704b3bdbf49
children 880960b70474
comparison
equal deleted inserted replaced
91072:74ab3ea909f9 91073:4bc33ffdda1a
170 "\C-?" ses-clear-cell-backward 170 "\C-?" ses-clear-cell-backward
171 "(" ses-read-cell 171 "(" ses-read-cell
172 "\"" ses-read-cell 172 "\"" ses-read-cell
173 "'" ses-read-symbol 173 "'" ses-read-symbol
174 "=" ses-edit-cell 174 "=" ses-edit-cell
175 "c" ses-recalculate-cell
175 "j" ses-jump 176 "j" ses-jump
176 "p" ses-read-cell-printer 177 "p" ses-read-cell-printer
178 "t" ses-truncate-cell
177 "w" ses-set-column-width 179 "w" ses-set-column-width
178 "x" ses-export-keymap 180 "x" ses-export-keymap
179 "\M-p" ses-read-column-printer)) 181 "\M-p" ses-read-column-printer))
180 (repl '(;;We'll replace these wherever they appear in the keymap 182 (repl '(;;We'll replace these wherever they appear in the keymap
181 clipboard-kill-region ses-kill-override 183 clipboard-kill-region ses-kill-override
269 (eval-when-compile 271 (eval-when-compile
270 (dolist (x ses-localvars) 272 (dolist (x ses-localvars)
271 (make-local-variable x) 273 (make-local-variable x)
272 (set x nil))) 274 (set x nil)))
273 275
276 ;;;This variable is documented as being permitted in file-locals:
277 (put 'ses--symbolic-formulas 'safe-local-variable 'consp)
278
274 (defconst ses-paramlines-plist 279 (defconst ses-paramlines-plist
275 '(ses--col-widths -5 ses--col-printers -4 ses--default-printer -3 280 '(ses--col-widths -5 ses--col-printers -4 ses--default-printer -3
276 ses--header-row -2 ses--file-format 1 ses--numrows 2 281 ses--header-row -2 ses--file-format 1 ses--numrows 2
277 ses--numcols 3) 282 ses--numcols 3)
278 "Offsets from 'Global parameters' line to various parameter lines in the 283 "Offsets from 'Global parameters' line to various parameter lines in the
505 (symbolp (cadr formula))) 510 (symbolp (cadr formula)))
506 (add-to-list 'ses--symbolic-formulas 511 (add-to-list 'ses--symbolic-formulas
507 (list (symbol-name (cadr formula)))))) 512 (list (symbol-name (cadr formula))))))
508 513
509 (defun ses-column-letter (col) 514 (defun ses-column-letter (col)
510 "Converts a column number to A..Z or AA..ZZ" 515 "Return the alphabetic name of column number COL.
511 (if (< col 26) 516 0-25 become A-Z; 26-701 become AA-ZZ, and so on."
512 (char-to-string (+ ?A col)) 517 (let ((units (char-to-string (+ ?A (% col 26)))))
513 (string (+ ?@ (/ col 26)) (+ ?A (% col 26))))) 518 (if (< col 26)
519 units
520 (concat (ses-column-letter (1- (/ col 26))) units))))
514 521
515 (defun ses-create-cell-symbol (row col) 522 (defun ses-create-cell-symbol (row col)
516 "Produce a symbol that names the cell (ROW,COL). (0,0) => 'A1." 523 "Produce a symbol that names the cell (ROW,COL). (0,0) => 'A1."
517 (intern (concat (ses-column-letter col) (number-to-string (1+ row))))) 524 (intern (concat (ses-column-letter col) (number-to-string (1+ row)))))
518 525
736 ;;Single cell 743 ;;Single cell
737 (setq ses--curcell (get-text-property (point) 'intangible)) 744 (setq ses--curcell (get-text-property (point) 'intangible))
738 ;;Range 745 ;;Range
739 (let ((bcell (get-text-property (region-beginning) 'intangible)) 746 (let ((bcell (get-text-property (region-beginning) 'intangible))
740 (ecell (get-text-property (1- (region-end)) 'intangible))) 747 (ecell (get-text-property (1- (region-end)) 'intangible)))
748 (when (= (region-end) ses--data-marker)
749 ;;Correct for overflow
750 (setq ecell (get-text-property (- (region-end) 2) 'intangible)))
741 (setq ses--curcell (if (and bcell ecell) 751 (setq ses--curcell (if (and bcell ecell)
742 (cons bcell ecell) 752 (cons bcell ecell)
743 nil)))) 753 nil))))
744 nil) 754 nil)
745 755
2326 nil)) 2336 nil))
2327 2337
2328 (defun ses-copy-region (beg end) 2338 (defun ses-copy-region (beg end)
2329 "Treat the region as rectangular. Convert the intangible attributes to 2339 "Treat the region as rectangular. Convert the intangible attributes to
2330 SES attributes recording the contents of the cell as of the time of copying." 2340 SES attributes recording the contents of the cell as of the time of copying."
2341 (when (= end ses--data-marker)
2342 ;;Avoid overflow situation
2343 (setq end (1- ses--data-marker)))
2331 (let* ((inhibit-point-motion-hooks t) 2344 (let* ((inhibit-point-motion-hooks t)
2332 (x (mapconcat 'ses-copy-region-helper 2345 (x (mapconcat 'ses-copy-region-helper
2333 (extract-rectangle beg (1- end)) "\n"))) 2346 (extract-rectangle beg (1- end)) "\n")))
2334 (remove-text-properties 0 (length x) 2347 (remove-text-properties 0 (length x)
2335 '(read-only t 2348 '(read-only t