aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/ses.el
diff options
context:
space:
mode:
authorJonathan Yavner <[email protected]>2004-01-30 08:02:57 +0000
committerJonathan Yavner <[email protected]>2004-01-30 08:02:57 +0000
commit9e2d29b605a4980beb909c46066ee5734b4d8b44 (patch)
treedbf3a780c1b5663c165c4d524b868668803b5429 /lisp/ses.el
parentcce5462e72d071ef441deeb15d49a73da6d2b1f7 (diff)
Changes suggested by Stefan Monnier to truncate decimal places if print format too large for column width.
Diffstat (limited to 'lisp/ses.el')
-rw-r--r--lisp/ses.el24
1 files changed, 18 insertions, 6 deletions
diff --git a/lisp/ses.el b/lisp/ses.el
index b50a441d26..a56b1b5c87 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1,6 +1,6 @@
;;;; ses.el -- Simple Emacs Spreadsheet
-;; Copyright (C) 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2002,03,04 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -52,7 +52,7 @@
:group 'ses
:type '(cons (integer :tag "numrows") (integer :tag "numcols")))
-(defcustom ses-initial-column-width 14
+(defcustom ses-initial-column-width 7
"Initial width of columns in a new spreadsheet."
:group 'ses
:type '(integer :match (lambda (widget value) (> value 0))))
@@ -720,11 +720,23 @@ preceding cell has spilled over."
;;Fill to complete width of all the fields spanned
(setq text (concat text (make-string (- maxwidth len) ? )))
;;Not enough room to end of line or next non-nil field. Truncate
- ;;if string; otherwise fill with error indicator
+ ;;if string or decimal; otherwise fill with error indicator
(setq sig `(error "Too wide" ,text))
- (if (stringp value)
- (setq text (substring text 0 maxwidth))
- (setq text (make-string maxwidth ?#))))))))
+ (cond
+ ((stringp value)
+ (setq text (substring text 0 maxwidth)))
+ ((and (numberp value)
+ (string-match "\\.[0-9]+" text)
+ (>= 0 (setq width
+ (- len maxwidth
+ (- (match-end 0) (match-beginning 0))))))
+ ;; Turn 6.6666666666e+49 into 6.66e+49. Rounding is too hard!
+ (setq text (concat (substring text
+ 0
+ (- (match-beginning 0) width))
+ (substring text (match-end 0)))))
+ (t
+ (setq text (make-string maxwidth ?#)))))))))
;;Substitute question marks for tabs and newlines. Newlines are
;;used as row-separators; tabs could confuse the reimport logic.
(setq text (replace-regexp-in-string "[\t\n]" "?" text))