X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/3f9549e874035d963eb5ca02f24d51dc935e6326..34e856d5ac828753b7be20e2471f39fb613f7f40:/lisp/ses.el diff --git a/lisp/ses.el b/lisp/ses.el index bf88364456..1626147dab 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -1,6 +1,6 @@ ;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*- -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Maintainer: Vincent Belaïche @@ -67,6 +67,7 @@ "Simple Emacs Spreadsheet." :tag "SES" :group 'applications + :link '(custom-manual "(ses) Top") :prefix "ses-" :version "21.1") @@ -703,7 +704,6 @@ for this spreadsheet." (and (string-match "\\`\\([A-Z]+\\)\\([0-9]+\\)\\'" str) (let* ((col-str (match-string-no-properties 1 str)) (col 0) - (col-offset 0) (col-base 1) (col-idx (1- (length col-str))) (row (1- (string-to-number (match-string-no-properties 2 str))))) @@ -740,7 +740,7 @@ row and column of the cell, with numbering starting from 0. Return nil in case of failure." (unless (local-variable-p sym) (make-local-variable sym) - (if (let (case-fold-search) (string-match "\\`[A-Z]+[0-9]+\\'" (symbol-name sym))) + (if (let (case-fold-search) (string-match-p "\\`[A-Z]+[0-9]+\\'" (symbol-name sym))) (put sym 'ses-cell (cons row col)) (put sym 'ses-cell :ses-named) (setq ses--named-cell-hashmap (or ses--named-cell-hashmap (make-hash-table :test 'eq))) @@ -1474,7 +1474,7 @@ Sets `ses-relocate-return' to 'delete if cell-references were removed." (let (rowcol result) (if (or (atom formula) (eq (car formula) 'quote)) (if (and (setq rowcol (ses-sym-rowcol formula)) - (string-match "\\`[A-Z]+[0-9]+\\'" (symbol-name formula))) + (string-match-p "\\`[A-Z]+[0-9]+\\'" (symbol-name formula))) (ses-relocate-symbol formula rowcol startrow startcol rowincr colincr) formula) ; Pass through as-is. @@ -1735,7 +1735,7 @@ Does not execute cell formulas or print functions." (search-backward ";; Local Variables:\n" nil t) (backward-list 1) (setq ses--params-marker (point-marker)) - (let ((params (condition-case nil (read (current-buffer)) (error nil)))) + (let ((params (ignore-errors (read (current-buffer))))) (or (and (= (safe-length params) 3) (numberp (car params)) (numberp (cadr params)) @@ -1761,7 +1761,7 @@ Does not execute cell formulas or print functions." ;; Skip over print area, which we assume is correct. (goto-char (point-min)) (forward-line ses--numrows) - (or (looking-at ses-print-data-boundary) + (or (looking-at-p ses-print-data-boundary) (error "Missing marker between print and data areas")) (forward-char 1) (setq ses--data-marker (point-marker)) @@ -1774,12 +1774,12 @@ Does not execute cell formulas or print functions." (dotimes (col ses--numcols) (let* ((x (read (current-buffer))) (sym (car-safe (cdr-safe x)))) - (or (and (looking-at "\n") + (or (and (looking-at-p "\n") (eq (car-safe x) 'ses-cell) (ses-create-cell-variable sym row col)) (error "Cell-def error")) (eval x))) - (or (looking-at "\n\n") + (or (looking-at-p "\n\n") (error "Missing blank line between rows"))) ;; Load global parameters. (let ((widths (read (current-buffer))) @@ -1805,8 +1805,8 @@ Does not execute cell formulas or print functions." (1value (eval head-row))) ;; Should be back at global-params. (forward-char 1) - (or (looking-at (replace-regexp-in-string "1" "[0-9]+" - ses-initial-global-parameters)) + (or (looking-at-p (replace-regexp-in-string "1" "[0-9]+" + ses-initial-global-parameters)) (error "Problem with column-defs or global-params")) ;; Check for overall newline count in definitions area. (forward-line 3) @@ -1887,13 +1887,39 @@ Delete overlays, remove special text properties." ;;;###autoload (defun ses-mode () "Major mode for Simple Emacs Spreadsheet. -See \"ses-example.ses\" (in `data-directory') for more info. -Key definitions: +When you invoke SES in a new buffer, it is divided into cells +that you can enter data into. You can navigate the cells with +the arrow keys and add more cells with the tab key. The contents +of these cells can be numbers, text, or Lisp expressions. (To +enter text, enclose it in double quotes.) + +In an expression, you can use cell coordinates to refer to the +contents of another cell. For example, you can sum a range of +cells with `(+ A1 A2 A3)'. There are specialized functions like +`ses+' (addition for ranges with empty cells), `ses-average' (for +performing calculations on cells), and `ses-range' and `ses-select' +\(for extracting ranges of cells). + +Each cell also has a print function that controls how it is +displayed. + +Each SES buffer is divided into a print area and a data area. +Normally, you can simply use SES to look at and manipulate the print +area, and let SES manage the data area outside the visible region. + +See \"ses-example.ses\" (in `data-directory') for an example +spreadsheet, and the Info node `(ses)Top.' + +In the following, note the separate keymaps for cell editing mode +and print mode specifications. Key definitions: + \\{ses-mode-map} -These key definitions are active only in the print area (the visible part): +These key definitions are active only in the print area (the visible +part): \\{ses-mode-print-map} -These are active only in the minibuffer, when entering or editing a formula: +These are active only in the minibuffer, when entering or editing a +formula: \\{ses-mode-edit-map}" (interactive) (unless (and (boundp 'ses--deferred-narrow) @@ -2077,9 +2103,8 @@ Based on the current set of columns and `window-hscroll' position." (defun ses-jump-safe (cell) "Like `ses-jump', but no error if invalid cell." - (condition-case nil - (ses-jump cell) - (error))) + (ignore-errors + (ses-jump cell))) (defun ses-reprint-all (&optional nonarrow) "Recreate the display area. Calls all printer functions. Narrows to @@ -2789,7 +2814,7 @@ We clear the killed cells instead of deleting them." ;; For some reason, the text-read-only error is not caught by `delete-region', ;; so we have to use subterfuge. (let ((buffer-read-only t)) - (1value (condition-case x + (1value (condition-case nil (noreturn (funcall (lookup-key (current-global-map) (this-command-keys)) beg end)) @@ -3001,7 +3026,7 @@ spot, or error signal if user requests cancel." (if rowbool (format "%d rows" needrows) "") (if (and rowbool colbool) " and " "") (if colbool (format "%d columns" needcols) ""))) - (error "Cancelled")) + (error "Canceled")) (when rowbool (let (ses--curcell) (save-excursion @@ -3014,13 +3039,13 @@ spot, or error signal if user requests cancel." (ses-col-printer (1- ses--numcols))))) rowcol)) -(defun ses-export-tsv (beg end) +(defun ses-export-tsv (_beg _end) "Export values from the current range, with tabs between columns and newlines between rows. Result is placed in kill ring." (interactive "r") (ses-export-tab nil)) -(defun ses-export-tsf (beg end) +(defun ses-export-tsf (_beg _end) "Export formulas from the current range, with tabs between columns and newlines between rows. Result is placed in kill ring." (interactive "r") @@ -3298,7 +3323,7 @@ highlighted range in the spreadsheet." (let* ((x (ses-sym-rowcol ref)) (xcell (ses-get-cell (car x) (cdr x)))) (ses-cell-references-aset xcell - (cons new-name (delq sym + (cons new-name (delq sym (ses-cell-references xcell)))))) (push new-name ses--renamed-cell-symb-list) (set new-name (symbol-value sym)) @@ -3579,7 +3604,7 @@ current column and continues until the next nonblank column." current column and continues until the next nonblank column." (ses-center-span value ?~)) -(defun ses-unsafe (value) +(defun ses-unsafe (_value) "Substitute for an unsafe formula or printer." (error "Unsafe formula or printer"))