changeset 53758:c503ef8bb300

Changes suggested by Stefan Monnier to truncate decimal places if print format too large for column width.
author Jonathan Yavner <jyavner@member.fsf.org>
date Fri, 30 Jan 2004 08:01:43 +0000
parents 970795582ae9
children 1639dcd67956
files lisp/ses.el
diffstat 1 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ses.el	Fri Jan 30 00:40:55 2004 +0000
+++ b/lisp/ses.el	Fri Jan 30 08:01:43 2004 +0000
@@ -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 <jyavner@member.fsf.org>
 ;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@@ -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 @@
 		;;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))