emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to ses.texi


From: Glenn Morris
Subject: [Emacs-diffs] Changes to ses.texi
Date: Thu, 06 Sep 2007 04:40:24 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/09/06 04:40:24

Index: ses.texi
===================================================================
RCS file: ses.texi
diff -N ses.texi
--- ses.texi    15 Apr 2007 20:57:15 -0000      1.20
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,982 +0,0 @@
-\input texinfo   @c -*-texinfo-*-
address@hidden %**start of header
address@hidden ../info/ses
address@hidden SES: Simple Emacs Spreadsheet
address@hidden off
address@hidden fn cp
address@hidden vr cp
address@hidden ky cp
address@hidden %**end of header
-
address@hidden
-This file documents SES: the Simple Emacs Spreadsheet.
-
-Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007
-Free Software Foundation, Inc.
-
address@hidden
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU
-Manual,'' and with the Back-Cover Texts as in (a) below.  A copy of the
-license is included in the section entitled ``GNU Free Documentation
-License'' in the Emacs manual.
-
-(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
-this GNU Manual, like GNU software.  Copies published by the Free
-Software Foundation raise funds for GNU development.''
-
-This document is part of a collection distributed under the GNU Free
-Documentation License.  If you want to distribute this document
-separately from the collection, you can do so by adding a copy of the
-license to the document, as described in section 6 of the license.
address@hidden quotation
address@hidden copying
-
address@hidden Emacs
address@hidden
-* SES: (ses).       Simple Emacs Spreadsheet
address@hidden direntry
-
address@hidden
-
address@hidden
address@hidden SES
address@hidden Simple Emacs Spreadsheet
address@hidden Jonathan A. Yavner
address@hidden @email{jyavner@@member.fsf.org}
-
address@hidden
address@hidden 0pt plus 1filll
address@hidden
address@hidden titlepage
-
address@hidden
-
address@hidden 
===================================================================
-
address@hidden
address@hidden Top, Sales Pitch, (dir), (dir)
address@hidden  node-name,  next,  previous,  up
address@hidden SES: Simple Emacs Spreadsheet
-
address@hidden
-SES is a major mode for GNU Emacs to edit spreadsheet files, which
-contain a rectangular grid of cells.  The cells' values are specified
-by formulas that can refer to the values of other cells.
address@hidden display
address@hidden ifnottex
-
-To report bugs, send email to @email{jyavner@@member.fsf.org}.
-
address@hidden
-* Sales Pitch::                 Why use SES?
-* The Basics::                  Basic spreadsheet commands
-* Advanced Features::           Want to know more?
-* For Gurus::                   Want to know @emph{even more}?
-* Index::                       Concept, Function and Variable Index
-* Acknowledgements::            Acknowledgements
-* GNU Free Documentation License:: The license for this documentation.
address@hidden menu
-
address@hidden 
===================================================================
-
address@hidden Sales Pitch, The Basics, Top, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Sales Pitch
address@hidden features
-
address@hidden @bullet
address@hidden Create and edit simple spreadsheets with a minimum of fuss.
address@hidden Full undo/redo/autosave.
address@hidden Immune to viruses in spreadsheet files.
address@hidden Cell formulas are straight Emacs Lisp.
address@hidden Printer functions for control of cell appearance.
address@hidden Intuitive keystroke commands: C-o = insert row, M-o = insert 
column, etc.
address@hidden ``Spillover'' of lengthy cell values into following blank cells.
address@hidden Header line shows column letters or a selected row.
address@hidden Completing-read for entering symbols as cell values.
address@hidden Cut, copy, and paste can transfer formulas and printer functions.
address@hidden Import and export of tab-separated values or tab-separated 
formulas.
address@hidden Plaintext, easily-hacked file format.
address@hidden itemize
-
address@hidden 
===================================================================
-
address@hidden The Basics, Advanced Features, Sales Pitch, Top
address@hidden  node-name,  next,  previous,  up
address@hidden The Basics
address@hidden basic commands
address@hidden ses-jump
address@hidden ses-mark-row
address@hidden ses-mark-column
address@hidden ses-mark-whole-buffer
address@hidden set-mark-command
address@hidden keyboard-quit
-
-A @dfn{cell identifier} is a symbol with a column letter and a row
-number.  Cell B7 is the 2nd column of the 7th row.  For very wide
-spreadsheets, there are two column letters: cell AB7 is the 28th
-column of the 7th row.
-
address@hidden @kbd
address@hidden j
-Moves point to cell, specified by identifier (@code{ses-jump}).
address@hidden table
-
-Point is always at the left edge of a cell, or at the empty endline.
-When mark is inactive, the current cell is underlined.  When mark is
-active, the range is the highlighted rectangle of cells (SES always
-uses transient mark mode).  Drag the mouse from A1 to A3 to create the
-range A1-A2.  Many SES commands operate only on single cells, not
-ranges.
-
address@hidden @kbd
address@hidden C-SPC
address@hidden C-@@
-Set mark at point (@code{set-mark-command}).
-
address@hidden C-g
-Turn off the mark (@code{keyboard-quit}).
-
address@hidden M-h
-Highlight current row (@code{ses-mark-row}).
-
address@hidden S-M-h
-Highlight current column (@code{ses-mark-column}).
-
address@hidden C-x h
-Highlight all cells (@code{mark-whole-buffer}).
address@hidden table
-
address@hidden
-* Formulas::
-* Resizing::
-* Printer functions::
-* Clearing cells::
-* Copy/cut/paste::
-* Customizing SES::
address@hidden menu
-
address@hidden Formulas, Resizing, The Basics, The Basics
address@hidden Cell formulas
address@hidden formulas
address@hidden formulas, entering
address@hidden ses-read-cell
address@hidden ses-read-symbol
address@hidden ses-edit-cell
address@hidden ses-recalculate-cell
address@hidden ses-recalculate-all
-
-To enter a number into the current cell, just start typing:
-
address@hidden @kbd
address@hidden 0..9
-Self-insert a digit (@code{ses-read-cell}).
-
address@hidden -
-Self-insert a negative number (@code{ses-read-cell}).
-
address@hidden .
-Self-insert a fractional number (@code{ses-read-cell}).
-
address@hidden "
-Self-insert a quoted string.  The ending double-quote
-is inserted for you (@code{ses-read-cell}).
-
address@hidden (
-Self-insert an expression.  The right-parenthesis is inserted for you
-(@code{ses-read-cell}).  To access another cell's value, just use its
-identifier in your expression.  Whenever the other cell is changed,
-this cell's formula will be reevaluated.  While typing in the
-expression, you can use @address@hidden to complete symbol names.
-
address@hidden ' @r{(apostrophe)}
-Enter a symbol (ses-read-symbol).  SES remembers all symbols that have
-been used as formulas, so you can type just the beginning of a symbol
-and use @address@hidden, @address@hidden, and @kbd{?} to complete it.
address@hidden table
-
-To enter something else (e.g., a vector), begin with a digit, then
-erase the digit and type whatever you want.
-
address@hidden @kbd
address@hidden RET
-Edit the existing formula in the current cell (@code{ses-edit-cell}).
-
address@hidden C-c C-c
-Force recalculation of the current cell or range (@code{ses-recalculate-cell}).
-
address@hidden C-c C-l
-Recalculate the entire spreadsheet (@code{ses-recalculate-all}).
address@hidden table
-
address@hidden Resizing, Printer functions, Formulas, The Basics
address@hidden Resizing the spreadsheet
address@hidden resizing spreadsheets
address@hidden ses-insert-row
address@hidden ses-insert-column
address@hidden ses-delete-row
address@hidden ses-delete-column
address@hidden ses-set-column-width
address@hidden ses-forward-or-insert
address@hidden ses-append-row-jump-first-column
-
-
-Basic commands:
-
address@hidden @kbd
address@hidden C-o
-(@code{ses-insert-row})
-
address@hidden M-o
-(@code{ses-insert-column})
-
address@hidden C-k
-(@code{ses-delete-row})
-
address@hidden M-k
-(@code{ses-delete-column})
-
address@hidden w
-(@code{ses-set-column-width})
-
address@hidden TAB
-Moves point to the next rightward cell, or inserts a new column if
-already at last cell on line, or inserts a new row if at endline
-(@code{ses-forward-or-insert}).
-
address@hidden C-j
-Linefeed inserts below the current row and moves to column A
-(@code{ses-append-row-jump-first-column}).
address@hidden table
-
-Resizing the spreadsheet (unless you're just changing a column width)
-relocates all the cell-references in formulas so they still refer to
-the same cells.  If a formula mentioned B1 and you insert a new first
-row, the formula will now mention B2.
-
-If you delete a cell that a formula refers to, the cell-symbol is
-deleted from the formula, so @code{(+ A1 B1 C1)} after deleting the third
-column becomes @code{(+ A1 B1)}.  In case this is not what you wanted:
-
address@hidden @kbd
address@hidden C-_
address@hidden C-x u
-Undo previous action (@code{(undo)}).
address@hidden table
-
-
address@hidden Printer functions, Clearing cells, Resizing, The Basics
address@hidden Printer functions
address@hidden printer functions
address@hidden ses-read-cell-printer
address@hidden ses-read-column-printer
address@hidden ses-read-default-printer
address@hidden ses-center
address@hidden ses-center-span
address@hidden ses-dashfill
address@hidden ses-dashfill-span
address@hidden ses-tildefill-span
-
-
-Printer functions convert binary cell values into the print forms that
-Emacs will display on the screen.
-
-A printer can be a format string, like @samp{"$%.2f"}.  The result
-string is right-aligned within the print cell.  To get left-alignment,
-use parentheses: @samp{("$%.2f")}.  A printer can also be a
-one-argument function (a symbol or a lambda), whose result is a string
-(right-aligned) or list of one string (left-aligned).  While typing in
-a lambda, you can use @address@hidden to complete the names of symbols.
-
-Each cell has a printer.  If @code{nil}, the column-printer for the cell's
-column is used.  If that is also @code{nil}, the default-printer for the
-spreadsheet is used.
-
address@hidden @kbd
address@hidden p
-Enter a printer for current cell or range (@code{ses-read-cell-printer}).
-
address@hidden M-p
-Enter a printer for the current column (@code{ses-read-column-printer}).
-
address@hidden C-c C-p
-Enter the default printer for the spreadsheet
-(@code{ses-read-default-printer}).
address@hidden table
-
-The @address@hidden commands have their own minibuffer
-history, which is preloaded with the set of all printers used in this
-spreadsheet, plus the standard printers.
-
-The standard printers are suitable only for cells, not columns or
-default, because they format the value using the column-printer (or
-default-printer if @code{nil}) and then center the result:
-
address@hidden @code
address@hidden ses-center
-Just centering.
-
address@hidden ses-center-span
-Centering with spill-over to following blank cells.
-
address@hidden ses-dashfill
-Centering using dashes (-) instead of spaces.
-
address@hidden ses-dashfill-span
-Centering with dashes and spill-over.
-
address@hidden ses-tildefill-span
-Centering with tildes (~) and spill-over.
address@hidden table
-
-
address@hidden Clearing cells, Copy/cut/paste, Printer functions, The Basics
address@hidden Clearing cells
address@hidden clearing commands
address@hidden ses-clear-cell-backward
address@hidden ses-clear-cell-forward
-
-These commands set both formula and printer to @code{nil}:
-
address@hidden @kbd
address@hidden DEL
-Clear cell and move left (@code{ses-clear-cell-backward}).
-
address@hidden C-d
-Clear cell and move right (@code{ses-clear-cell-forward}).
address@hidden table
-
-
address@hidden Copy/cut/paste, Customizing SES, Clearing cells, The Basics
address@hidden Copy, cut, and paste
address@hidden copy
address@hidden cut
address@hidden paste
address@hidden kill-ring-save
address@hidden mouse-set-region
address@hidden mouse-set-secondary
address@hidden ses-kill-override
address@hidden yank
address@hidden clipboard-yank
address@hidden mouse-yank-at-click
address@hidden mouse-yank-at-secondary
address@hidden ses-yank-pop
-
-The copy functions work on rectangular regions of cells.  You can paste the
-copies into non-SES buffers to export the print text.
-
address@hidden @kbd
address@hidden M-w
address@hidden [copy]
address@hidden [C-insert]
-Copy the highlighted cells to kill ring and primary clipboard
-(@code{kill-ring-save}).
-
address@hidden [drag-mouse-1]
-Mark a region and copy it to kill ring and primary clipboard
-(@code{mouse-set-region}).
-
address@hidden [M-drag-mouse-1]
-Mark a region and copy it to kill ring and secondary clipboard
-(@code{mouse-set-secondary}).
-
address@hidden C-w
address@hidden [cut]
address@hidden [S-delete]
-The cut functions do not actually delete rows or columns---they copy
-and then clear (@code{ses-kill-override}).
-
address@hidden C-y
address@hidden [S-insert]
-Paste from kill ring (@code{yank}).  The paste functions behave
-differently depending on the format of the text being inserted:
address@hidden @bullet
address@hidden
-When pasting cells that were cut from a SES buffer, the print text is
-ignored and only the attached formula and printer are inserted; cell
-references in the formula are relocated unless you use @kbd{C-u}.
address@hidden
-The pasted text overwrites a rectangle of cells whose top left corner
-is the current cell.  If part of the rectangle is beyond the edges of
-the spreadsheet, you must confirm the increase in spreadsheet size.
address@hidden
-Non-SES text is usually inserted as a replacement formula for the
-current cell.  If the formula would be a symbol, it's treated as a
-string unless you use @kbd{C-u}.  Pasted formulas with syntax errors
-are always treated as strings.
address@hidden itemize
-
address@hidden [paste]
-Paste from primary clipboard or kill ring (@code{clipboard-yank}).
-
address@hidden [mouse-2]
-Set point and paste from primary clipboard (@code{mouse-yank-at-click}).
-
address@hidden [M-mouse-2]
-Set point and paste from secondary clipboard (@code{mouse-yank-secondary}).
-
address@hidden M-y
-Immediately after a paste, you can replace the text with a preceding
-element from the kill ring (@code{ses-yank-pop}).  Unlike the standard
-Emacs yank-pop, the SES version uses @code{undo} to delete the old
-yank.  This doesn't make any difference?
address@hidden table
-
address@hidden Customizing SES,  , Copy/cut/paste, The Basics
address@hidden Customizing SES
address@hidden customizing
address@hidden enable-local-eval
address@hidden ses-mode-hook
address@hidden safe-functions
address@hidden enable-local-eval
-
-
-By default, a newly-created spreadsheet has 1 row and 1 column.  The
-column width is 7 and the default printer is @samp{"%.7g"}.  Each of these
-can be customized.  Look in group ``ses''.
-
-After entering a cell value, point normally moves right to the next
-cell.  You can customize @code{ses-after-entry-functions} to move left or
-up or down.  For diagonal movement, select two functions from the
-list.
-
address@hidden is a normal mode hook (list of functions to
-execute when starting SES mode for a buffer).
-
-The variable @code{safe-functions} is a list of possibly-unsafe
-functions to be treated as safe when analysing formulas and printers.
address@hidden protection}.  Before customizing @code{safe-functions},
-think about how much you trust the person who's suggesting this
-change.  The value @code{t} turns off all anti-virus protection.  A
-list-of-functions value might enable a ``gee whiz'' spreadsheet, but it
-also creates trapdoors in your anti-virus armor.  In order for virus
-protection to work, you must always press @kbd{n} when presented with
-a virus warning, unless you understand what the questionable code is
-trying to do.  Do not listen to those who tell you to customize
address@hidden variable is for people who don't wear
-safety belts!
-
-
address@hidden 
===================================================================
-
address@hidden Advanced Features, For Gurus, The Basics, Top
address@hidden Advanced Features
address@hidden advanced features
address@hidden ses-read-header-row
-
-
address@hidden @kbd
address@hidden C-c M-C-h
-(@code{ses-set-header-row}).  The header line at the top of the SES
-window normally shows the column letter for each column.  You can set
-it to show a copy of some row, such as a row of column titles, so that
-row will always be visible.  Default is to set the current row as the
-header; use C-u to prompt for header row.  Set the header to row 0 to
-show column letters again.
address@hidden [header-line mouse-3]
-Pops up a menu to set the current row as the header, or revert to
-column letters.
address@hidden table
-
address@hidden
-* The print area::
-* Ranges in formulas::
-* Sorting by column::
-* Standard formula functions::
-* More on cell printing::
-* Import and export::
-* Virus protection::
-* Spreadsheets with details and summary::
address@hidden menu
-
address@hidden The print area, Ranges in formulas, Advanced Features, Advanced 
Features
address@hidden The print area
address@hidden print area
address@hidden widen
address@hidden ses-renarrow-buffer
address@hidden ses-reprint-all
-
-A SES file consists of a print area and a data area.  Normally the
-buffer is narrowed to show only the print area.  The print area is
-read-only except for special SES commands; it contains cell values
-formatted by printer functions.  The data area records the formula and
-printer functions, etc.
-
address@hidden @kbd
address@hidden C-x n w
-Show print and data areas (@code{widen}).
-
address@hidden C-c C-n
-Show only print area (@code{ses-renarrow-buffer}).
-
address@hidden S-C-l
address@hidden M-C-l
-Recreate print area by reevaluating printer functions for all cells
-(@code{ses-reprint-all}).
address@hidden table
-
address@hidden Ranges in formulas, Sorting by column, The print area, Advanced 
Features
address@hidden Ranges in formulas
address@hidden ranges
address@hidden ses-insert-range-click
address@hidden ses-insert-range
address@hidden ses-insert-ses-range-click
address@hidden ses-insert-ses-range
address@hidden from
address@hidden to
-
-A formula like
address@hidden
-(+ A1 A2 A3)
address@hidden lisp
-is the sum of three specific cells.  If you insert a new second row,
-the formula becomes
address@hidden
-(+ A1 A3 A4)
address@hidden lisp
-and the new row is not included in the sum.
-
-The macro @code{(ses-range @var{from} @var{to})} evaluates to a list of
-the values in a rectangle of cells.  If your formula is
address@hidden
-(apply '+ (ses-range A1 A3))
address@hidden lisp
-and you insert a new second row, it becomes
address@hidden
-(apply '+ (ses-range A1 A4))
address@hidden lisp
-and the new row is included in the sum.
-
-While entering or editing a formula in the minibuffer, you can select
-a range in the spreadsheet (using mouse or keyboard), then paste a
-representation of that range into your formula.  Suppose you select
-A1-C1:
-
address@hidden @kbd
address@hidden [S-mouse-3]
-Inserts "A1 B1 C1" @code{(ses-insert-range-click})
-
address@hidden C-c C-r
-Keyboard version (@code{ses-insert-range}).
-
address@hidden [C-S-mouse-3]
-Inserts "(ses-range A1 C1)" (@code{ses-insert-ses-range-click}).
-
address@hidden C-c C-s
-Keyboard version (@code{ses-insert-ses-range}).
address@hidden table
-
-If you delete the @var{from} or @var{to} cell for a range, the nearest
-still-existing cell is used instead.  If you delete the entire range,
-the formula relocator will delete the ses-range from the formula.
-
-If you insert a new row just beyond the end of a one-column range, or
-a new column just beyond a one-row range, the new cell is included in
-the range.  New cells inserted just before a range are not included.
-
-
address@hidden Sorting by column, Standard formula functions, Ranges in 
formulas, Advanced Features
address@hidden Sorting by column
address@hidden sorting
address@hidden ses-sort-column
address@hidden ses-sort-column-click
-
address@hidden @kbd
address@hidden C-c M-C-s
-Sort the cells of a range using one of the columns
-(@code{ses-sort-column}).  The rows (or partial rows if the range
-doesn't include all columns) are rearranged so the chosen column will
-be in order.
-
address@hidden [header-line mouse-2]
-The easiest way to sort is to click mouse-2 on the chosen column's header row
-(@code{ses-sort-column-click}).
address@hidden table
-
-The sort comparison uses @code{string<}, which works well for
-right-justified numbers and left-justified strings.
-
-With prefix arg, sort is in descending order.
-
-Rows are moved one at a time, with relocation of formulas.  This works
-well if formulas refer to other cells in their row, not so well for
-formulas that refer to other rows in the range or to cells outside the
-range.
-
-
address@hidden Standard formula functions, More on cell printing, Sorting by 
column, Advanced Features
address@hidden Standard formula functions
address@hidden standard formula functions
address@hidden *skip*
address@hidden *error*
address@hidden ses-delete-blanks
address@hidden ses-average
address@hidden ses+
-
-Oftentimes you want a calculation to exclude the blank cells.  Here
-are some useful functions to call from your formulas:
-
address@hidden @code
address@hidden (ses-delete-blanks &rest @var{args})
-Returns a list from which all blank cells (value is either @code{nil} or
-'*skip*) have been deleted.
-
address@hidden (ses+ &rest @var{args})
-Sum of non-blank arguments.
-
address@hidden (ses-average @var{list})
-Average of non-blank elements in @var{list}.  Here the list is passed
-as a single argument, since you'll probably use it with @code{ses-range}.
address@hidden table
-
address@hidden More on cell printing, Import and export, Standard formula 
functions, Advanced Features
address@hidden More on cell printing
address@hidden cell printing, more
address@hidden ses-truncate-cell
address@hidden ses-recalculate-cell
-
-Special cell values:
address@hidden
address@hidden nil prints the same as "", but allows previous cell to spill 
over.
address@hidden '*skip* replaces nil when the previous cell actually does spill 
over;
-nothing is printed for it.
address@hidden '*error* indicates that the formula signaled an error instead of
-producing a value: the print cell is filled with hash marks (#).
address@hidden itemize
-
-If the result from the printer function is too wide for the cell and
-the following cell is @code{nil}, the result will spill over into the
-following cell.  Very wide results can spill over several cells.  If
-the result is too wide for the available space (up to the end of the
-row or the next address@hidden cell), the result is truncated if the cell's
-value is a string, or replaced with hash marks otherwise.
-
-SES could get confused by printer results that contain newlines or
-tabs, so these are replaced with question marks.
-
address@hidden @kbd
address@hidden C-c C-t
-Confine a cell to its own column (@code{ses-truncate-cell}).  This
-allows you to move point to a rightward cell that would otherwise be
-covered by a spill-over.  If you don't change the rightward cell, the
-confined cell will spill over again the next time it is reprinted.
-
address@hidden C-c C-c
-When applied to a single cell, this command displays in the echo area any
-formula error or printer error that occurred during
-recalculation/reprinting (@code{ses-recalculate-cell}).
address@hidden table
-
-When a printer function signals an error, the default printer
address@hidden"%s"} is substituted.  This is useful when your column printer
-is numeric-only and you use a string as a cell value.
-
-
address@hidden Import and export, Virus protection, More on cell printing, 
Advanced Features
address@hidden Import and export
address@hidden import and export
address@hidden export, and import
address@hidden ses-export-tsv
address@hidden ses-export-tsf
-
address@hidden @kbd
address@hidden x t
-Export a range of cells as tab-separated values (@code{ses-export-tsv}).
address@hidden x T
-Export a range of cells as tab-separated formulas (@code{ses-export-tsf}).
address@hidden table
-
-The exported text goes to the kill ring --- you can paste it into
-another buffer.  Columns are separated by tabs, rows by newlines.
-
-To import text, use any of the yank commands where the text to paste
-contains tabs and/or newlines.  Imported formulas are not relocated.
-
address@hidden Virus protection, Spreadsheets with details and summary, Import 
and export, Advanced Features
address@hidden Virus protection
address@hidden virus protection
-
-Whenever a formula or printer is read from a file or is pasted into
-the spreadsheet, it receives a ``needs safety check'' marking.  Later,
-when the formula or printer is evaluated for the first time, it is
-checked for safety using the @code{unsafep} predicate; if found to be
-``possibly unsafe'', the questionable formula or printer is displayed
-and you must press Y to approve it or N to use a substitute.  The
-substitute always signals an error.
-
-Formulas or printers that you type in are checked immediately for
-safety.  If found to be possibly unsafe and you press N to disapprove,
-the action is canceled and the old formula or printer will remain.
-
-Besides viruses (which try to copy themselves to other files),
address@hidden can also detect all other kinds of Trojan horses, such as
-spreadsheets that delete files, send email, flood Web sites, alter
-your Emacs settings, etc.
-
-Generally, spreadsheet formulas and printers are simple things that
-don't need to do any fancy computing, so all potentially-dangerous
-parts of the Emacs Lisp environment can be excluded without cramping
-your style as a formula-writer.  See the documentation in @file{unsafep.el}
-for more info on how Lisp forms are classified as safe or unsafe.
-
address@hidden Spreadsheets with details and summary,  , Virus protection, 
Advanced Features
address@hidden Spreadsheets with details and summary
address@hidden details and summary
address@hidden summary, and details
-
-A common organization for spreadsheets is to have a bunch of ``detail''
-rows, each perhaps describing a transaction, and then a set of
-``summary'' rows that each show reduced data for some subset of the
-details.  SES supports this organization via the @code{ses-select}
-function.
-
address@hidden @code
address@hidden (ses-select @var{fromrange} @var{test} @var{torange})
-Returns a subset of @var{torange}.  For each member in @var{fromrange}
-that is equal to @var{test}, the corresponding member of @var{torange}
-is included in the result.
address@hidden table
-
-Example of use:
address@hidden
-(ses-average (ses-select (ses-range A1 A5) 'Smith (ses-range B1 B5)))
address@hidden lisp
-This computes the average of the B column values for those rows whose
-A column value is the symbol 'Smith.
-
-Arguably one could specify only @var{fromrange} plus
address@hidden and @var{to-column-offset}.  The @var{torange} is
-stated explicitly to ensure that the formula will be recalculated if
-any cell in either range is changed.
-
-File @file{etc/ses-example.el} in the Emacs distribution is an example of a
-details-and-summary spreadsheet.
-
-
address@hidden 
===================================================================
-
address@hidden For Gurus, Index, Advanced Features, Top
address@hidden For Gurus
address@hidden advanced features
-
address@hidden
-* Deferred updates::
-* Nonrelocatable references::
-* The data area::
-* Buffer-local variables in spreadsheets::
-* Uses of defadvice in SES::
address@hidden menu
-
address@hidden Deferred updates, Nonrelocatable references, For Gurus, For Gurus
address@hidden Deferred updates
address@hidden deferred updates
address@hidden updates, deferred
address@hidden run-with-idle-timer
-
-To save time by avoiding redundant computations, cells that need
-recalculation due to changes in other cells are added to a set.  At
-the end of the command, each cell in the set is recalculated once.
-This can create a new set of cells that need recalculation.  The
-process is repeated until either the set is empty or it stops changing
-(due to circular references among the cells).  In extreme cases, you
-might see progress messages of the form ``Recalculating... (@var{nnn}
-cells left)''.  If you interrupt the calculation using @kbd{C-g}, the
-spreadsheet will be left in an inconsistent state, so use @kbd{C-_} or
address@hidden C-l} to fix it.
-
-To save even more time by avoiding redundant writes, cells that have
-changes are added to a set instead of being written immediately to the
-data area.  Each cell in the set is written once, at the end of the
-command.  If you change vast quantities of cells, you might see a
-progress message of the form ``Writing... (@var{nnn} cells left)''.
-These deferred cell-writes cannot be interrupted by @kbd{C-g}, so
-you'll just have to wait.
-
-SES uses @code{run-with-idle-timer} to move the cell underline when
-Emacs will be scrolling the buffer after the end of a command, and
-also to narrow and underline after @kbd{C-x C-v}.  This is visible as
-a momentary glitch after C-x C-v and certain scrolling commands.  You
-can type ahead without worrying about the glitch.
-
-
address@hidden Nonrelocatable references, The data area, Deferred updates, For 
Gurus
address@hidden Nonrelocatable references
address@hidden nonrelocatable references
address@hidden references, nonrelocatable
-
address@hidden relocates all cell-references in a pasted formula, while
address@hidden C-y} relocates none of the cell-references.  What about mixed
-cases?
-
-You can use
address@hidden
-(symbol-value 'B3)
address@hidden lisp
-to make an @dfn{absolute reference}.  The formula relocator skips over
-quoted things, so this will not be relocated when pasted or when
-rows/columns are inserted/deleted.  However, B3 will not be recorded
-as a dependency of this cell, so this cell will not be updated
-automatically when B3 is changed.
-
-The variables @code{row} and @code{col} are dynamically bound while a
-cell formula is being evaluated.  You can use
address@hidden
-(ses-cell-value row 0)
address@hidden lisp
-to get the value from the leftmost column in the current row.  This
-kind of dependency is also not recorded.
-
-
address@hidden The data area, Buffer-local variables in spreadsheets, 
Nonrelocatable references, For Gurus
address@hidden The data area
address@hidden data area
address@hidden ses-reconstruct-all
-
-Begins with an 014 character, followed by sets of cell-definition
-macros for each row, followed by column-widths, column-printers,
-default-printer, and header-row.  Then there's the global parameters
-(file-format ID, numrows, numcols) and the local variables (specifying
-SES mode for the buffer, etc.)
-
-When a SES file is loaded, first the numrows and numcols values are
-loaded, then the entire data area is @code{eval}ed, and finally the local
-variables are processed.
-
-You can edit the data area, but don't insert or delete any newlines
-except in the local-variables part, since SES locates things by
-counting newlines.  Use @kbd{C-x C-e} at the end of a line to install
-your edits into the spreadsheet data structures (this does not update
-the print area, use e.g. @kbd{C-c C-l} for that).
-
-The data area is maintained as an image of spreadsheet data
-structures that area stored in buffer-local variables.  If the data
-area gets messed up, you can try reconstructing the data area from the
-data structures:
-
address@hidden @kbd
address@hidden C-c M-C-l
-(@code{ses-reconstruct-all}).
address@hidden table
-
-
address@hidden Buffer-local variables in spreadsheets, Uses of defadvice in 
SES, The data area, For Gurus
address@hidden Buffer-local variables in spreadsheets
address@hidden buffer-local variables
address@hidden variables, buffer-local
-
-You can add additional local variables to the list at the bottom of
-the data area, such as hidden constants you want to refer to in your
-formulas.
-
-You can override the variable @code{symbolic-formulas} to be a list of
-symbols (as parenthesized strings) to show as completions for the '
-command.  This initial completions list is used instead of the actual
-set of symbols-as-formulas in the spreadsheet.
-
-For examples of these, see file @file{etc/ses-example.ses}.
-
-If (for some reason) you want your formulas or printers to save data
-into variables, you must declare these variables as buffer-locals in
-order to avoid a virus warning.
-
-You can define functions by making them values for the fake local
-variable @code{eval}.  Such functions can then be used in your
-formulas and printers, but usually each @code{eval} is presented to
-the user during file loading as a potential virus --- this can get
-annoying.
-
-You can define functions in your @file{.emacs} file.  Other people can
-still read the print area of your spreadsheet, but they won't be able
-to recalculate or reprint anything that depends on your functions.  To
-avoid virus warnings, each function used in a formula needs
address@hidden
-(put 'your-function-name 'safe-function t)
address@hidden lisp
-
address@hidden Uses of defadvice in SES,  , Buffer-local variables in 
spreadsheets, For Gurus
address@hidden Uses of defadvice in SES
address@hidden defadvice
address@hidden undo-more
address@hidden copy-region-as-kill
address@hidden yank
-
address@hidden @code
address@hidden undo-more
-Defines a new undo element format (@var{fun} . @var{args}), which
-means ``undo by applying @var{fun} to @var{args}''.  For spreadsheet
-buffers, it allows undos in the data area even though that's outside
-the narrowing.
-
address@hidden copy-region-as-kill
-When copying from the print area of a spreadsheet, treat the region as
-a rectangle and attach each cell's formula and printer as 'ses
-properties.
-
address@hidden yank
-When yanking into the print area of a spreadsheet, first try to yank
-as cells (if the yank text has 'ses properties), then as tab-separated
-formulas, then (if all else fails) as a single formula for the current
-cell.
address@hidden table
-
address@hidden 
===================================================================
address@hidden Index, Acknowledgements, For Gurus, Top
address@hidden Index
-
address@hidden cp
-
address@hidden 
===================================================================
-
address@hidden Acknowledgements, GNU Free Documentation License, Index, Top
address@hidden Acknowledgements
-
-Coding by:
address@hidden
-Jonathan Yavner @email{jyavner@@address@hidden
-Stefan Monnier @email{monnier@@gnu.org}
address@hidden quotation
-
address@hidden
-Texinfo manual by:
address@hidden
-Jonathan Yavner @email{jyavner@@address@hidden
-Brad Collins <brad@@chenla.org>
address@hidden quotation
-
address@hidden
-Ideas from:
address@hidden
-Christoph Conrad @email{christoph.conrad@@address@hidden
-CyberBob @email{cyberbob@@address@hidden
-Syver Enstad @email{syver-en@@address@hidden
-Ami Fischman @email{fischman@@address@hidden
-Thomas Gehrlein @email{Thomas.Gehrlein@@address@hidden
-Chris F.A. Johnson @email{c.f.a.johnson@@address@hidden
-Yusong Li @email{lyusong@@address@hidden
-Juri Linkov @email{juri@@address@hidden
-Harald Maier @email{maierh@@address@hidden
-Alan Nash @email{anash@@address@hidden
-François Pinard @email{pinard@@address@hidden
-Pedro Pinto @email{ppinto@@address@hidden
-Stefan Reichör @email{xsteve@@address@hidden
-Oliver Scholz @email{epameinondas@@address@hidden
-Richard M. Stallman @email{rms@@address@hidden
-Luc Teirlinck @email{teirllm@@address@hidden
-J. Otto Tennant @email{jotto@@address@hidden
-Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
address@hidden quotation
-
address@hidden 
===================================================================
-
address@hidden GNU Free Documentation License, , Acknowledgements, Top
address@hidden GNU Free Documentation License
address@hidden doclicense.texi
-
address@hidden
-
address@hidden
-   arch-tag: 10a4ee1c-7ef4-4c06-8b7a-f975e39f0dec
address@hidden ignore




reply via email to

[Prev in Thread] Current Thread [Next in Thread]