Mercurial > emacs
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 |