HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rudimentary support for vc-pull and vc-merge in Git and Mercurial.
[bpt/emacs.git]
/
lisp
/
ses.el
diff --git
a/lisp/ses.el
b/lisp/ses.el
index
ced4994
..
2fc85d2
100644
(file)
--- a/
lisp/ses.el
+++ b/
lisp/ses.el
@@
-1,6
+1,6
@@
;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
-;; Copyright (C) 2002
, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
+;; Copyright (C) 2002
-2011
Free Software Foundation, Inc.
;; Author: Jonathan Yavner <jyavner@member.fsf.org>
;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
;; Author: Jonathan Yavner <jyavner@member.fsf.org>
;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@@
-8,10
+8,10
@@
;; This file is part of GNU Emacs.
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software
;
you can redistribute it and/or modify
+;; GNU Emacs is free software
:
you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation
; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation
, either version 3 of the License, or
+;;
(at your option)
any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-19,9
+19,7
@@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Commentary:
@@
-728,11
+726,18
@@
if the cell's value is unchanged and FORCE is nil."
;;ses-goto-print is called during a recursive ses-print-cell).
(defun ses-goto-print (row col)
"Move point to print area for cell (ROW,COL)."
;;ses-goto-print is called during a recursive ses-print-cell).
(defun ses-goto-print (row col)
"Move point to print area for cell (ROW,COL)."
- (let ((inhibit-point-motion-hooks t))
+ (let ((inhibit-point-motion-hooks t)
+ (n 0))
(goto-char (point-min))
(forward-line row)
(goto-char (point-min))
(forward-line row)
+ ;; calculate column position
(dotimes (c col)
(dotimes (c col)
- (forward-char (1+ (ses-col-width c))))))
+ (setq n (+ n (ses-col-width c) 1)))
+ ;; move to the position
+ (and (> n (move-to-column n))
+ (eolp)
+ ;; move point to the bol of next line (for TAB at the last cell)
+ (forward-char))))
(defun ses-set-curcell ()
"Sets `ses--curcell' to the current cell symbol, or a cons (BEG,END) for a
(defun ses-set-curcell ()
"Sets `ses--curcell' to the current cell symbol, or a cons (BEG,END) for a
@@
-808,7
+813,7
@@
preceding cell has spilled over."
(setq sig ses-call-printer-return))))
;;Adjust print width to match column width
(let ((width (ses-col-width col))
(setq sig ses-call-printer-return))))
;;Adjust print width to match column width
(let ((width (ses-col-width col))
- (len (
leng
th text)))
+ (len (
string-wid
th text)))
(cond
((< len width)
;;Fill field to length with spaces
(cond
((< len width)
;;Fill field to length with spaces
@@
-836,7
+841,7
@@
preceding cell has spilled over."
(setq sig `(error "Too wide" ,text))
(cond
((stringp value)
(setq sig `(error "Too wide" ,text))
(cond
((stringp value)
- (setq text (
substring text 0 maxwidth
)))
+ (setq text (
truncate-string-to-width text maxwidth 0 ?\s
)))
((and (numberp value)
(string-match "\\.[0-9]+" text)
(>= 0 (setq width
((and (numberp value)
(string-match "\\.[0-9]+" text)
(>= 0 (setq width
@@
-857,7
+862,11
@@
preceding cell has spilled over."
;;Install the printed result. This is not interruptible.
(let ((inhibit-read-only t)
(inhibit-quit t))
;;Install the printed result. This is not interruptible.
(let ((inhibit-read-only t)
(inhibit-quit t))
- (delete-char (1+ (length text)))
+ (let ((inhibit-point-motion-hooks t))
+ (delete-region (point) (progn
+ (move-to-column (+ (current-column)
+ (string-width text)))
+ (1+ (point)))))
;;We use concat instead of inserting separate strings in order to
;;reduce the number of cells in the undo list.
(setq x (concat text (if (< maxcol ses--numcols) " " "\n")))
;;We use concat instead of inserting separate strings in order to
;;reduce the number of cells in the undo list.
(setq x (concat text (if (< maxcol ses--numcols) " " "\n")))
@@
-1445,6
+1454,7
@@
Narrows the buffer to show only the print area. Gives it `read-only' and
(interactive)
(let ((end (point-min))
(inhibit-read-only t)
(interactive)
(let ((end (point-min))
(inhibit-read-only t)
+ (inhibit-point-motion-hooks t)
(was-modified (buffer-modified-p))
pos sym)
(ses-goto-data 0 0) ;;Include marker between print-area and data-area
(was-modified (buffer-modified-p))
pos sym)
(ses-goto-data 0 0) ;;Include marker between print-area and data-area
@@
-1468,7
+1478,14
@@
Narrows the buffer to show only the print area. Gives it `read-only' and
(eq (ses-cell-value row (1+ col)) '*skip*))
(setq end (+ end (ses-col-width col) 1)
col (1+ col)))
(eq (ses-cell-value row (1+ col)) '*skip*))
(setq end (+ end (ses-col-width col) 1)
col (1+ col)))
- (setq end (+ end (ses-col-width col) 1))
+ (setq end (save-excursion
+ (goto-char pos)
+ (move-to-column (+ (current-column) (- end pos)
+ (ses-col-width col)))
+ (if (eolp)
+ (+ end (ses-col-width col) 1)
+ (forward-char)
+ (point))))
(put-text-property pos end 'intangible sym)))
;;Adding these properties did not actually alter the text
(unless was-modified
(put-text-property pos end 'intangible sym)))
;;Adding these properties did not actually alter the text
(unless was-modified
@@
-1521,7
+1538,10
@@
These are active only in the minibuffer, when entering or editing a formula:
;;SES deliberately puts lots of trailing whitespace in its buffer
show-trailing-whitespace nil
;;Cell ranges do not work reasonably without this
;;SES deliberately puts lots of trailing whitespace in its buffer
show-trailing-whitespace nil
;;Cell ranges do not work reasonably without this
- transient-mark-mode t)
+ transient-mark-mode t
+ ;;not to use tab characters for safe
+ ;;(tabs may do bad for column calculation)
+ indent-tabs-mode nil)
(1value (add-hook 'change-major-mode-hook 'ses-cleanup nil t))
(1value (add-hook 'before-revert-hook 'ses-cleanup nil t))
(setq ses--curcell nil
(1value (add-hook 'change-major-mode-hook 'ses-cleanup nil t))
(1value (add-hook 'before-revert-hook 'ses-cleanup nil t))
(setq ses--curcell nil
@@
-2940,7
+2960,8
@@
columns to include in width (default = 0)."
(setq value (ses-call-printer printer value))
(dotimes (x span)
(setq width (+ width 1 (ses-col-width (+ col span (- x))))))
(setq value (ses-call-printer printer value))
(dotimes (x span)
(setq width (+ width 1 (ses-col-width (+ col span (- x))))))
- (setq width (- width (length value)))
+ ;; set column width
+ (setq width (- width (string-width value)))
(if (<= width 0)
value ;Too large for field, anyway
(setq half (make-string (/ width 2) fill))
(if (<= width 0)
value ;Too large for field, anyway
(setq half (make-string (/ width 2) fill))
@@
-2989,11
+3010,10
@@
current column and continues until the next nonblank column."
(dolist (buf (buffer-list))
(set-buffer buf)
(when (eq major-mode 'ses-mode)
(dolist (buf (buffer-list))
(set-buffer buf)
(when (eq major-mode 'ses-mode)
- (funcall (or
default-major-mode
'fundamental-mode)))))
+ (funcall (or
(default-value 'major-mode)
'fundamental-mode)))))
;; continue standard unloading
nil)
(provide 'ses)
;; continue standard unloading
nil)
(provide 'ses)
-;; arch-tag: 88c1ccf0-4293-4824-8c5d-0757b52217f3
;;; ses.el ends here
;;; ses.el ends here