From 9e2d29b605a4980beb909c46066ee5734b4d8b44 Mon Sep 17 00:00:00 2001 From: Jonathan Yavner Date: Fri, 30 Jan 2004 08:02:57 +0000 Subject: [PATCH] Changes suggested by Stefan Monnier to truncate decimal places if print format too large for column width. --- lisp/ChangeLog | 6 ++++++ lisp/ses.el | 24 ++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f76f875d5e8..d8f7fe3b08f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2004-01-30 Jonathan Yavner + + * ses.el (ses-print-cell): If print format too wide for column + width, truncate decimal places if that helps to avoid "#####" fill. + * ses.el (ses-initial-column-width): Revert previous change. + 2004-01-29 Stefan Monnier * jit-lock.el (jit-lock-context-time, jit-lock-context-timer): New var. diff --git a/lisp/ses.el b/lisp/ses.el index b50a441d261..a56b1b5c87a 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 ;; Maintainer: Jonathan Yavner @@ -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)) -- 2.39.2