The current line number is displayed in a different face,
@code{line-number-current-line}, so you can make the current line's
number have a distinct appearance, which will help locating the line
-showing point. Additional faces @code{line-number-major-tick} and
+showing point. Additional faces @code{line-number-major-tick} and
@code{line-number-minor-tick} can be used to highlight the line numbers
of lines which are a multiple of certain numbers. Customize
@code{display-line-numbers-major-tick} and
@findex f90-beginning-of-block
@item C-M-p
Move to the start of the current code block
-(@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
+(@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
is like @code{fortran-end-of-block}, but moves backwards.
@end table
specify one or more @var{modifier} keys, you can select a tab by its
ordinal number using one of the specified modifiers in combination
with the tab number to select. The number 9 can be used to select the
-last tab. You can select any modifiers supported by Emacs,
+last tab. You can select any modifiers supported by Emacs,
@pxref{Modifier Keys}. To display the tab number alongside the tab
name, you can customize another variable @code{tab-bar-tab-hints}.
This will help you decide which numerical key to press to select the
@cindex coding standards for Emacs submissions
Contributed code should follow the GNU Coding Standards
-@url{https://www.gnu.org/prep/standards/}. This may also be available
+@url{https://www.gnu.org/prep/standards/}. This may also be available
in info on your system.
If it doesn't, we'll need to find someone to fix the code before we
@findex vc-retrieve-tag
@item C-x v r @var{name} @key{RET}
For all registered files at or below the current directory level,
-retrieve the tagged revision @var{name}. This command will switch to a
+retrieve the tagged revision @var{name}. This command will switch to a
branch if @var{name} is a branch name and your VCS distinguishes
branches from tags. (@code{vc-retrieve-tag}).
@end iftex
@ifnottex
-Printed copies available from @uref{https://shop.fsf.org/}. Published by:
+Printed copies available from @uref{https://shop.fsf.org/}. Published by:
@example
GNU Press, https://www.fsf.org/licensing/gnu-press/
are numbers that indicate the beginning (inclusive) and end
(exclusive) of the substring. The numbers are a count of the number
of characters (including spaces and punctuation) from the beginning of
-the string. Note that the characters in a string are numbered from
+the string. Note that the characters in a string are numbered from
zero, not one.
@need 800
@noindent
we see that @code{append-to} is bound to the value returned by the
-@w{@code{(get-buffer-create buffer)}}. On the next line,
+@w{@code{(get-buffer-create buffer)}}. On the next line,
@code{append-to} is used as an argument to
@code{get-buffer-window-list}; this would not be possible with the
@code{let} expression. Note that @code{point} is automatically bound
and then typing @key{RET}. This causes Emacs to evaluate the
expression in the minibuffer, but to use as the value of point the
position of point in the @file{*scratch*} buffer. (@kbd{M-:} is the
-key binding for @code{eval-expression}. Also, @code{nil} does not
+key binding for @code{eval-expression}. Also, @code{nil} does not
appear in the @file{*scratch*} buffer since the expression is
evaluated in the minibuffer.)
@item @var{dx}, @var{dy}
These are the pixel offsets of the click relative to the top left
corner of the @var{object}'s glyph that is the nearest one to the
-click. The relevant @var{object}s can be either a buffer, or a string,
+click. The relevant @var{object}s can be either a buffer, or a string,
or an image, see above. If @var{object} is @code{nil} or a string,
the coordinates are relative to the top left corner of the character
glyph clicked on. Note that the offsets are always zero on text-mode
. 1). A negative horizontal or vertical width @minus{}@var{n} means
to draw a line of width @var{n} that occupies the space of the
underlying text, thus avoiding any increase in the character height or
-width. For simplification the width could be specified with only a
+width. For simplification the width could be specified with only a
single number @var{n} instead of a list, such case is equivalent to
@code{((abs @var{n}) . @var{n})}.
@defmac file-name-unquote name
This macro removes the quotation prefix @samp{/:} from the file
-@var{name}, if any. If @var{name} is a remote file name, the local
+@var{name}, if any. If @var{name} is a remote file name, the local
part of @var{name} is unquoted.
@end defmac
creates the temporary file's name by adding to @var{prefix} some
random characters that are different in each Emacs job. The result is
guaranteed to be a newly created file, containing @var{text} if that's
-given as a string and empty otherwise. On MS-DOS, this function can
+given as a string and empty otherwise. On MS-DOS, this function can
truncate @var{prefix} to fit into the 8+3 file-name limits. If
@var{prefix} is a relative file name, it is expanded against
@code{temporary-file-directory}.
so if your language seems somewhat similar to one of those languages,
you might try to use that engine. @c FIXME: documentation?
Another one is SMIE which takes an approach in the spirit
-of Lisp sexps and adapts it to non-Lisp languages. Yet another one is
+of Lisp sexps and adapts it to non-Lisp languages. Yet another one is
to rely on a full-blown parser, for example, the tree-sitter library.
@menu
@table @asis
@item archive-contents
-Return a lisp form describing the archive contents. The form is a list
+Return a lisp form describing the archive contents. The form is a list
of 'package-desc' structures (see @file{package.el}), except the first
element of the list is the archive version.
Return the signature for the file.
@item <file name>
-Return the file. This will be the tarball for a multi-file
+Return the file. This will be the tarball for a multi-file
package, or the single file for a simple package.
@end table
@cindex line number
This function returns the line number in the current buffer
corresponding to the buffer position @var{pos}. If @var{pos} is
-@code{nil} or omitted, the current buffer position is used. If
+@code{nil} or omitted, the current buffer position is used. If
@var{absolute} is @code{nil}, the default, counting starts at
@code{(point-min)}, so the value refers to the contents of the
accessible portion of the (potentially narrowed) buffer. If
@cindex program arguments
All three of the subprocess-creating functions allow specifying
-command-line arguments for the process to run. For @code{call-process}
+command-line arguments for the process to run. For @code{call-process}
and @code{call-process-region}, these come in the form of a
@code{&rest} argument, @var{args}. For @code{make-process}, both the
program to run and its command-line arguments are specified as a list
Another difference from @code{rx-let} is that the @var{bindings} are
dynamically scoped, and thus also available in functions called from
-@var{body}. However, they are not visible inside functions defined in
+@var{body}. However, they are not visible inside functions defined in
@var{body}.
@end defmac
@itemize
@item
Anchor regexps at the beginning of a line, string or buffer using
-zero-width assertions (@samp{^} and @code{\`}). This takes advantage
+zero-width assertions (@samp{^} and @code{\`}). This takes advantage
of fast paths in the implementation and can avoid futile matching
attempts. Other zero-width assertions may also bring benefits by
causing a match to fail early.
@defun seq-set-equal-p sequence1 sequence2 &optional testfn
This function checks whether @var{sequence1} and @var{sequence2}
-contain the same elements, regardless of the order. If the optional
+contain the same elements, regardless of the order. If the optional
argument @var{testfn} is non-@code{nil}, it is a function of two
arguments to use instead of the default @code{equal}.
@defvar print-integers-as-characters
When this variable is non-@code{nil}, integers that represent
graphic base characters will be printed using Lisp character syntax
-(@pxref{Basic Char Syntax}). Other numbers are printed the usual way.
+(@pxref{Basic Char Syntax}). Other numbers are printed the usual way.
For example, the list @code{(4 65 -1 10)} would be printed as
@samp{(4 ?A -1 ?\n)}.
@defun defvaralias new-alias base-variable &optional docstring
This function defines the symbol @var{new-alias} as a variable alias
-for symbol @var{base-variable}. This means that retrieving the value
+for symbol @var{base-variable}. This means that retrieving the value
of @var{new-alias} returns the value of @var{base-variable}, and
changing the value of @var{new-alias} changes the value of
@var{base-variable}. The two aliased variable names always share the
Make tags based on regexp matching for the files following this option,
in addition to the tags made with the standard parsing based on
-language. May be freely intermixed with filenames and the \fB\-R\fP
+language. May be freely intermixed with filenames and the \fB\-R\fP
option. The regexps are cumulative, i.e., each such option will add to
the previous ones. The regexps are of one of the forms:
.br
token with either single or double quotes.
You can use apostrophes inside a password or other token by
-surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you
+surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you
can use double quotes inside a password or other token by surrounding
-it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a
+it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a
password or other token can't have both apostrophes and double quotes).
-All this is optional. You could just say (but we don't recommend it,
+All this is optional. You could just say (but we don't recommend it,
we're just showing that it's possible)
@example
necessary if you have an unusual (see earlier comment on those) setup.
The netrc format is directly translated into JSON, if you are into
-that sort of thing. Just point to a JSON file with entries like this:
+that sort of thing. Just point to a JSON file with entries like this:
@example
[
host with an at-sign (@code{@@}).
@item gnu.org:22.gpg
-The port (aka. service) to match can only be expressed after the host and separated with a colon (@code{:}). The separator can be changed through the @code{auth-source-pass-port-separator} variable.
+The port (aka. service) to match can only be expressed after the host
+and separated with a colon (@code{:}). The separator can be changed
+through the @code{auth-source-pass-port-separator} variable.
@item gnu.org:22/rms.gpg
It can also be a function, which allows doing various things. The function
can simply insert some text, indeed, it can be skeleton command (@pxref{Using
Skeletons}). It can be a lambda function which will for example conditionally
-call another function. Or it can even reset the mode for the buffer. If you
+call another function. Or it can even reset the mode for the buffer. If you
want to perform several such actions in order, you use a vector, i.e., several
of the above elements between square brackets (@samp{[@r{@dots{}}]}).
Emacs source, which contains the source code to this manual,
@file{calc.texi}. Change to the @file{doc/misc} subdirectory of the
Emacs source distribution, which contains source code for this manual,
-and type @kbd{make calc.pdf}. (Don't worry if you get some ``overfull
+and type @kbd{make calc.pdf}. (Don't worry if you get some ``overfull
box'' warnings while @TeX{} runs.) The result will be this entire
manual as a pdf file.
@end ifnottex
@infoline 2x3
matrix. Type @w{@kbd{v u}} to unpack the rows into two separate
vectors. Now type @w{@kbd{V R + @key{TAB} V R +}} to compute the sums
-of the two original columns. (There is also a special
+of the two original columns. (There is also a special
grab-and-sum-columns command, @kbd{C-x * :}.)
@strong{Units conversion.} Units are entered algebraically.
Calc has added annotations to the file to help it remember the modes
that were used for this formula. They are formatted like comments
in the @TeX{} typesetting language, just in case you are using @TeX{} or
-@LaTeX{}. (In this example @TeX{} is not being used, so you might want
+@LaTeX{}. (In this example @TeX{} is not being used, so you might want
to move these comments up to the top of the file or otherwise put them
out of the way.)
Arbitrary floating-point precision was the logical next step. Also,
since the large integer arithmetic was there anyway it seemed only
fair to give the user direct access to it, which in turn made it
-practical to support fractions as well as floats. All these features
+practical to support fractions as well as floats. All these features
inspired me to look around for other data types that might be worth
having.
with any integrand @samp{f(t)}. Define a @kbd{z s} command and
@code{Si} function that implement this. You will need to edit the
default argument list a bit. As a test, @samp{Si(1)} should return
-0.946083. (If you don't get this answer, you might want to check that
+0.946083. (If you don't get this answer, you might want to check that
Calc is in Radians mode. Also, @code{ninteg} will run a lot faster if
you reduce the precision to, say, six digits beforehand.)
@xref{Programming Answer 1, 1}. (@bullet{})
the stack, resets all the modes to their initial values (the values
that were saved with @kbd{m m} (@code{calc-save-modes})), clears the
caches (@pxref{Caches}), and so on. (It does @emph{not} erase the
-values of any variables.) With an argument of 0, Calc will be reset to
+values of any variables.) With an argument of 0, Calc will be reset to
its default state; namely, the modes will be given their default values.
With a positive prefix argument, @kbd{C-x * 0} preserves the contents of
the stack but resets everything else to its initial state; with a
the @kbd{q} (@code{calc-quit}) command, the undo history will be
truncated to the length of the customizable variable
@code{calc-undo-length} (@pxref{Customizing Calc}), which by default
-is @expr{100}. (Recall that @kbd{C-x * c} is synonymous with
+is @expr{100}. (Recall that @kbd{C-x * c} is synonymous with
@code{calc-quit} while inside the Calculator; this also truncates the
undo history.)
Some calendars attempt to mimic the historical situation by using the
Gregorian calendar for recent dates and the Julian calendar for older
-dates. The @code{cal} program in most Unix implementations does this,
-for example. While January 1 wasn't always the beginning of a calendar
+dates. The @code{cal} program in most Unix implementations does this,
+for example. While January 1 wasn't always the beginning of a calendar
year, these hybrid calendars still use January 1 as the beginning of
the year even for older dates. The customizable variable
@code{calc-gregorian-switch} (@pxref{Customizing Calc}) can be set to
be anything but is ``probably'' within one
@texline @math{\sigma}
@infoline @var{sigma}
-of the mean value @expr{x}. An interval
+of the mean value @expr{x}. An interval
`@tfn{[}@var{a} @tfn{..@:} @var{b}@tfn{]}' means a
variable's value is unknown, but guaranteed to lie in the specified
range. Error forms are statistical or ``average case'' approximations;
@cindex Moving stack entries
The command @kbd{C-x C-t} (@code{calc-transpose-lines}) will transpose
the stack object determined by the point with the stack object at the
-next higher level. For example, with @samp{10 20 30 40 50} on the
+next higher level. For example, with @samp{10 20 30 40 50} on the
stack and the point on the line containing @samp{30}, @kbd{C-x C-t}
creates @samp{10 20 40 30 50}. More generally, @kbd{C-x C-t} acts on
the stack objects determined by the current point (and mark) similar
at the level above the current point and move it past N other objects;
for example, with @samp{10 20 30 40 50} on the stack and the point on
the line containing @samp{30}, @kbd{C-u 2 C-x C-t} creates
-@samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch
+@samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch
the stack objects at the levels determined by the point and the mark.
@node Editing Stack Entries
the stack contains the arguments and the result: @samp{2 3 5}.
With the exception of keyboard macros, this works for all commands that
-take arguments off the stack. (To avoid potentially unpleasant behavior,
+take arguments off the stack. (To avoid potentially unpleasant behavior,
a @kbd{K} prefix before a keyboard macro will be ignored. A @kbd{K}
prefix called @emph{within} the keyboard macro will still take effect.)
As another example, @kbd{K a s} simplifies a formula, pushing the
simplified version of the formula onto the stack after the original
formula (rather than replacing the original formula). Note that you
could get the same effect by typing @kbd{@key{RET} a s}, copying the
-formula and then simplifying the copy. One difference is that for a very
+formula and then simplifying the copy. One difference is that for a very
large formula the time taken to format the intermediate copy in
@kbd{@key{RET} a s} could be noticeable; @kbd{K a s} would avoid this
extra work.
notation, although this is most useful with the binary, octal and
hexadecimal display modes. This option is selected by using the
@kbd{O} option prefix before setting the display radix, and a negative word
-size might be appropriate (@pxref{Binary Functions}). In two's
+size might be appropriate (@pxref{Binary Functions}). In two's
complement notation, the integers in the (nearly) symmetric interval
from
@texline @math{-2^{w-1}}
All three ISO 8601 representations arrange the numbers from most
significant to least significant; as well as being unambiguous
representations, they are easy to sort since chronological order in
-this formats corresponds to lexicographical order. The hyphens are
+this formats corresponds to lexicographical order. The hyphens are
sometimes omitted.
The ISO 8601 standard uses a 24 hour clock; a particular time is
determines the date. Otherwise, all words and numbers are isolated
from the string; other characters are ignored. All words must be
either month names or day-of-week names (the latter of which are
-ignored). Names can be written in full or as three-letter
+ignored). Names can be written in full or as three-letter
abbreviations.
Large numbers, or numbers with @samp{+} or @samp{-} signs,
@code{\choose} in @TeX{} mode (as in @code{@{a \choose b@}}) and
@code{\binom} in @LaTeX{} mode (as in @code{\binom@{a@}@{b@}}).
Interval forms are written with @code{\ldots}, and error forms are
-written with @code{\pm}. Absolute values are written as in
+written with @code{\pm}. Absolute values are written as in
@samp{|x + 1|}, and the floor and ceiling functions are written with
-@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and
+@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and
@code{\right} are ignored when reading formulas in @TeX{} and @LaTeX{}
modes. Both @code{inf} and @code{uinf} are written as @code{\infty};
when read, @code{\infty} always translates to @code{inf}.
@samp{(a/b)*c} or @samp{a/(b*c)}, as appropriate. Without the
parentheses, Calc will interpret @samp{a/b*c} as @samp{a/(b*c)}, since
in algebraic entry Calc gives division a lower precedence than
-multiplication. (This is not standard across all computer languages, and
+multiplication. (This is not standard across all computer languages, and
Calc may change the precedence depending on the language mode being used.
@xref{Language Modes}.) This default ordering can be changed by setting
the customizable variable @code{calc-multiplication-has-precedence} to
The Lisp function @code{math-prev-weekday-in-month} is useful for
daylight saving computations. This is an internal version of
the user-level @code{pwday} function described in the previous
-section. It takes four arguments: The floating-point date value,
+section. It takes four arguments: The floating-point date value,
the corresponding six-element date list, the day-of-month number,
and the weekday number (0--6).
input vector.)
If no prefix is given, then you will be prompted for a vector which
-will be used to determine the bins. (If a positive integer is given at
+will be used to determine the bins. (If a positive integer is given at
this prompt, it will be still treated as if it were given as a
prefix.) Each bin will consist of the interval of numbers closest to
the corresponding number of this new vector; if the vector
@noindent
Every character not part of the sub-formula @samp{b} has been changed
-to a dot. (If the customizable variable
+to a dot. (If the customizable variable
@code{calc-highlight-selections-with-faces} is non-@code{nil}, then the characters
not part of the sub-formula are de-emphasized by using a less
noticeable face instead of using dots. @pxref{Displaying Selections}.)
This section describes all simplifications that are performed by
the algebraic simplification mode, which is the default simplification
mode. If you have switched to a different simplification mode, you can
-switch back with the @kbd{m A} command. Even in other simplification
+switch back with the @kbd{m A} command. Even in other simplification
modes, the @kbd{a s} command will use these algebraic simplifications to
simplify the formula.
There is a variable, @code{AlgSimpRules}, in which you can put rewrites
-to be applied. Its use is analogous to @code{EvalRules},
+to be applied. Its use is analogous to @code{EvalRules},
but without the special restrictions. Basically, the simplifier does
@samp{@w{a r} AlgSimpRules} with an infinite repeat count on the whole
expression being simplified, then it traverses the expression applying
hyperbolic functions are also handled.
Trigonometric functions of their inverse functions are
-simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is
+simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is
simplified to @expr{x}, and similarly for @code{cos} and @code{tan}.
Trigonometric functions of inverses of different trigonometric
functions can also be simplified, as in @expr{@tfn{sin}(@tfn{arccos}(x))}
Most of the special limitations for @code{EvalRules} don't apply to
@code{AlgSimpRules}. Calc simply does an @kbd{a r AlgSimpRules}
command with an infinite repeat count as the first step of algebraic
-simplifications. It then applies its own built-in simplifications
+simplifications. It then applies its own built-in simplifications
throughout the formula, and then repeats these two steps (along with
applying the default simplifications) until no further changes are
possible.
If the units you request are inconsistent with the original units, the
number will be converted into your units times whatever ``remainder''
units are left over. For example, converting @samp{55 mph} into acres
-produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of
+produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of
``fundamental'' units like @samp{m} and @samp{s}, regardless of the
input units.
@infoline @math{10 log10(P1/P0) dB}.
@texline @math{10 \log_{10}(P_{1}/P_{0}) {\rm dB}}.
(The factor of 10 is because a decibel, as its name implies, is
-one-tenth of a bel. The bel, named after Alexander Graham Bell, was
+one-tenth of a bel. The bel, named after Alexander Graham Bell, was
considered to be too large of a unit and was effectively replaced by
the decibel.) If @math{F} is a field quantity with power
@math{P=k F^2}, then a reference quantity of
@tindex lufquant
The @kbd{l q} (@code{calc-lu-quant}) [@code{lupquant}]
command computes the power quantity corresponding to a given number of
-logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the
-reference level will be read from the top of the stack. (In an
+logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the
+reference level will be read from the top of the stack. (In an
algebraic formula, @code{lupquant} can be given an optional second
-argument which will be used for the reference level.) For example,
+argument which will be used for the reference level.) For example,
@code{20 dB @key{RET} l q} will return @code{100 mW};
@code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}.
The @kbd{H l q} [@code{lufquant}] command behaves like @kbd{l q} but
[@code{lufmul}] commands will ``multiply'' a logarithmic unit by a
number; the @kbd{l /} (@code{calc-lu-divide}) [@code{lupdiv}] and
@kbd{H l /} [@code{lufdiv}] commands will ``divide'' a logarithmic
-unit by a number. Note that the reference quantities don't play a role
+unit by a number. Note that the reference quantities don't play a role
in this arithmetic.
@node Musical Notes
@tindex midi
The @kbd{l m} (@code{calc-midi}) [@code{midi}] command converts either
a frequency or a note given in scientific pitch notation to the
-corresponding midi number. For example, @code{C_6} gets converted to 84
+corresponding midi number. For example, @code{C_6} gets converted to 84
and @code{440 Hz} to 69.
@kindex l f
@tindex freq
The @kbd{l f} (@code{calc-freq}) [@code{freq}] command converts either
either a midi number or a note given in scientific pitch notation to
-the corresponding frequency. For example, @code{Asharp_2 + 30 cents}
+the corresponding frequency. For example, @code{Asharp_2 + 30 cents}
gets converted to @code{118.578040134 Hz} and @code{55} to
@code{195.99771799 Hz}.
Data values in the graph of a function are normally computed to a
precision of five digits, regardless of the current precision at the
-time. This is usually more than adequate, but there are cases where
+time. This is usually more than adequate, but there are cases where
it will not be. For example, plotting @expr{1 + x} with @expr{x} in the
interval @samp{[0 ..@: 1e-6]} will round all the data points down
to 1.0! Putting the command @samp{set precision @var{n}} in the
It is possible to add additional stack entries to a register. The
command @kbd{M-x calc-append-to-register} will prompt for a register,
then add the stack entries in the region to the end of the register
-contents. The command @kbd{M-x calc-prepend-to-register} will
+contents. The command @kbd{M-x calc-prepend-to-register} will
similarly prompt for a register and add the stack entries in the
region to the beginning of the register contents. Both commands take
@kbd{C-u} arguments, which will cause the region to be deleted after being
are visiting your own files.
Calc will try to guess an appropriate language based on the major mode
-of the editing buffer. (@xref{Language Modes}.) If the current buffer is
+of the editing buffer. (@xref{Language Modes}.) If the current buffer is
in @code{latex-mode}, for example, Calc will set its language to @LaTeX{}.
Similarly, Calc will use @TeX{} language for @code{tex-mode},
@code{plain-tex-mode} and @code{context-mode}, C language for
If you give a positive or negative numeric prefix argument, Calc
instead uses the current point as one end of the formula, and includes
that many lines forward or backward (respectively, including the current
-line). Explicit delimiters are not necessary in this case.
+line). Explicit delimiters are not necessary in this case.
With a prefix argument of zero, Calc uses the current region (delimited
by point and mark) instead of formula delimiters. With a prefix
@noindent
The mode settings can be changed while Calc is in embedded mode, but
by default they will revert to their original values when embedded mode
-is ended. However, the modes saved when the mode-recording mode is
+is ended. However, the modes saved when the mode-recording mode is
@code{Save} (see below) and the modes in effect when the @kbd{m e}
(@code{calc-embedded-preserve-modes}) command is given
will be preserved when embedded mode is ended.
Two more mode-recording modes selectable by @kbd{m R} are available
which are also available outside of Embedded mode.
-(@pxref{General Mode Commands}.) They are @code{Save}, in which mode
+(@pxref{General Mode Commands}.) They are @code{Save}, in which mode
settings are recorded permanently in your Calc init file (the file given
by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el})
rather than by annotating the current document, and no-recording
@code{calc-multiplication-has-precedence} is non-@code{nil}, then
multiplication has precedence (and, for certain obscure reasons, is
right associative), and so for example @samp{a/b*c} will be interpreted
-as @samp{a/(b*c)}. If @code{calc-multiplication-has-precedence} is
+as @samp{a/(b*c)}. If @code{calc-multiplication-has-precedence} is
@code{nil}, then multiplication has the same precedence as division
(and, like division, is left associative), and so for example
@samp{a/b*c} will be interpreted as @samp{(a/b)*c}. The default value
@end quotation
@end copying
-@comment Info directory entry for use by install-info. The indentation
+@comment Info directory entry for use by install-info. The indentation
@comment here is by request from the FSF folks.
@dircategory Emacs editing modes
@direntry
@findex abbrev-mode
@cindex Abbrev mode
@ccmode{} uses Abbrev mode (@pxref{Abbrevs,,,@emacsman{}, @emacsmantitle{}})
-to accomplish this. It's therefore turned on by default in all language
+to accomplish this. It's therefore turned on by default in all language
modes except IDL mode, since CORBA IDL doesn't have any statements.
@end deffn
@item k&r
@cindex K&R style
-The classic Kernighan and Ritchie style for C code. If you're looking
+The classic Kernighan and Ritchie style for C code. If you're looking
for the style used in the 2nd edition of their book ``The C
Programming Language'', then check out the @code{stroustrup} style.
@kindex C-M-\
@emph{How do I reindent the whole file?}
-Visit the file and hit @kbd{C-x h} to mark the whole buffer. Then hit
+Visit the file and hit @kbd{C-x h} to mark the whole buffer. Then hit
@kbd{C-M-\}. @xref{Indentation Commands}.
@item
@item
The type symbol @code{atom} represents all objects that are not cons
-cells. Thus @code{(cl-typep @var{object} 'atom)} is equivalent to
+cells. Thus @code{(cl-typep @var{object} 'atom)} is equivalent to
@code{(atom @var{object})}.
@item
Properties,,,elisp}.
@item for @var{var} being the frames
-This clause iterates over all Emacs frames. The clause @code{screens} is
+This clause iterates over all Emacs frames. The clause @code{screens} is
a synonym for @code{frames}. The frames are visited in
@code{next-frame} order starting from @code{selected-frame}.
@end lisp
With the @code{dbus-introspect} function it is possible to explore the
-interfaces of @samp{org.freedesktop.Hal} service. It offers the
+interfaces of @samp{org.freedesktop.Hal} service. It offers the
interfaces @samp{org.freedesktop.Hal.Manager} for the object at the
path @samp{/org/freedesktop/Hal/Manager} as well as the interface
@samp{org.freedesktop.Hal.Device} for all objects prefixed with the
Input parameters of @code{dbus-call-method},
@code{dbus-call-method-asynchronously}, @code{dbus-send-signal},
@code{dbus-register-method}, @code{dbus-register-property} and
-@code{dbus-register-signal} are checked for correct D-Bus types. If
+@code{dbus-register-signal} are checked for correct D-Bus types. If
there is a type mismatch, the Lisp error @code{wrong-type-argument}
@code{D-Bus @var{arg}} is raised.
When Ediff starts up, it displays a small control window, which accepts the
Ediff commands, and two or three windows displaying the files to be compared
-or merged. The control window can be in its own small frame or it can be
-part of a bigger frame that displays other buffers. In any case, it is
+or merged. The control window can be in its own small frame or it can be
+part of a bigger frame that displays other buffers. In any case, it is
important that the control window be active (i.e., be the one receiving the
-keystrokes) when you use Ediff. You can switch to other Emacs buffers at
+keystrokes) when you use Ediff. You can switch to other Emacs buffers at
will and even edit the files currently being compared with Ediff and then
switch back to Ediff at any time by activating the appropriate Emacs windows.
@item ediff-backup
@findex ediff-backup
-Compare a file with its backup. If there are several numerical backups, use
-the latest. If the file is itself a backup, then compare it with its
+Compare a file with its backup. If there are several numerical backups, use
+the latest. If the file is itself a backup, then compare it with its
original.
@item ediff-current-file
@findex ediff-current-file
-Compare the buffer with its file on disk. This function can be used as a
+Compare the buffer with its file on disk. This function can be used as a
safe version of @code{revert-buffer}.
@item ediff-buffers
@findex ediff-regions-wordwise
Compare regions word-by-word. The regions can come from the same buffer
and they can even overlap. You will be asked to specify the buffers that
-contain the regions, which you want to compare. For each buffer, you will
-also be asked to mark the regions to be compared. Pay attention to the
+contain the regions, which you want to compare. For each buffer, you will
+also be asked to mark the regions to be compared. Pay attention to the
messages that appear in the minibuffer.
@item ediff-regions-linewise
@findex ediff-regions-linewise
Similar to @code{ediff-windows-linewise}, but compares the regions
-line-by-line. See @code{ediff-windows-linewise} for more details.
+line-by-line. See @code{ediff-windows-linewise} for more details.
@item ediff-revision
@findex ediff-revision
more details.
Since the patch might be in a buffer or a file, you will be asked which is
-the case. To avoid this extra prompt, you can invoke this command with a
+the case. To avoid this extra prompt, you can invoke this command with a
prefix argument. With an odd prefix argument, Ediff assumes the patch
is in a file; with an even argument, a buffer is assumed.
modified by the @code{patch} utility).
Since the patch might be in a buffer or a file, you will be asked which is
-the case. To avoid this extra prompt, you can invoke this command with a
+the case. To avoid this extra prompt, you can invoke this command with a
prefix argument. With an odd prefix argument, Ediff assumes the patch
is in a file; with an even argument, a buffer is assumed.
@vindex ediff-ignore-case-option
@vindex ediff-ignore-case-option3
@vindex ediff-ignore-case
-Toggle case sensitivity in the diff program. All diffs are recomputed.
+Toggle case sensitivity in the diff program. All diffs are recomputed.
Case sensitivity is controlled by the variables
@code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3},
and @code{ediff-ignore-case}, which are explained elsewhere.
@kindex $*
When merging files with large number of differences, it is sometimes
convenient to be able to skip the difference regions for which you already
-decided which variant is most appropriate. Typing @kbd{$*} will accomplish
+decided which variant is most appropriate. Typing @kbd{$*} will accomplish
precisely this.
To be more precise, this toggles the check for whether the current merge is
C as follows.
First, you will be asked whether you want to compare the fine differences
-between the currently highlighted buffers on a word-by-word basis. If you
+between the currently highlighted buffers on a word-by-word basis. If you
accept, a child Ediff session will start using the currently highlighted
-regions. Ediff will let you step over the differences word-wise.
+regions. Ediff will let you step over the differences word-wise.
If you reject the offer, you will be asked to select regions of your choice.
@cindex Directory difference buffer
Sometimes it is desirable to copy some files from one directory to another
-without exiting Ediff. The @emph{directory difference buffer}, which is
+without exiting Ediff. The @emph{directory difference buffer}, which is
displayed by typing @kbd{D} as discussed above, can be used for this
-purpose. If a file is, say, in Ediff's Directory A, but is missing in
+purpose. If a file is, say, in Ediff's Directory A, but is missing in
Ediff's Directory B (Ediff will refuse to override existing files), then
typing @kbd{C} or clicking mouse button 2 over that file (which must be
displayed in directory difference buffer) will copy that file from
The comparison operations @kbd{==}, @kbd{=h}, and @kbd{=m} can recurse into
subdirectories to see if they have identical contents (so the user will not
-need to descend into those subdirectories manually). These commands ask the
+need to descend into those subdirectories manually). These commands ask the
user whether or not to do a recursive descent.
@vindex ediff-after-setup-windows-hook
These two hooks are called before and after Ediff sets up its window
configuration. These hooks are run each time Ediff rearranges windows to
-its liking. This happens whenever it detects that the user changed the
+its liking. This happens whenever it detects that the user changed the
windows setup.
@item ediff-suspend-hook
@item ediff-before-session-group-setup-hook
@vindex ediff-before-session-group-setup-hook
Hooks run before setting up a control panel for a group of related Ediff
-sessions. Can be used, for example, to save window configuration to restore
+sessions. Can be used, for example, to save window configuration to restore
later.
@item ediff-after-session-group-setup-hook
@vindex ediff-after-session-group-setup-hook
@vindex ediff-ignore-case-option
@vindex ediff-ignore-case-option3
@vindex ediff-ignore-case
-Finally, Ediff can be told to ignore the case of the letters. This behavior
+Finally, Ediff can be told to ignore the case of the letters. This behavior
can be toggled with @kbd{#c} and it is controlled with three variables:
@code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3}, and
@code{ediff-ignore-case}.
The variable @code{ediff-ignore-case-option} specifies the option to pass
-to the diff program for comparing two files or buffers. For GNU
-@code{diff}, this option is @code{"-i"}. The variable
+to the diff program for comparing two files or buffers. For GNU
+@code{diff}, this option is @code{"-i"}. The variable
@code{ediff-ignore-case-option3} specifies the option to pass to the
-@code{diff3} program in order to make it case-insensitive. GNU @code{diff3}
+@code{diff3} program in order to make it case-insensitive. GNU @code{diff3}
does not have such an option, so when merging or comparing three files with
this program, ignoring the letter case is not supported.
The variable @code{ediff-ignore-case} controls whether Ediff starts out by
-ignoring letter case or not. It can be set in @file{.emacs} using
+ignoring letter case or not. It can be set in @file{.emacs} using
@code{setq-default}.
When case sensitivity is toggled, all difference
@item ediff-coding-system-for-read
@vindex ediff-coding-system-for-read
This variable specifies the coding system to use when reading the output
-that the programs @code{diff3} and @code{diff} send to Emacs. The default
+that the programs @code{diff3} and @code{diff} send to Emacs. The default
is @code{raw-text}, and this should work fine in Unix and in most
-cases under Windows NT/98/2000. There are @code{diff} programs
-for which the default option doesn't work under Windows. In such cases,
-@code{raw-text-dos} might work. If not, you will have to experiment with
+cases under Windows NT/98/2000. There are @code{diff} programs
+for which the default option doesn't work under Windows. In such cases,
+@code{raw-text-dos} might work. If not, you will have to experiment with
other coding systems or use GNU diff.
@item ediff-patch-program
======= end
@end example
-The above is the default template for the combined region. The user can
+The above is the default template for the combined region. The user can
customize this template using the variable
@code{ediff-combination-pattern}.
The variable @code{ediff-combination-pattern} specifies the template that
determines how the combined merged region looks like. The template is
represented as a list of the form @code{(STRING1 Symbol1 STRING2 Symbol2
-STRING3 Symbol3 STRING4)}. The symbols here must be atoms of the form
-@code{A}, @code{B}, or @code{Ancestor}. They determine the order in which
+STRING3 Symbol3 STRING4)}. The symbols here must be atoms of the form
+@code{A}, @code{B}, or @code{Ancestor}. They determine the order in which
the corresponding difference regions (from buffers A, B, and the ancestor
buffer) are displayed in the merged region of buffer C@. The strings in the
-template determine the text that separates the aforesaid regions. The
+template determine the text that separates the aforesaid regions. The
default template is
@smallexample
@noindent
(this is one long line) and the corresponding combined region is shown
-above. The order in which the regions are shown (and the separator
-strings) can be changed by changing the above template. It is even
+above. The order in which the regions are shown (and the separator
+strings) can be changed by changing the above template. It is even
possible to add or delete region specifiers in this template (although
the only possibly useful such modification seems to be the deletion of
the ancestor).
@vindex ediff-merge-filename-prefix
When merge buffers are saved automatically as directed by
@code{ediff-autostore-merges}, Ediff attaches a prefix to each file, as
-specified by the variable @code{ediff-merge-filename-prefix}. The default
+specified by the variable @code{ediff-merge-filename-prefix}. The default
is @code{merge_}, but this can be changed by the user.
@node Support for Version Control
@item ediff-keep-tmp-versions
@vindex ediff-keep-tmp-versions
-Default is @code{nil}. If @code{t}, the versions of the files being
+Default is @code{nil}. If @code{t}, the versions of the files being
compared or merged using operations such as @code{ediff-revision} or
-@code{ediff-merge-revisions} are not deleted on exit. The normal action is
+@code{ediff-merge-revisions} are not deleted on exit. The normal action is
to clean up and delete these version files.
@item ediff-grab-mouse
If it is still not working, send mail to the
@email{help-gnu-emacs@@gnu.org} mailing list, describing what you've
-done, and what you are seeing. (The more information you send the more
+done, and what you are seeing. (The more information you send the more
likely it is that you'll receive a helpful response.)
@node Virus
@code{smtpmail-smtp-server}.
If you are experiencing problems with sending large messages, check
-the value of the variable @code{smtpmail-debug-info}. If it is
+the value of the variable @code{smtpmail-debug-info}. If it is
non-@code{nil}, you should set it to @code{nil}:
@node Incoming mail with Rmail
@cindex MSVC++, compiling within Emacs
@findex compile
-This is an app note on how to use Microsoft Visual C++ with Emacs. The
+This is an app note on how to use Microsoft Visual C++ with Emacs. The
experiments done below were done with Emacs 19.34.1 on Windows 95,
-using Visual C++ 4.0 Standard Edition. Your mileage may vary.
+using Visual C++ 4.0 Standard Edition. Your mileage may vary.
This writeup assumes minimal knowledge of Emacs hacking on the part of
the reader.
just inside Emacs by using @code{setenv} calls in your init file.
@xref{Installing Emacs,,Where do I put my init file?}.
-You should now be able to compile from Emacs. Load a source file from
-a VC++ project. Type @kbd{M-x compile}. Replace the proposed command line
+You should now be able to compile from Emacs. Load a source file from
+a VC++ project. Type @kbd{M-x compile}. Replace the proposed command line
with:
@example
nmake -f @var{ProjectName}.mak
@end example
-You will find that this defaults to a debug build. You can change it
+You will find that this defaults to a debug build. You can change it
to a release build with:
@example
nmake -f @var{ProjectName}.mak CFG="@var{ProjectName} - Win32 Release"
@file{emacsclientw.exe} file in your Emacs bin directory, and
select it. For arguments, use @option{+$(CurLine)}
@option{"$(FilePath)"} and for the directory use the @code{$(WkspDir)}
-(the quotes around FilePath handle paths with spaces in them). Set the
-Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in
-Emacs to the same line as the cursor position in VC++. The ampersand
+(the quotes around FilePath handle paths with spaces in them). Set the
+Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in
+Emacs to the same line as the cursor position in VC++. The ampersand
in the word @code{Em&acs} allows you to select emacs from the keyboard.
(E is already used for the OLE control test container.)
-You should now be able to go to any source file in your project. Then,
-use the pull-down menu @code{Tools->Emacs}. The active file in your
+You should now be able to go to any source file in your project. Then,
+use the pull-down menu @code{Tools->Emacs}. The active file in your
VC++ IDE should now be front and center in Emacs, all ready to edit as
-you wish. If you use keystrokes to work the menus, try @kbd{Alt-T A} to
-move the file into Emacs. Binding this tool to a keystroke will be
+you wish. If you use keystrokes to work the menus, try @kbd{Alt-T A} to
+move the file into Emacs. Binding this tool to a keystroke will be
left as an exercise for the student.
If you have the option of saving files before running tools, make sure
-this option is set. (I don't see it on VC++ 4.0.)
+this option is set. (I don't see it on VC++ 4.0.)
@node Borland C++ Builder
@section Emacs and Borland C++ Builder
From Jay Rogers:
Some versions of the perl debugger itself need to be patched to work
-with emacs. They are perl versions 5.001 and less, and version
-5.004_01. To fix, locate and change the code similar to the following
+with emacs. They are perl versions 5.001 and less, and version
+5.004_01. To fix, locate and change the code similar to the following
code in lib/perl5db.pl
@example
if (-e "/dev/tty") @{
looking are @ref{Top,,, emacs, The GNU Emacs Manual}, and
@ref{Top,,, efaq, the standard Emacs FAQ}.
In Emacs, you can browse the manual using Info by typing @kbd{C-h r},
-and you can view the FAQ by typing @kbd{C-h C-f}. Other resources include:
+and you can view the FAQ by typing @kbd{C-h C-f}. Other resources include:
@itemize
@item @uref{https://www.gnu.org/software/emacs/, The Emacs website}
Emacs has a list of local variables that are known to be safe to set.
If a file tries to set any variable outside this list, it asks the
-user to confirm whether the variables should be set. You can also tell
+user to confirm whether the variables should be set. You can also tell
Emacs whether to allow the evaluation of Emacs Lisp code found at the
bottom of files by setting the variable @code{enable-local-eval}.
To build Emacs from source for MS-DOS, see the instructions in the file
@file{msdos/INSTALL} in the distribution. The DOS port builds and runs
on plain DOS, and also on all versions of MS-Windows from version 3.X
-onwards, including Windows XP and Vista. Pre-built binaries may be
+onwards, including Windows XP and Vista. Pre-built binaries may be
available at
@uref{https://www.delorie.com/pub/djgpp/current/v2gnu/emacs.README}
Ron Isaacson says: When you hit
@kbd{r} to reply in Rmail, by default it Ccs all of the original
recipients (everyone on the original @samp{To} and @samp{CC}
-lists). With a prefix argument (i.e., typing @kbd{C-u} before @kbd{r}),
+lists). With a prefix argument (i.e., typing @kbd{C-u} before @kbd{r}),
it replies only to the sender. However, going through the whole
@kbd{C-u} business every time you want to reply is a pain. This is the
best fix I've been able to come up with:
@lisp
(defun rmail-reply-t ()
- "Reply only to the sender of the current message. (See rmail-reply.)"
+ "Reply only to the sender of the current message. (See rmail-reply.)"
(interactive)
(rmail-reply t))
The language server reports the regions by periodically sending a
@code{textDocument/inactiveRegions} notification for each managed
-buffer (@pxref{Eglot and Buffers}). Normally, unknown server
+buffer (@pxref{Eglot and Buffers}). Normally, unknown server
notifications are ignored by Eglot, but we're going change that.
Both the announcement of the client capability and the handling of the
However, this would require that users tweak
@code{eglot-server-program} to tell Eglot instantiate such sub-classes
instead of the generic @code{eglot-lsp-server} (@pxref{Setting Up LSP
-Servers}). For the purposes of this particular demonstration, we're
+Servers}). For the purposes of this particular demonstration, we're
going to use the more hacky regexp route which doesn't require that.
Note, however, that detecting server versions before announcing new
that are bigger than the Emacs window are resized so that they fit.
If you set this to @code{nil}, large images are not displayed in
Emacs, but can instead be displayed externally (e.g., with
-@samp{ImageMagick} or @samp{xv}). Setting this variable to @code{t}
+@samp{ImageMagick} or @samp{xv}). Setting this variable to @code{t}
disables this check and makes the library display all inline images as
inline, regardless of their size.
@cindex interactive testing
@findex ert
-You can run the tests that are currently defined in your Emacs with
-the command @kbd{M-x ert @key{RET} t @key{RET}}. (For an
-explanation of the @code{t} argument, @pxref{Test Selectors}.) ERT will pop
-up a new buffer, the ERT results buffer, showing the results of the
-tests run. It looks like this:
+You can run the tests that are currently defined in your Emacs with the
+command @kbd{M-x ert @key{RET} t @key{RET}}. (For an explanation of the
+@code{t} argument, @pxref{Test Selectors}.) ERT will pop up a new
+buffer, the ERT results buffer, showing the results of the tests run.
+It looks like this:
@example
Selector: t
You can use the semicolon (@code{;}) to separate multiple command
invocations on a single line, executing each in turn. You can also
-separate commands with @code{&&} or @code{||}. When using @code{&&},
+separate commands with @code{&&} or @code{||}. When using @code{&&},
Eshell will execute the second command only if the first succeeds
(i.e.@: has an exit status of 0); with @code{||}, Eshell will execute
the second command only if the first fails.
etc.
@item @var{x}~@var{y}
-Matches anything that matches the pattern @var{x} but not @var{y}. For
+Matches anything that matches the pattern @var{x} but not @var{y}. For
example, @samp{[[:digit:]]#~4?} matches @file{1} and @file{12}, but
not @file{42}. Note that unlike in Zsh, only a single @samp{~}
operator can be used in a pattern, and it cannot be inside of a group
@findex eshell-close-target
You can, of course, define your own virtual targets. These are entries
in @code{eshell-virtual-targets} with the form @samp{(@var{filename}
-@var{output-function} @var{pass-mode})}. The first element,
+@var{output-function} @var{pass-mode})}. The first element,
@var{filename}, is the device name, usually of the form
-@samp{"/dev/@var{name}"}. The second, @var{output-function}, should be a
+@samp{"/dev/@var{name}"}. The second, @var{output-function}, should be a
function: Eshell will repeatedly call it with the redirected output.
This argument can also be an @code{eshell-generic-target} instance. In
this case, Eshell will repeatedly call the generic function
can define your own for any command.
@kindex TAB
-Eshell completion also works for Lisp forms and glob patterns. If the
+Eshell completion also works for Lisp forms and glob patterns. If the
point is on a Lisp form, then @key{TAB} will behave similarly to
completion in @code{elisp-mode} and @code{lisp-interaction-mode}. For
glob patterns, the pattern will be removed from the input line, and
If @command{less.exe} is invoked from the Eshell command line, the
expected output is written to the buffer.
-Note that this happens on NT-Emacs 20.6.1 on Windows 2000. The term.el
+Note that this happens on NT-Emacs 20.6.1 on Windows 2000. The term.el
package and the supplied shell both use the @command{cmdproxy} program
for running shells.
@quotation
[LDAP] is designed to provide access to the X.500 Directory while not
incurring the resource requirements of the Directory Access Protocol
-(DAP). This protocol is specifically targeted at simple management
+(DAP). This protocol is specifically targeted at simple management
applications and browser applications that provide simple read/write
interactive access to the X.500 Directory, and is intended to be a
complement to the DAP itself.
Before doing any query you will need to set the directory server. You
need to specify the name of the host machine running the server software
-and the protocol to use. If you do not set the server in any fashion,
+and the protocol to use. If you do not set the server in any fashion,
EUDC will ask you for one when you make your first query.
You can set the server by selecting one from your hotlist of servers
parameters for the server.
@defvar eudc-server
-The name or IP address of the remote directory server. A TCP port number
+The name or IP address of the remote directory server. A TCP port number
may be specified by appending a colon and a number to the name of the
-server. You will not need this unless your server runs on a port other
+server. You will not need this unless your server runs on a port other
than the default (which depends on the protocol).
If the directory server resides on your own computer (which is the case
if you use the BBDB back end) then @samp{localhost} is a reasonable value but
@defvar eudc-default-return-attributes
A list of the default attributes to extract from directory entries. If
set to the symbol @code{all} then all available attributes are
-returned. A value of @code{nil}, the default, means to return the
+returned. A value of @code{nil}, the default, means to return the
default attributes as configured in the server.
@end defvar
-The server may return several matching records to a query. Some of the
-records may however not contain all the attributes you requested. You can
+The server may return several matching records to a query. Some of the
+records may however not contain all the attributes you requested. You can
discard those records.
@defopt eudc-strict-return-matches
@subsection Duplicate Attributes
Directory standards may authorize different instances of the same
-attribute in a record. For instance the record of a person may contain
+attribute in a record. For instance the record of a person may contain
several email fields containing different email addresses, in which
case EUDC will consider the attribute duplicated.
-EUDC has several methods to deal with duplicated attributes. The
+EUDC has several methods to deal with duplicated attributes. The
available methods are:
@table @code
@item list
-Makes a list with the different values of the duplicate attribute. The
+Makes a list with the different values of the duplicate attribute. The
record is returned with only one instance of the attribute with a list
-of all the different values as a value. This is the default method that
+of all the different values as a value. This is the default method that
is used to handle duplicate fields for which no other method has been
specified.
@item first
Discards all the duplicate values of the field keeping only the first
one.
@item concat
-Concatenates the different values using a newline as a separator. The
+Concatenates the different values using a newline as a separator. The
record keeps only one instance of the field the value of which is a
single multi-line string.
@item duplicate
Duplicates the whole record into as many instances as there are different
-values for the field. This is the default for the email field. Thus a
+values for the field. This is the default for the email field. Thus a
record containing 3 different email addresses is duplicated into three
-different records each having a single email address. This is
+different records each having a single email address. This is
particularly useful in combination with @code{select} as the method to
handle multiple matches in inline expansion queries (@pxref{Inline Query
Expansion}) because you are presented with the 3 addresses in a
either an alist of elements @code{(@var{attr} . @var{method})}, or a symbol
@var{method}. The alist form of the variable associates a method to an
individual attribute name; the second form specifies a method applicable
-to all attribute names. Available methods are: @code{list},
+to all attribute names. Available methods are: @code{list},
@code{first}, @code{concat}, and @code{duplicate} (see above). The default is
@code{list}.
@end defvar
@section Query Form
The simplest way to query your directory server is to use the query
-form. You display the query form with the @samp{Query with Form} menu
-item or by invoking the command @kbd{M-x eudc-query-form}. The attribute
+form. You display the query form with the @samp{Query with Form} menu
+item or by invoking the command @kbd{M-x eudc-query-form}. The attribute
names presented in this form are defined by the
@code{eudc-query-form-attributes} variable (unless a non-@code{nil}
argument is supplied to @code{eudc-query-form}).
@defvar eudc-user-attribute-names-alist
This is an alist of user-defined names for the directory attributes used in
-query/response forms. Prompt strings for attributes that are not in this
+query/response forms. Prompt strings for attributes that are not in this
alist are derived by splitting the attribute name at underscores and
capitalizing the individual words.
@end defvar
@defvar eudc-inline-expansion-format
This variable lets you control exactly what is inserted into the
-buffer upon an inline expansion request. It can be set to @code{nil},
+buffer upon an inline expansion request. It can be set to @code{nil},
to a function, or to a list. Default is @code{nil}.
When the value is a list, the first element is a string passed to
Email address specifications, as are generated by inline expansion,
need to comply with RFC 5322 in order to be useful in email
-messages. When an invalid address specification is present in an email
+messages. When an invalid address specification is present in an email
message header, the message is likely to be rejected by a receiving
MTA. It is hence recommended to switch old configurations, which use
a list value, to the new @code{nil}, or function value type since it
@item [@var{nerrors} @var{nwarnings} ...]
@tab Normal operation. @var{nerrors} and @var{nwarnings} are, respectively,
the total number of errors and warnings found during the last buffer
-check, for all backends. They may be followed by other totals for
+check, for all backends. They may be followed by other totals for
other types of diagnostics (@pxref{Flymake error types}).
@item @code{Wait}
@item M-x forms-save-buffer
@kindex C-x C-s
@itemx C-x C-s
-Forms mode replacement for @code{save-buffer}. When executed in the
+Forms mode replacement for @code{save-buffer}. When executed in the
forms buffer it will save the contents of the (modified) data buffer
-instead. In Forms mode this function will be bound to @kbd{C-x C-s}.
+instead. In Forms mode this function will be bound to @kbd{C-x C-s}.
@findex forms-print
@item M-x forms-print
If the format of the data file is not suitable enough you can define the
filter functions @code{forms-read-file-filter} and
@code{forms-write-file-filter}. @code{forms-read-file-filter} is called
-when the data file is read from disk into the data buffer. It operates
-on the data buffer, ignoring read-only protections. When the data file
+when the data file is read from disk into the data buffer. It operates
+on the data buffer, ignoring read-only protections. When the data file
is saved to disk @code{forms-write-file-filter} is called to cancel the
-effects of @code{forms-read-file-filter}. After being saved,
+effects of @code{forms-read-file-filter}. After being saved,
@code{forms-read-file-filter} is called again to prepare the data buffer
for further processing.
@findex forms-read-file-filter
@item forms-read-file-filter
This variable holds the name of a function to be called after the data
-file has been read in. This can be used to transform the contents of the
+file has been read in. This can be used to transform the contents of the
data file into a format more suitable for forms processing.
If it is @code{nil}, no function is called. For example, to maintain a
gzipped database:
@findex forms-insert-after
@item forms-insert-after
If this variable is not @code{nil}, new records are created @emph{after} the
-current record. Also, upon visiting a file, the initial position will be
+current record. Also, upon visiting a file, the initial position will be
at the last record instead of the first one.
@findex forms-check-number-of-fields
@item Field separator occurs in record - update refused!
The current record contains the field separator string inside one of the
-fields. It can not be written back to the data file, for it would
-corrupt it. Probably you inserted the field separator string in a field.
+fields. It can not be written back to the data file, for it would
+corrupt it. Probably you inserted the field separator string in a field.
@item Record number @var{xx} out of range 1..@var{yy}
A jump was made to non-existing record @var{xx}. @var{yy} denotes the
protected.
@item Search failed: @var{regexp}
-The @var{regexp} could not be found in the data file. Forward searching
+The @var{regexp} could not be found in the data file. Forward searching
is done from the current location until the end of the file, then
retrying from the beginning of the file until the current location.
Backward searching is done from the current location until the beginning
number of records actually present in the data file.
@item Problem saving buffers?
-An error occurred while saving the data file buffer. Most likely, Emacs
+An error occurred while saving the data file buffer. Most likely, Emacs
did ask to confirm deleting the buffer because it had been modified, and
you said ``no''.
@end table
* FAQ 2-4:: My group buffer becomes a bit crowded, is there a way to
sort my groups into categories so I can easier browse through
them?
-* FAQ 2-5:: How to manually sort the groups in Group buffer? How to
+* FAQ 2-5:: How to manually sort the groups in Group buffer? How to
sort the groups in a topic?
@end menu
@subsubheading Answer
You get the message described in the q/a pair above while
-starting Gnus, right? It's another symptom for the same
+starting Gnus, right? It's another symptom for the same
problem, so read the answer above.
@node FAQ 2-3
@node FAQ 2-5
@subsubheading Question 2.5
-How to manually sort the groups in Group buffer? How to
+How to manually sort the groups in Group buffer? How to
sort the groups in a topic?
@subsubheading Answer
* FAQ 4-8:: Is there anything I can do to make poorly formatted
mails more readable?
* FAQ 4-9:: Is there a way to automatically ignore posts by specific
- authors or with specific words in the subject? And can I
+ authors or with specific words in the subject? And can I
highlight more interesting ones in some way?
* FAQ 4-10:: How can I disable threading in some (e.g., mail-) groups,
or set other variables specific for some groups?
displays in group buffer is by far to high, especially in mail
groups. Is this a bug?
* FAQ 4-13:: I don't like the layout of summary and article buffer,
- how to change it? Perhaps even a three pane display?
+ how to change it? Perhaps even a three pane display?
* FAQ 4-14:: I don't like the way the Summary buffer looks, how to
tweak it?
* FAQ 4-15:: How to split incoming mails in several groups?
@subsubheading Question 4.9
Is there a way to automatically ignore posts by specific
-authors or with specific words in the subject? And can I
+authors or with specific words in the subject? And can I
highlight more interesting ones in some way?
@subsubheading Answer
@subsubheading Question 4.13
I don't like the layout of summary and article buffer, how
-to change it? Perhaps even a three pane display?
+to change it? Perhaps even a three pane display?
@subsubheading Answer
signature...?
* FAQ 5-4:: Can I set things like From, Signature etc. group based on
the group I post too?
-* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly
+* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly
spell-checking?
* FAQ 5-6:: Can I set the dictionary based on the group I'm posting
to?
@node FAQ 5-5
@subsubheading Question 5.5
-Is there a spell-checker? Perhaps even on-the-fly spell-checking?
+Is there a spell-checker? Perhaps even on-the-fly spell-checking?
@subsubheading Answer
solutions. The first and easiest is to save it to a file
by saying @kbd{O f}. However, wouldn't
it be much more convenient to have more direct access to
-the archived message from Gnus? If you say yes, put this
+the archived message from Gnus? If you say yes, put this
snippet by Frank Haun <pille3003@@fhaun.de> in
@file{~/.gnus.el}:
@noindent
You can now say @kbd{M-x my-archive-article} in summary buffer to
-archive the article under the cursor in a nnml group. (Change nnml to
+archive the article under the cursor in a nnml group. (Change nnml to
your preferred back end.)
Of course you can also make sure the cache is enabled by saying
where the read mark is set are expirable.
To activate auto-expire, include auto-expire in the
-Group parameters for the group. (Hit @kbd{G
+Group parameters for the group. (Hit @kbd{G
c} in summary buffer with point over the
group to change group parameters). For total-expire add
total-expire to the group-parameters.
buffer, downloadable (%) marks for the articles you
want by typing @kbd{@@} with point over
the article and then typing @kbd{J u}.
-What's the difference? Well, process marks are erased as
+What's the difference? Well, process marks are erased as
soon as you exit the summary buffer while downloadable
marks are permanent. You can actually set downloadable
marks in several groups then use fetch session ('J s' in
(@code{gnus-summary-very-wide-reply}). A @dfn{very wide reply} is a
reply that goes out to all people listed in the @code{To}, @code{From}
(or @code{Reply-To}) and @code{Cc} headers in all the process/prefixed
-articles. This command uses the process/prefix convention. If given a
+articles. This command uses the process/prefix convention. If given a
prefix argument, the body of the current article will also be yanked.
@item S V
@end lisp
And another example: the protonmail bridge adds fake message-ids to
-@code{References} in message headers, which can confuse threading. To
+@code{References} in message headers, which can confuse threading. To
remove these spurious ids
@lisp
@vindex gnus-refer-thread-use-search
If @code{gnus-refer-thread-use-search} is @code{nil} (the default)
-then thread-referral only looks for articles in the current group. If
+then thread-referral only looks for articles in the current group. If
this variable is @code{t} the server to which the current group
belongs is searched (provided that searching is available for the
server's backend). If this variable is a list of servers, each server
If you're using Google's Gmail, you may want to see your Gmail labels
when reading your mail. Gnus can give you this information if you ask
-for @samp{X-GM-LABELS} in the variable @code{gnus-extra-headers}. For
+for @samp{X-GM-LABELS} in the variable @code{gnus-extra-headers}. For
example:
@example
@item :mailbox
The name of the mailbox to get mail from. The default is @samp{INBOX}
-which normally is the mailbox which receives incoming mail. Instead of
+which normally is the mailbox which receives incoming mail. Instead of
a single mailbox, this can be a list of mailboxes to fetch mail from.
@item :predicate
@cindex score file atoms
@item score-fn
The value of this entry should be one or more user-defined function
-names in parentheses. Each function will be called in order and the
+names in parentheses. Each function will be called in order and the
returned value is required to be an integer.
@example
@item G G o
@kindex G G o @r{(Summary)}
@findex nnmairix-goto-original-article
-(Only in @code{nnmairix} groups!) Tries determine the group this article
+(Only in @code{nnmairix} groups!) Tries determine the group this article
originally came from and displays the article in this group, so that,
e.g., replying to this article the correct posting styles/group
parameters are applied (@code{nnmairix-goto-original-article}). This
Very often, you want all your marks (what articles you've read, which
ones were important, and so on) to be synchronized between several
-machines. With IMAP, that's built into the protocol, so you can read
+machines. With IMAP, that's built into the protocol, so you can read
nnimap groups from many machines and they are automatically
-synchronized. But NNTP, nnrss, and many other backends do not store
+synchronized. But NNTP, nnrss, and many other backends do not store
marks, so you have to do it locally.
The Gnus Cloud package stores the marks, plus any files you choose, on
-an IMAP server in a special folder. It's like a
+an IMAP server in a special folder. It's like a
DropTorrentSyncBoxOakTree(TM).@footnote{The name ``Gnus Cloud''
parodizes but otherwise has little to do with ``cloud computing'', a
@url{https://www.gnu.org/philosophy/words-to-avoid.html#CloudComputing,
@node Gnus Cloud Setup
@subsection Gnus Cloud Setup
-Setting up the Gnus Cloud takes less than a minute. From the Group
+Setting up the Gnus Cloud takes less than a minute. From the Group
buffer:
-Press @kbd{^} to go to the Server buffer. Here you'll see all the
+Press @kbd{^} to go to the Server buffer. Here you'll see all the
servers that Gnus knows. @xref{Server Buffer}.
Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized).
Then press @kbd{I} to mark a single server as the cloud host (it must
be an IMAP server, and will host a special IMAP folder with all the
-synchronization data). This will set the variable
+synchronization data). This will set the variable
@code{gnus-cloud-method} (using the Customize facilities), then ask
you to optionally upload your first CloudSynchronizationDataPack(TM).
@item ~ ~
@findex gnus-cloud-upload-all-data
@cindex cloud, download
-Upload the local Gnus Cloud data. Creates a new
+Upload the local Gnus Cloud data. Creates a new
CloudSynchronizationDataPack(TM).
@end table
-But wait, there's more. Of course there's more. So much more. You can
+But wait, there's more. Of course there's more. So much more. You can
customize all of the following.
@defvar gnus-cloud-synced-files
These are the files that will be part of every
-CloudSynchronizationDataPack(TM). They are included in every upload,
-so don't synchronize a lot of large files. Files under 100Kb are best.
+CloudSynchronizationDataPack(TM). They are included in every upload,
+so don't synchronize a lot of large files. Files under 100Kb are best.
@end defvar
@defvar gnus-cloud-storage-method
-This is a choice from several storage methods. It's highly recommended
-to use the EPG facilities. It will be automatic if have GnuPG
-installed and EPG loaded. Otherwise, you could use Base64+gzip,
+This is a choice from several storage methods. It's highly recommended
+to use the EPG facilities. It will be automatic if have GnuPG
+installed and EPG loaded. Otherwise, you could use Base64+gzip,
Base64, or no encoding.
@end defvar
@defvar gnus-cloud-interactive
When this is set, and by default it is, the Gnus Cloud package will
-ask you for confirmation here and there. Leave it on until you're
+ask you for confirmation here and there. Leave it on until you're
comfortable with the package.
@end defvar
@defvar gnus-cloud-method
The name of the IMAP server to store the
-CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
+CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
Server buffer (@pxref{Gnus Cloud Setup}).
@end defvar
. end)} elements, in descending order of point value (i.e., from the
file's end to its beginning). The map is in reverse order because
inserting a @samp{<style>} tag (or any other string) at @var{point}
-invalidates the map for all entries with a greater value of point. By
+invalidates the map for all entries with a greater value of point. By
traversing the map from greatest to least @var{point}, we still
invalidate the map as we go, but only those points we have already
dealt with (and therefore no longer care about) will be invalid at any
source files (@code{idlwave-mode}) and a mode for running the IDL
program as an inferior shell (@code{idlwave-shell-mode}). Although
one mode can be used without the other, both work together closely to
-form a complete development environment. Here is a brief summary of
+form a complete development environment. Here is a brief summary of
what IDLWAVE does:
@itemize @bullet
the ``plot'' line and press @kbd{C-c ?}. This shows the routine info
window for the plot routine, which contains a list of keywords, along
with the argument list. Oh, we wanted @code{YTITLE}. Fix that up.
-Recompile with @kbd{C-c C-d C-c}. Jump back into the shell with
+Recompile with @kbd{C-c C-d C-c}. Jump back into the shell with
@kbd{C-c C-s}, press the @key{UP} arrow to recall the previous command
and execute again.
copy and work from the examples given here.
Let's first use a boolean variable. These are variables which you turn
-on or off, much like a checkbox. A value of @samp{t} means on, a value
+on or off, much like a checkbox. A value of @samp{t} means on, a value
of @samp{nil} means off. Copy the following line into your
@file{.emacs} file, exit and restart Emacs.
there is another, more user-friendly way to customize all the IDLWAVE
variables. You can access it through the IDLWAVE menu in one of the
@file{.pro} buffers, menu item @code{Customize->Browse IDLWAVE
-Group}. Here you'll be presented with all the various variables grouped
+Group}. Here you'll be presented with all the various variables grouped
into categories. You can navigate the hierarchy (e.g., @samp{IDLWAVE
Code Formatting->Idlwave Abbrev And Indent Action->Idlwave Expand
Generic End} to turn on @code{END} expansion), read about the variables,
buffer and pressing @key{SPC} or @key{RET}. The special abbreviations
used to insert code templates all start with a @samp{\} (the backslash),
or, optionally, any other character set in
-@code{idlwave-abbrev-start-char}. IDLWAVE ensures that abbreviations are
+@code{idlwave-abbrev-start-char}. IDLWAVE ensures that abbreviations are
only expanded where they should be (i.e., not in a string or comment),
and permits the point to be moved after an abbreviation expansion:
very useful for positioning the mark inside of parentheses, etc.
stepping, and continue commands. In addition, if the variable is set to
the single symbol @code{'everything}, all the copious shell input is
displayed (which is probably only useful for debugging purposes).
-N.B. For hidden commands which produce output by side-effect, that
+N.B. For hidden commands which produce output by side-effect, that
output remains hidden (e.g., stepping through a @code{print} command).
As a special case, any error message in the output will be displayed
(e.g., stepping to an error).
IDLWAVE @emph{scans} all its @emph{buffers} in the current Emacs session
for routine definitions. This is done automatically when routine
information or completion is first requested by the user. Each new
-buffer and each buffer saved after making changes is also scanned. The
+buffer and each buffer saved after making changes is also scanned. The
command @kbd{C-c C-i} (@code{idlwave-update-routine-info}) can be used
at any time to rescan all buffers.
There are a wide variety of possible browsers to use for displaying
the online HTML help available with IDLWAVE (starting with version
-5.0). Since IDL v6.2, a single cross-platform HTML help browser, the
+5.0). Since IDL v6.2, a single cross-platform HTML help browser, the
@emph{IDL Assistant} is distributed with IDL@. If this help browser is
available, it is the preferred choice, and the default. The variable
@code{idlwave-help-use-assistant}, enabled by default, controls
level}. The present node is contained in a menu (see next) of the
node you came from, and hence is considered to be at a lower level.
It is the only node in the previous node's menu (even though it was
-listed three times). Hence it has no next or previous node that
+listed three times). Hence it has no next or previous node that
@kbd{n} or @kbd{p} could move to.
If you systematically move through a manual by typing @kbd{n}, you run
If you have imported your old PGP 2.x key into GnuPG, and want to send
signed and encrypted messages to your fellow PGP 2.x users, you'll
-discover that the receiver cannot understand what you send. One
-solution is to use PGP 2.x instead. You could also convince your
+discover that the receiver cannot understand what you send. One
+solution is to use PGP 2.x instead. You could also convince your
fellow PGP 2.x users to convert to GnuPG@.
@vindex mml-signencrypt-style-alist
As a final workaround, you can make the sign and encryption work in
@item message-default-headers
@vindex message-default-headers
Header lines to be inserted in outgoing messages before you edit the
-message, so you can edit or delete their lines. If set to a string, it
-is directly inserted. If set to a function, it is called and its
+message, so you can edit or delete their lines. If set to a string, it
+is directly inserted. If set to a function, it is called and its
result is inserted.
@item message-subject-re-regexp
@table @code
@item message-cite-style
@vindex message-cite-style
-The overall style to be used when replying to messages. This controls
+The overall style to be used when replying to messages. This controls
things like where the reply should be put relative to the original,
how the citation is formatted, where the signature goes, etc.
of pairs @code{(VARIABLE VALUE)} to override default values.
See @code{gnus-posting-styles} to set this variable for specific
-groups. Presets to impersonate popular mail agents are available in the
+groups. Presets to impersonate popular mail agents are available in the
@code{message-cite-style-*} variables.
@item message-cite-reply-position
@vindex message-cite-reply-position
-Where the reply should be positioned. Available styles are
+Where the reply should be positioned. Available styles are
@code{traditional} to reply inline, @code{above} for top-posting, and
@code{below} for bottom-posting
:END:
The Modus themes provide the means to access the palette of (i) the
-active theme or (ii) any theme in the Modus collection. These are
+active theme or (ii) any theme in the Modus collection. These are
useful for Do-It-Yourself customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]),
though it can also be helpful in other cases, such as to reuse a color
value in some other application.
#+findex: modus-themes-get-color-value
The function ~modus-themes-get-color-value~ can be called from Lisp to
-return the value of a color from the active Modus theme palette. It
-takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
+return the value of a color from the active Modus theme palette. It
+takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
a third =THEME= argument, to get the color from the given theme.
=COLOR= is a symbol that represents a named color entry in the
value.
With an optional =OVERRIDES= argument as a non-~nil~ value, it
-accounts for palette overrides. Else it reads only the default palette
+accounts for palette overrides. Else it reads only the default palette
([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]])
With an optional =THEME= as a symbol among the ~modus-themes-items~
#+findex: modus-themes-with-colors
Advanced users may want to apply many colors from the palette of the
-active Modus theme in their custom code. In such a case, retrieving
+active Modus theme in their custom code. In such a case, retrieving
each value with the function ~modus-themes-get-color-value~ is
-inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]]). The Lisp macro
-~modus-themes-with-colors~ provides the requisite functionality. It
+inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]]). The Lisp macro
+~modus-themes-with-colors~ provides the requisite functionality. It
supplies the current theme's palette to the code called from inside of
-it. For example:
+it. For example:
#+begin_src emacs-lisp
(modus-themes-with-colors
#+end_src
The above return value is for ~modus-operandi~ when that is the active
-theme. Switching to another theme and evaluating this code anew will
+theme. Switching to another theme and evaluating this code anew will
return the relevant results for that theme (remember that since
-version 4, the Modus themes consist of many items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
+version 4, the Modus themes consist of many items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
same with ~modus-vivendi~ as the active theme:
#+begin_src emacs-lisp
We provide commands to inspect those ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
Others sections in this manual show how to use the aforementioned
-macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). In practice, the use of a hook will
+macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). In practice, the use of a hook will
also be needed ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]]).
* Advanced customization
This section is of interest only to users who are prepared to maintain
their own local tweaks and who are willing to deal with any possible
-incompatibilities between versioned releases of the themes. As such,
+incompatibilities between versioned releases of the themes. As such,
they are labeled as "do-it-yourself" or "DIY".
** DIY Palette override presets
:end:
This is one of our practical examples to override the semantic colors
-of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). Here
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). Here
we show how to change the presentation of Org blocks (and other such
blocks like Markdown fenced code sections, though the exact
presentation depends on each major mode).
The default style of Org blocks is a subtle gray background for the
contents and for the delimiter lines (the =#+begin_= and =#+end_=
-parts). The text of the delimiter lines is a subtle gray foreground
+parts). The text of the delimiter lines is a subtle gray foreground
color.
[[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use alternative styles]].
#+end_src
The previous examples differentiate the delimiter lines from the
-block's contents. Though we can mimic the default aesthetic of a
-uniform background, while changing the applicable colors. Here are
+block's contents. Though we can mimic the default aesthetic of a
+uniform background, while changing the applicable colors. Here are
some nice combinations:
#+begin_src emacs-lisp
Finally, the following makes code blocks have no distinct background.
The minimal styles are applied to the delimiter lines, which only use
-a subtle gray foreground. This was the default for the Modus themes up
+a subtle gray foreground. This was the default for the Modus themes up
until version 4.3.0.
#+begin_src emacs-lisp
In versions of the Modus themes before =4.4.0= there was an option to
change the coloration of Org source blocks so that certain languages
-would have a distinctly colored background. This was not flexible
+would have a distinctly colored background. This was not flexible
enough, because (i) we cannot cover all languages effectively and (ii)
the user had no choice over the =language --> color= mapping.
-As such, the old user option is no more. Users can use the following
+As such, the old user option is no more. Users can use the following
to achieve what they want:
[ All this is done by setting the Org user option ~org-src-block-faces~,
[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]].
Note that the ~org-src-block-faces~ accepts a named face, as shown
-above, as well as a list of face attributes. The latter approach is
+above, as well as a list of face attributes. The latter approach is
not good enough because it hardcodes values in such a way that an
-~org-mode-restart~ is necessary. Whereas the indirection of the named
+~org-mode-restart~ is necessary. Whereas the indirection of the named
face lets the theme change the values while Org buffers continue to
show the right colors.
:END:
Many of the Do-It-Yourself (DIY) snippets provided herein make use of
-a hook to apply the desired changes. In most examples, this hook is
+a hook to apply the desired changes. In most examples, this hook is
the ~modus-themes-after-load-theme-hook~ (alias ~modus-themes-post-load-hook~).
This hook is provided by the Modus themes and is called at the end of
one the following:
Users who switch between themes that are not limited to the Modus
collection cannot benefit from the aforementioned hook: it only works
-with the Modus themes. A theme-agnostic hook is needed in such a case.
+with the Modus themes. A theme-agnostic hook is needed in such a case.
Before Emacs 29, this had to be set up manually ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][DIY A theme-agnostic hook for theme loading]]).
Starting with Emacs 29, the special hook ~enable-theme-functions~
works with anything that uses the basic ~enable-theme~ function.
#+end_src
Functions added to ~enable-theme-functions~ accept a single =THEME=
-argument. The examples shown in this manual use the pattern =(&rest
+argument. The examples shown in this manual use the pattern =(&rest
_)=, which is how a function accepts one or more arguments but
declares it will not use them (in plain terms, the code works with or
without ~enable-theme-functions~).
:custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776
:end:
-[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
+[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
or higher, users can rely on the built-in ~enable-theme-functions~
([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]]). ]
Newsticker provides a @b{Feed Reader} for Emacs. It retrieves
headlines from a list of news sites, processes them, and provides
-frontends for reading and managing them. (Standard headline formats
+frontends for reading and managing them. (Standard headline formats
are RSS and Atom which makes Newsticker an ``RSS Reader'', ``Atom
Reader'' or ``Feed Aggregator''.)
Headlines (or news items) consist of a title, (mostly) a description,
-and a link to the full story. The description may be a brief summary
+and a link to the full story. The description may be a brief summary
in plain text or a full HTML-formatted article. A headline may carry
enclosed data such as images, audio or video files, typically in the
case of so ``podcast feeds''.
As Newsticker is part of GNU Emacs there is no need to perform any
installation steps in order to use it.
-Newsticker is highly customizable. All options have reasonable default
+Newsticker is highly customizable. All options have reasonable default
values, so that (in most cases) it is not necessary to customize
anything before you start Newsticker for the first time.
@chapter Reading News
@findex newsticker-show-news
-Start Newsticker with the command @kbd{M-x newsticker-show-news}. This
+Start Newsticker with the command @kbd{M-x newsticker-show-news}. This
will start the asynchronous news download and displays all available
headlines.
@item M-a
@kindex M-a
@findex newsticker-group-add-group
-Add a new feed group. Name of the new group and of the parent group
+Add a new feed group. Name of the new group and of the parent group
must be entered. If The name of the parent group is the new group
becomes a top-level group. (@code{newsticker-group-add-group})
@item M-m
@kindex M-m
@findex newsticker-group-move-feed
-Moves a feed into a group. The name of the group must be
+Moves a feed into a group. The name of the group must be
entered. (@code{newsticker-group-move-feed})
@end table
arrived.
The Treeview is used when the variable @code{newsticker-frontend} is
-set to the value @code{newsticker-treeview}. (Alternatively it can be
+set to the value @code{newsticker-treeview}. (Alternatively it can be
started with the command @code{newsticker-treeview}.)
@subheading Plainview
@cindex Plainview
In this view all headlines of all feeds are displayed in a single
-buffer (@file{*newsticker*}). The modeline in the @file{*newsticker*}
+buffer (@file{*newsticker*}). The modeline in the @file{*newsticker*}
buffer informs you whenever new headlines have arrived.
You may want to use imenu with Plainview, which allows for navigating
-with the help of a menu. In this case add the following to your Emacs
+with the help of a menu. In this case add the following to your Emacs
startup file (@file{~/.emacs}).
@lisp
Treeview a try.)
The Plainview is used when the variable @code{newsticker-frontend} is
-set to the value @code{newsticker-plainview}. (Alternatively it can be
+set to the value @code{newsticker-plainview}. (Alternatively it can be
started with the command @code{newsticker-plainview}.)
@subheading Ticker
the following, I will assume that you type @kbd{C-M-i}.
nXML mode completion works by examining the symbol preceding point.
-This is the symbol to be completed. The symbol to be completed may be
-the empty. Completion considers what symbols starting with the symbol
+This is the symbol to be completed. The symbol to be completed may be
+the empty. Completion considers what symbols starting with the symbol
to be completed would be valid replacements for the symbol to be
completed, given the schema and the contents of the buffer before
point. These symbols are the possible completions. An example may
@item
If there is one possible completion, then that completion is
inserted, together with any following characters that are
-required. For example, in this case:
+required. For example, in this case:
@example
<html xmlns="http://www.w3.org/1999/xhtml">
@item
If there is more than one possible completion, but all
possible completions share a common non-empty prefix, then that prefix
-is inserted. For example, suppose the buffer is:
+is inserted. For example, suppose the buffer is:
@example
<html x@point{}
@end example
@noindent
-The symbol to be completed is @samp{x}. The possible completions are
+The symbol to be completed is @samp{x}. The possible completions are
@samp{xmlns} and @samp{xml:lang}. These share a common prefix of
@samp{xml}. Thus, @kbd{C-M-i} will yield:
@noindent
(If you do @kbd{C-M-i} again, the namespace URI will be
-inserted. Should that happen automatically?)
+inserted. Should that happen automatically?)
@end itemize
@node Inserting end-tags
end-tag.
@kbd{C-c C-f} inserts an end-tag for the element containing
-point. This command is useful when you want to input the start-tag,
-then input the content and finally input the end-tag. The @samp{f}
+point. This command is useful when you want to input the start-tag,
+then input the content and finally input the end-tag. The @samp{f}
is mnemonic for finish.
If you want to keep tags balanced and input the end-tag at the
same time as the start-tag, before inputting the content, then you can
-use @kbd{C-c C-i}. This inserts a @samp{>}, then inserts
+use @kbd{C-c C-i}. This inserts a @samp{>}, then inserts
the end-tag and leaves point before the end-tag. @kbd{C-c C-b}
is similar but more convenient for block-level elements: it puts the
start-tag, point and the end-tag on successive lines, appropriately
-indented. The @samp{i} is mnemonic for inline and the
+indented. The @samp{i} is mnemonic for inline and the
@samp{b} is mnemonic for block.
Finally, you can customize nXML mode so that @kbd{/} automatically
A start-tag at the beginning of the line (possibly indented) may
be treated as starting a paragraph. Similarly, an end-tag at the end
-of the line may be treated as ending a paragraph. The following rules
+of the line may be treated as ending a paragraph. The following rules
are used to determine whether such a tag is in fact treated as a
paragraph boundary:
If the end-tag corresponding to the start-tag is not at
the end of its line, or the start-tag corresponding to the end-tag is
not at the beginning of its line, then it is not a paragraph
-boundary. For example, in
+boundary. For example, in
@example
<p>This is a paragraph with an
The variable @code{nxml-section-element-name-regexp} gives
a regexp for the local names (i.e., the part of the name following any
-prefix) of section elements. The variable
+prefix) of section elements. The variable
@code{nxml-heading-element-name-regexp} gives a regexp for the
-local names of heading elements. For an element to be recognized
+local names of heading elements. For an element to be recognized
as a section
@itemize @bullet
@end itemize
In the last two states, where the text content is hidden, the
-heading is displayed specially, in an abbreviated form. An element
+heading is displayed specially, in an abbreviated form. An element
like this:
@example
off.
The outline state for each section is stored with the first
-character of the section (as a text property). Every command that
+character of the section (as a text property). Every command that
changes the outline state of any section updates the display of the
buffer so that each section is displayed correctly according to its
outline state. If the section structure is subsequently changed, then
@var{x} occurs in the list before file @var{y} then rules
from file @var{x} have precedence over rules from file
@var{y}. A filename specified in
-@samp{rng-schema-locating-files} may be relative. If so, it will
+@samp{rng-schema-locating-files} may be relative. If so, it will
be resolved relative to the document for which a schema is being
-located. It is not an error if relative file-names in
-@samp{rng-schema-locating-files} do not exist. You can use
+located. It is not an error if relative file-names in
+@samp{rng-schema-locating-files} do not exist. You can use
@kbd{M-x customize-variable @key{RET} rng-schema-locating-files
@key{RET}} to customize the list of schema locating
files.
members: @samp{schemas.xml}, and
@samp{@var{dist-dir}/schema/schemas.xml} where
@samp{@var{dist-dir}} is the directory containing the nXML
-distribution. The first member will cause nXML mode to use a file
+distribution. The first member will cause nXML mode to use a file
@samp{schemas.xml} in the same directory as the document being
edited if such a file exist. The second member contains rules for the
schemas that are included with the nXML distribution.
is currently being used.
The rules for locating a schema are applied automatically when
-you visit a file in nXML mode. However, if you have just created a new
+you visit a file in nXML mode. However, if you have just created a new
file and the schema cannot be inferred from the file-name, then this
will not locate the right schema. In this case, you should insert the
start-tag of the root element and then use the command @kbd{C-c C-s
schema locating files, you can use the command @kbd{C-c C-s C-f}
to manually select the file containing the schema for the document in
current buffer. Emacs will read the file-name of the schema from the
-minibuffer. After reading the file-name, Emacs will ask whether you
+minibuffer. After reading the file-name, Emacs will ask whether you
wish to add a rule to a schema locating file that persistently
associates the document with the selected schema. The rule will be
added to the first file in the list specified
@samp{rng-schema-locating-files}; it will create the file if
-necessary, but will not create a directory. If the variable
+necessary, but will not create a directory. If the variable
@samp{rng-schema-locating-files} has not been customized, this
means that the rule will be added to the file @samp{schemas.xml}
in the same directory as the document being edited.
The command @kbd{C-c C-s C-t} allows you to select a schema by
specifying an identifier for the type of the document. The schema
locating files determine the available type identifiers and what
-schema is used for each type identifier. This is useful when it is
+schema is used for each type identifier. This is useful when it is
impossible to infer the right schema from either the file-name or the
content of the document, even though the schema is already in the
schema locating file. A situation in which this can occur is when
there are multiple variants of a schema where all valid documents have
the same document element. For example, XHTML has Strict and
Transitional variants. In a situation like this, a schema locating file
-can define a type identifier for each variant. As with @kbd{C-c
+can define a type identifier for each variant. As with @kbd{C-c
C-s C-f}, Emacs will ask whether you wish to add a rule to a schema
locating file that persistently associates the document with the
specified type identifier.
@section Schema locating files
Each schema locating file specifies a list of rules. The rules
-from each file are appended in order. To locate a schema each rule is
+from each file are appended in order. To locate a schema each rule is
applied in turn until a rule matches. The first matching rule is then
used to determine the schema.
Schema locating files are designed to be useful for other
-applications that need to locate a schema for a document. In fact,
+applications that need to locate a schema for a document. In fact,
there is nothing specific to locating schemas in the design; it could
equally well be used for locating a stylesheet.
The document element of a schema locating file must be
@samp{locatingRules} and the namespace URI must be
@samp{http://thaiopensource.com/ns/locating-rules/1.0}. The
-children of the document element specify rules. The order of the
+children of the document element specify rules. The order of the
children is the same as the order of the rules. Here's a complete
example of a schema locating file:
by URIs. The @samp{uri} attribute identifies the schema by
specifying the URI@. The URI may be relative. If so, it is resolved
relative to the URI of the schema locating file that contains
-attribute. This means that if the value of @samp{uri} attribute
+attribute. This means that if the value of @samp{uri} attribute
does not contain a @samp{/}, then it will refer to a filename in
the same directory as the schema locating file.
particular absolute URI using the base URI of the schema locating
file, a relative URI pattern matches if it matches some number of
complete path segments of the document's URI ending with the last path
-segment of the document's URI@. For example,
+segment of the document's URI@. For example,
@example
<uri pattern="*.xsl" uri="xslt.rnc"/>
with @samp{.xsl} is @samp{xslt.rnc}.
A @samp{transformURI} rule locates a schema by
-transforming the URI of the document. The @samp{fromPattern}
+transforming the URI of the document. The @samp{fromPattern}
attribute specifies a URI pattern with the same meaning as the
@samp{pattern} attribute of the @samp{uri} element. The
@samp{toPattern} attribute is a URI pattern that is used to
@subsection Using the document element to locate a schema
A @samp{documentElement} rule locates a schema based on
-the local name and prefix of the document element. For example, a rule
+the local name and prefix of the document element. For example, a rule
@example
<documentElement prefix="xsl" localName="stylesheet" uri="xslt.rnc"/>
@noindent
specifies that when the name of the document element is
@samp{xsl:stylesheet}, then @samp{xslt.rnc} should be used
-as the schema. Either the @samp{prefix} or
+as the schema. Either the @samp{prefix} or
@samp{localName} attribute may be omitted to allow any prefix or
local name.
A @samp{namespace} rule locates a schema based on the
-namespace URI of the document element. For example, a rule
+namespace URI of the document element. For example, a rule
@example
<namespace ns="http://www.w3.org/1999/XSL/Transform" uri="xslt.rnc"/>
@samp{uri} attribute to specify a schema, can instead use a
@samp{typeId} attribute to specify a type identifier. The type
identifier can be associated with a URI using a @samp{typeId}
-element. For example,
+element. For example,
@example
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
@noindent
A user can easily use @kbd{C-c C-s C-t} to select between XHTML
-Strict and XHTML Transitional. Also, a user can easily add a catalog
+Strict and XHTML Transitional. Also, a user can easily add a catalog
@example
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
schema locating file. The behavior is exactly as if the rules from
that file were included in place of the @samp{include} element.
Relative URIs are resolved into absolute URIs before the inclusion is
-performed. For example,
+performed. For example,
@example
<include rules="../rules.xml"/>
documents that do not depend on a DTD@. Although it is common practice
to insert a DOCTYPE declaration referencing an external DTD, this has
undesirable side-effects. It means that the document is no longer
-self-contained. It also means that different XML parsers may interpret
+self-contained. It also means that different XML parsers may interpret
the document in different ways, since the XML Recommendation does not
require XML parsers to read the DTD@. With DTDs, it was impractical to
get validation without using an external DTD or reference to an
documents. Therefore, I recommend that you do not reference an
external DOCTYPE in your XML documents.
-One problem is entities for characters. Typically, as well as
+One problem is entities for characters. Typically, as well as
providing validation, DTDs also provide a set of character entities
-for documents to use. Schemas cannot provide this functionality,
+for documents to use. Schemas cannot provide this functionality,
because schema validation happens after XML parsing. The recommended
solution is to either use the Unicode characters directly, or, if this
is impractical, use character references. nXML mode supports this by
@item
DTD support is limited. Internal parsed general entities declared
in the internal subset are supported provided they do not contain
-elements. Other usage of DTDs is ignored.
+elements. Other usage of DTDs is ignored.
@item
The restrictions on RELAX NG schemas in section 7 of the RELAX NG
specification are not enforced.
understand, and change them with any text editor.
As an authoring tool, Org helps you write structured documents and
-provides exporting facilities. Org files can also be used for literate
+provides exporting facilities. Org files can also be used for literate
programming and reproducible research. As a TODO lists manager, Org
helps you organize your tasks in a flexible way, from daily needs to
detailed project-planning, allowing logging, multiple views on your
(lambda ()
(delete-region (point) (line-beginning-position 2))
;; We need to tell `org-map-entries' to not skip over heading at
- ;; point. Otherwise, it would continue from _next_ heading. See
+ ;; point. Otherwise, it would continue from _next_ heading. See
;; the docstring of `org-map-entries' for details.
(setq org-map-continue-from (point)))))
- bibtex :: this export processor uses BibTeX, the historical
bibliographic processor used with LaTeX, thus allowing the use of
data and style files compatible with this processor (including a
- large number of publishers' styles). It only supports LaTeX's
+ large number of publishers' styles). It only supports LaTeX's
=\cite= and =\nocite= commands.
- natbib :: as with the bibtex processor, but using the LaTeX
#+vindex: org-cite-biblatex-options
#+texinfo: @noindent
specifies the =biblatex= export processor with the default =numeric=
-style and the =bibtex= backend. Always define the style first and then
+style and the =bibtex= backend. Always define the style first and then
the rest of load-time options for the =biblatex=
-package. Alternatively, you can use the ~key=val,key=val~ format for
+package. Alternatively, you can use the ~key=val,key=val~ format for
the options as documented in the =biblatex= package documentation:
: #+cite_export: biblatex backend=bibtex,style=numeric
The ~org-cite-biblatex-options~ variable in your Emacs configuration
-uses this format. It will only export to PDF, since it relies on the
+uses this format. It will only export to PDF, since it relies on the
~biblatex~ processor of your LaTeX installation.
** Bibliography printing
The =tangle-mode= header argument specifies what permissions to set
for tangled files by ~set-file-modes~. Permissions are given by an
octal value, which can be provided calling the ~identity~ function on
-an elisp octal value. For instance, to create a read-only file one may
-use =:tangle-mode (identity #o444)=. To reduce the verbosity required,
-a octal shorthand is defined, =oXXX= (=o= for octal). Using this, our
-read-only example is =:tangle-mode o444=. Omitting the =o= prefix will
+an elisp octal value. For instance, to create a read-only file one may
+use =:tangle-mode (identity #o444)=. To reduce the verbosity required,
+a octal shorthand is defined, =oXXX= (=o= for octal). Using this, our
+read-only example is =:tangle-mode o444=. Omitting the =o= prefix will
cause the argument to be interpreted as an integer, which can lead to
unexpected results (=444= is the same as =o674=).
Two other shorthands are recognized, ls-style strings like
~org-babel-tangle-default-file-mode~, which is =#o544= by default.
When =:tangle-mode= and =:shebang= are both specified, the give
-=:tangle-mode= will override the permissions from =:shebang=. When
+=:tangle-mode= will override the permissions from =:shebang=. When
multiple source code blocks tangle to a single file with conflicting
=:tangle-mode= header arguments, Org's behavior is undefined.
(@code{cvs-mode-mark}).
@item u
-Unmark the file that the cursor is positioned on. If the cursor is on a
+Unmark the file that the cursor is positioned on. If the cursor is on a
directory, all files in that directory are unmarked
(@code{cvs-mode-unmark}).
@vindex rcirc-omit-unless-requested
Certain messages can be omitted by default, unless the user manual
-requests them. For example, if you don't want to display @code{TOPIC}
+requests them. For example, if you don't want to display @code{TOPIC}
and @code{NAMES} messages, after reconnecting, you can configure
@code{rcirc-omit-unless-requested} to hide:
@end lisp
The empty pairs of brackets indicate the different arguments of the
-@code{\myfig} macro. The @samp{*} marks the label argument. @code{?f}
+@code{\myfig} macro. The @samp{*} marks the label argument. @code{?f}
indicates that this is a figure label which will be listed together with
labels from normal figure environments. The @code{nil} entries for
prefix and reference format mean to use the defaults for figure labels.
(@pxref{Referencing Labels}).
The regular expression uses an extended syntax: @samp{&&} defines a
-logic @code{and} for regular expressions. For example
+logic @code{and} for regular expressions. For example
@samp{Einstein&&Bose} will match all articles which mention
Bose-Einstein condensation, or which are co-authored by Bose and
Einstein. When entering the regular expression, you can complete on
@item @code{\bibitem}
@cindex @code{\bibitem}
-Display a document location which cites this article. Pressing
+Display a document location which cites this article. Pressing
@kbd{C-c &} several times moves through the entire document and finds
all locations.
When searching, @RefTeX{} will also expand recursive path
definitions (directories ending in @samp{//} or @samp{!!}). But it will
only search and expand directories @emph{explicitly} given in these
-variables. This may cause problems under the following circumstances:
+variables. This may cause problems under the following circumstances:
@itemize @bullet
@item
@findex TeX-add-style-hook@r{, AUCTeX}
Style files are Emacs Lisp files which are evaluated by @AUCTeX{} in
association with the @code{\documentclass} and @code{\usepackage}
-commands of a document (@pxref{Style Files,,,auctex}). Support for
+commands of a document (@pxref{Style Files,,,auctex}). Support for
@RefTeX{} in such a style file is useful when the @LaTeX{} style
defines macros or environments connected with labels, citations, or the
index. Many style files (e.g., @file{amsmath.el} or @file{natbib.el})
@code{reftex-label-alist} contains @samp{%S}, this list is used to
determine the correct prefix string depending on the current section
level. The list is an alist, with each entry of the form
-@w{@code{(@var{key} . @var{prefix})}}. Possible keys are sectioning macro
+@w{@code{(@var{key} . @var{prefix})}}. Possible keys are sectioning macro
names like @samp{chapter}, integer section levels (as given in
@code{reftex-section-levels}), and @code{t} for the default.
@end defopt
@cindex Referencing labels, options
@defopt reftex-label-menu-flags
-List of flags governing the label menu makeup. The flags are:
+List of flags governing the label menu makeup. The flags are:
@table @asis
@item @var{table-of-contents}
Show the labels embedded in a table of context.
@defopt reftex-index-phrases-sort-prefers-entry
Non-@code{nil} means when sorting phrase lines, the explicit index entry
-is used. Phrase lines in the phrases buffer contain a search phrase, and
+is used. Phrase lines in the phrases buffer contain a search phrase, and
sorting is normally based on these. Some phrase lines also have
an explicit index argument specified. When this variable is
non-@code{nil}, the index argument will be used for sorting.
@end table
If a buffer is to be kept, the file is visited normally (which is
-potentially slow but will happen only once). If a buffer is to be thrown
+potentially slow but will happen only once). If a buffer is to be thrown
away, the initialization of the buffer depends upon the variable
@code{reftex-initialize-temporary-buffers}.
@end defopt
@defopt reftex-initialize-temporary-buffers
Non-@code{nil} means do initializations even when visiting file
temporarily. When @code{nil}, @RefTeX{} may turn off find-file hooks and
-other stuff to briefly visit a file. When @code{t}, the full default
+other stuff to briefly visit a file. When @code{t}, the full default
initializations are done (@code{find-file-hook} etc.). Instead of
@code{t} or @code{nil}, this variable may also be a list of hook
functions to do a minimal initialization.
@emph{selected} text, and it is highlighted. This is the entry most
keys in the selection and @file{*toc*} buffers act on. However, if you
mainly use the mouse to select an item, you may find it nice to have
-mouse-triggered highlighting @emph{instead} or @emph{as well}. The
+mouse-triggered highlighting @emph{instead} or @emph{as well}. The
variable may have one of these values:
@example
@noindent @b{Version 3.21}
@itemize @bullet
@item
-New options for all faces used by @RefTeX{}. They're in the
+New options for all faces used by @RefTeX{}. They're in the
customization group @code{reftex-fontification-configurations}.
@end itemize
different reference headers based on the type of reply or forwarding
you are doing. You may also want to preview the reference header
before deciding whether to insert it into the reply buffer or
-not. Supercite provides an optional @dfn{electric reference} mode
+not. Supercite provides an optional @dfn{electric reference} mode
which you can drop into to give you this functionality.
@vindex sc-electric-references-p
@item Printer functions for control of cell appearance.
@item Intuitive keystroke commands: C-o = insert row, M-o = insert column, etc.
@item ``Spillover'' of lengthy cell values into following blank cells.
-@item Header line shows column letters or a selected row.
-@item Completing-read for entering symbols as cell values.
+@item Header line shows column letters.
+@item Completing-read for entering symbols of named cells when editing formulas.
@item Cut, copy, and paste can transfer formulas and printer functions.
@item Import and export of tab-separated values or tab-separated formulas.
@item Plaintext, easily-hacked file format.
expect from a simple spreadsheet, this chapter may be all that you
need.
-First, visit a new file with the @file{.ses} extension.
+First, visit a new file with the @file{.ses} file name extension.
Emacs presents you with an empty spreadsheet containing a single cell.
-Begin by inserting a headline: @kbd{"Income"@key{RET}}. The double
-quotes indicate that this is a text cell. (Notice that Emacs
-automatically inserts the closing quotation mark.)
+Begin by inserting a headline: @kbd{"Income@key{RET}}. The double
+quotes indicate that you are editing a text cell, it is not part of
+the cell value, and no closing quotation mark is needed.
To insert your first income value, you must first resize the
spreadsheet. Press @key{TAB} to add a new cell and navigate back up
(+ A2 A3 A4 A5)
@end example
-Perhaps you want to add a cell to the right of cell A4 to explain
-why you have a negative entry. Pressing @kbd{TAB} in that cell
-adds an entire new column @samp{B}, where you can add such a note.
+Perhaps you want to add a cell to the right of cell @samp{A4} to
+explain why you have a negative entry. Pressing @kbd{TAB} in that
+cell adds an entire new column @samp{B}, where you can add such a
+note.
The column is fairly narrow by default, but pressing @kbd{w} allows
you to resize it as needed. Make it 20 characters wide. You can
@end group
@end example
-By default, the labels in column B are right-justified. To change
-that, you can enter a printer function for the whole column, using
-e.g., @kbd{M-p ("%s")}. You can override a column's printer function
-in any individual cell using @kbd{p}.
+By default, the cell value print-out is right aligned, that is the
+reason for such an alignment for the notes in column @samp{B}. To
+change that, you can enter a printer function for the whole column,
+using e.g., @kbd{M-p ("%s")}. Enclosing @code{"%s"} into a list tells
+@acronym{SES} to align left. You can override a column's printer
+function in any individual cell using @kbd{p}.
+
+@c TODO : propagate extra explanation from the French version.
If Joe pays back his loan, you might blank that entry; e.g., by
-positioning the cursor in cell A5 and pressing @kbd{C-d} twice.
-If you do that, the total cell will display @samp{######}. That is
-because the regular @code{+} operator does not handle a range that
-contains some empty cells. Instead of emptying the cell, you could
-enter a literal @samp{0}, or delete the entire row using @kbd{C-k}.
-An alternative is to use the special function @code{ses+} instead of
-the regular @code{+}:
+positioning the cursor in cell A5 and pressing @kbd{C-d}. If you do
+that, the total printed out in cell A6 will display @samp{######}.
+That is because the value in an empty cell is typically @code{nil},
+and the regular @code{+} operator fails to handle a range that
+contains that value. Instead of emptying the cell, you could enter a
+literal @samp{0}, or delete the entire row using @kbd{C-k}. An
+alternative is to use the special function @code{ses+} instead of the
+regular @code{+}:
@example
(ses+ A2 A3 A4 A5)
Actually, both options are not exactly equivalent as the former makes
the summing in reversed order of argument, and the latter in the same
-order. You can also reverse the order of arguments returned by
+order. You can also reverse the order of arguments returned by
@code{ses-range} with the @code{<} modifier.
@c ===================================================================
@findex keyboard-quit
To create a new spreadsheet, visit a nonexistent file whose name ends
-with ".ses". For example, @kbd{C-x C-f test.ses @key{RET}}.
+with @file{.ses}. For example, @kbd{C-x C-f test.ses @key{RET}}.
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. Super wide spreadsheets get AAA1, etc.
+column of the 7th row. Super wide spreadsheets get AAA1, etc.
You move around with the regular Emacs movement commands.
@table @kbd
@item j
-Moves point to cell, specified by identifier (@code{ses-jump}). Unless
-the cell is a renamed cell, the identifier is case-insensitive. A
+Moves point to cell, specified by identifier (@code{ses-jump}). Unless
+the cell is a renamed cell, the identifier is case-insensitive. A
prefix argument @math{n} move to cell with coordinates @math{(n\div R,
n \% C)} for a spreadsheet of @math{R} rows and @math{C} columns, and
-A1 being of coordinates @math{(0,0)}. The way the identifier or the
-command prefix argument are interpreted can be customized through
+@samp{A1} being of coordinates @math{(0,0)}. The way the identifier or
+the command prefix argument are interpreted can be customized through
variables @code{ses-jump-cell-name-function} and
@code{ses-jump-prefix-function}.
@end 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 (@acronym{SES} always
-uses transient mark mode). Drag the mouse from A1 to A3 to create the
-range A1-A2. Many @acronym{SES} commands operate only on single cells, not
-ranges.
+active, the range is the highlighted rectangle of cells (@acronym{SES}
+always uses transient mark mode). Drag the mouse from @samp{A1} to
+@samp{A3} to create the range @samp{A1-A2}. Many @acronym{SES}
+commands operate only on single cells, not ranges.
@table @kbd
@item C-@key{SPC}
Self-insert a negative number (@code{ses-read-cell}).
@item .
-Self-insert a fractional number (@code{ses-read-cell}).
+Self-insert a decimal number (@code{ses-read-cell}).
@item "
-Self-insert a quoted string. The ending double-quote
-is inserted for you (@code{ses-read-cell}).
+Self-insert a string. The ending double-quote is inserted for you
+(@code{ses-read-cell}).
@item (
Self-insert an expression. The right-parenthesis is inserted for you
@end table
@item ' @r{(apostrophe)}
-Enter a symbol (ses-read-symbol). @acronym{SES} remembers all symbols that have
-been used as formulas, so you can type just the beginning of a symbol
-and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and @kbd{?} to complete it.
+Enter a symbol (@code{ses-read-symbol}). @acronym{SES} remembers all
+symbols that have been used as formulas, so you can type just the
+beginning of a symbol and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and
+@kbd{?} to complete it.
@end table
To enter something else (e.g., a vector), begin with a digit, then
use parentheses: @samp{("$%.2f")}.
@item
A printer can also be a one-argument function, the result of which is
-a string (right-aligned) or list of one string (left-aligned). Such a
-function can be in turn configured as:
+a string (to get right alignment) or list of one string (to get left
+alignment). Such a function can be in turn configured as:
@itemize
@item
A lambda expression, for instance:
Centering with spill-over to following blank cells.
@item ses-dashfill
-Centering using dashes (-) instead of spaces.
+Centering using dashes (@samp{-}) instead of spaces.
@item ses-dashfill-span
Centering with dashes and spill-over.
@item ses-tildefill-span
-Centering with tildes (~) and spill-over.
+Centering with tildes (@samp{~}) and spill-over.
@item ses-prin1
This is the fallback printer, used when calling the configured printer
reprinted accordingly.
Sometimes there are local printers that you want to define or
-re-define automatically every time you open a sheet. For instance
+re-define automatically every time you open a sheet. For instance
imagine that you want to define/re-define automatically a local
printer @code{euro} to display a number like an amount of euros, that
is to say number @code{3.1} would be displayed as
-@code{3.10@dmn{}@euro{}}. To do so in any non read-only SES buffer,
+@code{3.10@dmn{}@euro{}}. To do so in any non read-only SES buffer,
you can add some code like this to your @file{.emacs} init file:
@lisp
'euro
(lambda (x)
(cond
- ((null x) "")
- ((numberp x) (format "%.2f€" x))
- (t (ses-center-span x ?# 'ses-prin1)))))))
+ ((null x) "")
+ ((numberp x) (format "%.2f€" x))
+ (t (ses-center-span x ?# 'ses-prin1)))))))
(add-hook 'ses-mode-hook 'my-ses-mode-hook)
@end lisp
When doing so, please take care that the returned value is a string,
or a list containing a string, even when the input argument has an
-unexpected value. Here is an example:
+unexpected value. Here is an example:
@example
(lambda (val)
@code{#} filling.
@end itemize
-Another precaution to take is to avoid stack overflow due to a
-printer function calling itself indefinitely. This mistake can
-happen when you use a local printer as a column printer,
-and this local printer implicitly calls the current column printer, so it
-will call itself recursively. Imagine for instance that you want to
-create some local printer @code{=fill} that would center the content
-of a cell and surround it by equal signs @code{=}, and you do it this
+Another precaution to take is to avoid stack overflow due to a printer
+function calling itself indefinitely. This mistake can happen when
+you use a local printer as a column printer, and this local printer
+implicitly calls the current column printer, so it will call itself
+recursively. Imagine for instance that you want to create some local
+printer @code{=fill} that would center the content of a cell and
+surround it by equal signs @code{=}, and you do it (errounously) this
way:
@lisp
+;; ERRONEOUS CODE
(lambda (x)
(cond
((null x) "")
(t (ses-center x 0 ?=))))
@end lisp
-Because @code{=fill} uses the standard printer @code{ses-center} without
-explicitly passing any printer to it, @code{ses-center} will call the
-current column printer if any, or the spreadsheet default printer
-otherwise. So using @code{=fill} as a column printer will result in a
-stack overflow in this column. SES does not check for that;
-you just have to be careful. For instance, re-write @code{=fill} like
-this:
+Because @code{=fill} uses the standard printer @code{ses-center}
+without explicitly passing any printer to it, @code{ses-center} will
+call the current column printer if any, or the spreadsheet default
+printer otherwise. So using @code{=fill} as a column printer will
+result in a stack overflow in this column on any non empty cell as
+@code{ses-center} will recursively recall the function that has called
+it. @acronym{SES} does not check for that; you just have to be
+careful. For instance, re-write @code{=fill} like this:
@lisp
(lambda (x)
(t (ses-center-span x ?# 'ses-prin1))))
@end lisp
+The code above is fixed as @code{ses-center} and
+@code{ses-center-span} are both called with an explicit last
+@var{printer} argument, respectively @code{" %s "} and
+@code{'ses-prin1}.
+
The code above applies the @code{=} filling only to strings; it also
surrounds the string by one space on each side before filling with
-@code{=} signs. So the string @samp{Foo} will be displayed like @samp{@w{===
-Foo ===}} in an 11 character wide column. Anything other than an empty cell
-or a non-string is displayed as an error by using @code{#} filling.
+@code{=} signs. So the string @samp{Foo} will be displayed like
+@samp{@w{=== Foo ===}} in an 11 character wide column. Any value that
+is neither @code{nil} (ie.@: an empty cell) nor a string is displayed
+as an error by using @code{#} filling.
@node Clearing cells
@section Clearing cells
@table @kbd
@item @key{DEL}
-Clear cell and move left (@code{ses-clear-cell-backward}).
+Move left and clear cell (@code{ses-clear-cell-backward}).
@item C-d
Clear cell and move right (@code{ses-clear-cell-forward}).
differently depending on the format of the text being inserted:
@itemize @bullet
@item
-When pasting cells that were cut from a @acronym{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}.
+When pasting cells that were cut or copied from a @acronym{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}.
@item
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
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
+After entering a cell value, normally, @code{forward-char} is called,
+which moves point right to the next cell@c TODO propagate extra
+ @c explanation from the French
+ @c version.
+. You can customize @code{ses-after-entry-functions} to move left or
up or down. For diagonal movement, select two functions from the
list.
@vindex ses-jump-cell-name-function
@code{ses-jump-cell-name-function} is a customizable variable by
-default set to the @code{upcase} function. This function is called
+default set to the @code{upcase} function. This function is called
when you pass a cell name to the @command{ses-jump} command (@kbd{j}),
-it changes the entered cell name to that where to jump. The default
+@c TODO : propagate extra explanation from the French version.
+it changes the entered cell name to that where to jump. The default
setting @code{upcase} allows you to enter the cell name in low
-case. Another use of @code{ses-jump-cell-name-function} could be some
+case. Another use of @code{ses-jump-cell-name-function} could be some
internationalization to convert non latin characters into latin
-equivalents to name the cell. Instead of a cell name, the function may
+equivalents to name the cell. Instead of a cell name, the function may
return cell coordinates in the form of a cons, for instance @code{(0
. 0)} for cell @code{A1}, @code{(1 . 0)} for cell @code{A2}, etc.
@vindex ses-jump-prefix-function
@code{ses-jump-prefix-function} is a customizable variable by default
-set to the @code{ses-jump-prefix} function. This function is called
+set to the @code{ses-jump-prefix} function. This function is called
when you give a prefix argument to the @command{ses-jump} command
-(@kbd{j}). It returns a cell name or cell coordinates corresponding to
-the prefix argument. Cell coordinates are in the form of a cons, for
-instance @code{(1 . 0)} for cell @code{A2}. The default setting
+(@kbd{j}). It returns a cell name or cell coordinates corresponding to
+the prefix argument. Cell coordinates are in the form of a cons, for
+instance @code{(1 . 0)} for cell @code{A2}. The default setting
@code{ses-jump-prefix} will number cells left to right and then top
-down, so assuming a 4x3 spreadsheet prefix argument 0 jumps to cell
-A1, prefix argument 2 jumps to C1, prefix argument 3 jumps to A2, etc.
+down, so assuming a 4x3 spreadsheet prefix argument @samp{0} jumps to
+cell @samp{A1}, prefix argument @samp{2} jumps to @samp{C1}, prefix
+argument @samp{3} jumps to @samp{A2}, etc.
@vindex ses-mode-hook
@code{ses-mode-hook} is a normal mode hook (list of functions to
valid local variable name (See also @ref{Nonrelocatable references}).
@item M-x ses-repair-cell-reference-all
@findex ses-repair-cell-reference-all
-When you interrupt a cell formula update by clicking @kbd{C-g}, then
+When you interrupt a cell formula update by typing @kbd{C-g}, then
the cell reference link may be broken, which will jeopardize automatic
-cell update when any other cell on which it depends is changed. To
+cell update when any other cell on which it depends is changed. To
repair that use function @code{ses-repair-cell-reference-all}
@end table
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:
+@samp{A1-C1}:
@table @kbd
@item [S-mouse-3]
-Inserts "A1 B1 C1" @code{(ses-insert-range-click})
+Inserts @samp{A1 B1 C1} (@code{ses-insert-range-click})
@item C-c C-r
Keyboard version (@code{ses-insert-range}).
@item [C-S-mouse-3]
-Inserts "(ses-range A1 C1)" (@code{ses-insert-ses-range-click}).
+Inserts @samp{(ses-range A1 C1)} (@code{ses-insert-ses-range-click}).
@item C-c C-s
Keyboard version (@code{ses-insert-ses-range}).
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.
+the formula relocator will delete the @samp{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
cell.
@table @code
@item !
-Empty cells in range can be removed by adding the @code{!} flag. An
+Empty cells in range can be removed by adding the @code{!} flag. An
empty cell is a cell the value of which is one of symbols @code{nil}
-or @code{*skip*}. For instance @code{(ses-range A1 A4 !)} will do the
+or @code{*skip*}. For instance @code{(ses-range A1 A4 !)} will do the
same as @code{(list A1 A3)} when cells @code{A2} and @code{A4} are
empty.
@item _
Empty cell values are replaced by the argument following flag
-@code{_}, or @code{0} when flag @code{_} is last in argument list. For
+@code{_}, or @code{0} when flag @code{_} is last in argument list. For
instance @code{(ses-range A1 A4 _ "empty")} will do the same as
@code{(list A1 "empty" A3 "empty")} when cells @code{A2} and @code{A4}
-are empty. Similarly, @code{(ses-range A1 A4 _ )} will do the same as
+are empty. Similarly, @code{(ses-range A1 A4 _ )} will do the same as
@code{(list A1 0 A3 0)}.
@item >v
When order matters, list cells by reading cells row-wise from top left
-to bottom right. This flag is provided for completeness only as it is
+to bottom right. This flag is provided for completeness only as it is
the default reading order.
@item <v
List cells by reading cells row-wise from top right to bottom left.
A short hand for @code{>^}.
@item *
Instead of listing cells, it makes a Calc vector or matrix of it
-(@pxref{Top,,,calc,GNU Emacs Calc Manual}). If the range contains only
+(@pxref{Top,,,calc,GNU Emacs Calc Manual}). If the range contains only
one row or one column a vector is made, otherwise a matrix is made.
@item *2
Same as @code{*} except that a matrix is always made even when there
@table @code
@item (ses-delete-blanks &rest @var{args})
Returns a list from which all blank cells (value is either @code{nil}
-or '*skip*) have been deleted. Order of args is reverted. Please note
+or '*skip*) have been deleted. Order of args is reverted. Please note
that @code{ses-range} has a @code{!} modifier that enables removing
blanks, so it is possible to write:
@lisp
producing a value: the print cell is filled with hash marks (#).
@end itemize
+@c TODO propagate extra explanation from the French version.
+
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
When a printer function signals an error, the fallback printer
@findex ses-prin1
-@code{ses-prin1} is substituted. This is useful when your column printer
-is numeric-only and you use a string as a cell value. Note that the
-standard default printer is @samp{"%.7g"} which is numeric-only, so cells
-that are empty of contain strings will use the fallback printer.
-@kbd{c} on such cells will display ``Format specifier doesn't match
-argument type''.
+@code{ses-prin1} is substituted. This is useful when your printer is
+numeric-only and you use a string as a cell value. Note that the
+standard default printer is @samp{"%.7g"} which is numeric-only, so
+cells for which the standard default printer applies, and that are not
+empty and do not contain a number will use the fallback printer
+@code{ses-prin1}, for instance cells that contain strings will do
+that. @kbd{c} on such cells will display ``Format specifier doesn't
+match argument type''.
@node Import and export
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.
+and you must press @kbd{Y} to approve it or @kbd{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,
+safety. If found to be possibly unsafe and you press @kbd{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),
@lisp
(ses-average (ses-select (ses-range A1 A5) 'Smith (ses-range B1 B5)))
@end lisp
-This computes the average of the B column values for those rows whose
-A column value is the symbol 'Smith.
+This computes the average of the @samp{B} column values for those rows
+whose @samp{A} column value is the symbol @samp{'Smith}.
Arguably one could specify only @var{fromrange} plus
@var{to-row-offset} 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.
+@c TODO reword this paragraph more clearly as in the French version
+
File @file{etc/ses-example.el} in the Emacs distribution is an example of a
details-and-summary spreadsheet.
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
-@kbd{C-c C-l} to fix it.
+process is repeated until either the set is empty or a circular
+references are detected. In extreme cases, and notably if a circular
+cell reference is under detection, 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 @kbd{C-c 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
These deferred cell-writes cannot be interrupted by @kbd{C-g}, so
you'll just have to wait.
-@acronym{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.
+@acronym{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 visiting a file. This
+may be visible as a momentary glitch after visiting and certain
+scrolling commands. You can type ahead without worrying about the
+glitch.
@node Nonrelocatable references
@kbd{C-u C-y} relocates none of the cell-references. What about mixed
cases?
-The best way is to rename cells that you do not want to be relocatable
-by using @code{ses-rename-cell}.
+The best way is to rename cells that you do @emph{not} want to be
+relocatable by using @code{ses-rename-cell}.
@findex ses-rename-cell
Cells that do not have an A1-like name style are not relocated on
-yank. Using this method, the concerned cells won't be relocated
-whatever formula they appear in. Please note however that when a
+yank. Using this method, the concerned cells won't be relocated
+whatever formula they appear in. Please note however that when a
formula contains some range @code{(ses-range @var{cell1} @var{cell2})}
then in the yanked formula each range bound @var{cell1} and
@var{cell2} are relocated, or not, independently, depending on whether
-they are A1-like or renamed.
+they are @samp{A1}-like or renamed.
An alternative method is to use
@lisp
@end 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, this is why using
+rows/columns are inserted/deleted. However, @samp{B3} will not be
+recorded as a dependency of this cell, so this cell will not be
+updated automatically when @samp{B3} is changed, this is why using
@code{ses-rename-cell} is most of the time preferable.
The variables @code{row} and @code{col} are dynamically bound while a
@cindex data area
@findex ses-reconstruct-all
-Begins with an 014 character, followed by sets of cell-definition
-macros for each row, followed by the set of local printer
-definitions, followed by column-widths, column-printers,
-default-printer, and header-row. Then there's the global parameters
-(file-format ID, row count, column count, local printer count) and the
-local variables (specifying @acronym{SES} mode for the buffer, etc.).
+Begins with an form feed character (whose ASCII code is 014 in octal
+notation), followed by sets of cell-definition macros for each row,
+followed by the set of local printer definitions, followed by
+column-widths, column-printers, default-printer, and header-row. Then
+there's the global parameters (file-format ID, row count, column
+count, local printer count) and the local variables (specifying
+@acronym{SES} mode for the buffer, etc.).
When a @acronym{SES} file is loaded, first the global parameters are
loaded, then the entire data area is @code{eval}ed, and finally the local
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:
+The data area is maintained as an image of spreadsheet data structures
+as stored in buffer-local variables from initially loading the area.
+If the data area gets messed up in the sequel, you can try
+reconstructing the data area from the data structures:
@table @kbd
@item C-c M-C-l
the data area, such as hidden constants you want to refer to in your
formulas.
-You can override the variable @code{ses--symbolic-formulas} to be a list of
+You can initialize the variable @code{ses--symbolic-formulas} to be a list of
symbols (as parenthesized strings) to show as completions for the @kbd{'}
command. This initial completions list is used instead of the actual
set of symbols-as-formulas in the spreadsheet.
@table @code
@item 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
+a rectangle and attach each cell's formula and printer as @code{'ses}
properties.
@item 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.
+as cells (if the yank text has @code{'ses} properties), then as
+tab-separated formulas, then (if all else fails) as a single formula
+for the current cell.
@end table
@c ===================================================================
@c monnier@@gnu.org
Stefan Monnier,
@c shigeru.fukaya@@gmail.com
-Shigeru Fukaya
+Shigeru Fukaya,
+@c vincent.belaiche@@sourceforge.net
+Vincent Belaïche
@end quotation
@noindent
@c jyavner@@member.fsf.org
Jonathan Yavner,
@c brad@@chenla.org
-Brad Collins
+Brad Collins,
+@c vincent.belaiche@@sourceforge.net
+Vincent Belaïche
@end quotation
@noindent
@c jotto@@pobox.com
J. Otto Tennant,
@c jphil@@acs.pagesjaunes.fr
-Jean-Philippe Theberge
+Jean-Philippe Theberge,
+@c rrandresf@@hotmail.com
+Andrés RamÃrez
@end quotation
@c ===================================================================
Speedbar displays a narrow frame in which a tree view is shown. This
tree view defaults to containing a list of files and directories. Files
-can be ``expanded'' to list tags inside. Directories can be expanded to
+can be ``expanded'' to list tags inside. Directories can be expanded to
list the files within them. Each file or tag can be jumped to
immediately.
@samp{nonmarking} (@kbd{k}): Change the current item's calendar
marking status by adding @code{diary-nonmarking-symbol} if the item
-lacks this, or by removing it if present. Since this symbol only
+lacks this, or by removing it if present. Since this symbol only
applies to diary items, the item is automatically marked as such,
i.e., if @code{todo-nondiary-marker} is present, it is removed.
Hide the item headers if visible, or show them if they are hidden.
With done items, only the done header (i.e., the done tag and date-time
string inserted when the item was marked done) is hidden, the original
-date-time string is not. With filtered items, the category (or
+date-time string is not. With filtered items, the category (or
category-file) tag is not hidden.
@item F H
@anchor{Using Transient for composing interactive commands}
@heading Using Transient for composing interactive commands
-What about Emacs commands used interactively? How do these handle
+What about Emacs commands used interactively? How do these handle
options? One solution is to make many versions of the same command,
-so you don't need to! Consider: @samp{delete-other-windows} vs.
+so you don't need to! Consider: @samp{delete-other-windows} vs.
@samp{delete-other-windows-vertically} (among many similar examples).
Some Emacs commands will simply prompt you for the next "argument"
After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to
show the documentation for the infix or suffix command that @kbd{@var{KEY}} is
bound to (see @ref{Getting Help for Suffix Commands}), and infixes and
-suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes
+suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes
and suffixes that are disabled by default can be enabled the same way.
See @ref{Enabling and Disabling Suffixes}.
The same form is also used when later binding additional commands
using functions such as @code{transient-insert-suffix}, see @ref{Modifying Existing Transients}.
-Note that an infix is a special kind of suffix. Depending on context
+Note that an infix is a special kind of suffix. Depending on context
``suffixes'' means ``suffixes (including infixes)'' or ``non-infix
suffixes''. Here it means the former.
@cindex defining suffix commands
@cindex defining infix commands
-Note that an infix is a special kind of suffix. Depending on context
+Note that an infix is a special kind of suffix. Depending on context
``suffixes'' means ``suffixes (including infixes)'' or ``non-infix
suffixes''.
@findex :vc
The @code{:vc} keyword can be used to control how packages are
-downloaded and/or installed. More specifically, it allows one to fetch
-and update packages directly from a version control system. This is
+downloaded and/or installed. More specifically, it allows one to fetch
+and update packages directly from a version control system. This is
especially convenient when wanting to install a package that is not on
any package archive.
@chapter Introduction
@cindex Introduction
-Welcome to VHDL Mode. This is a GNU Emacs mode for editing files
+Welcome to VHDL Mode. This is a GNU Emacs mode for editing files
containing VHDL code.
This manual will describe the following:
@findex vhdl-version
The major version number was incremented to 3 with the addition of
many new features for editing VHDL code to the new indentation engine,
-which was introduced in major version 2. To find the minor revision
+which was introduced in major version 2. To find the minor revision
number of this release, use @kbd{M-x vhdl-version @key{RET}}.
A special word of thanks goes to Rod Whitby, who wrote the
VHDL Mode indentation engine, and to Barry Warsaw, who wrote
the CC Mode indentation engine that formed the basis
-thereof. Their manuals were also the basis for this manual.
+thereof. Their manuals were also the basis for this manual.
-This manual is not very up-to-date. It basically contains the
+This manual is not very up-to-date. It basically contains the
indentation machine documentation by Rod Whitby with only minor
-adaptions. A short documentation of the entire VHDL Mode is available
-within the mode itself by typing @kbd{C-c C-h}. Also, all commands and
+adaptions. A short documentation of the entire VHDL Mode is available
+within the mode itself by typing @kbd{C-c C-h}. Also, all commands and
customization of most variables are available through the menu, which
makes everything highly self-explaining.
@cindex New Indentation Engine
VHDL Mode has a new indentation engine, providing a simplified, yet
-flexible and general mechanism for customizing indentation. It breaks
-indentation calculation into two steps. First for the line of code being
+flexible and general mechanism for customizing indentation. It breaks
+indentation calculation into two steps. First for the line of code being
indented, VHDL Mode analyzes what kind of language construct it's
looking at, then it applies user defined offsets to the current line
based on this analysis.
This section will briefly cover how indentation is calculated in
-VHDL Mode. It is important to understand the indentation model
+VHDL Mode. It is important to understand the indentation model
being used so that you will know how to customize VHDL Mode for
your personal coding style.
indentation of some line higher up in the buffer. This is represented
by the relative buffer position in the syntactic component.
-It might help to see an example. Suppose we had the following code as
+It might help to see an example. Suppose we had the following code as
the only thing in a VHDL Mode buffer @footnote{The line numbers
in this and future examples don't actually appear in the buffer.}:
@example
perhaps @code{vhdl-basic-offset} will need to be changed. However, some
styles require a more advanced ability for customization, and one of the
real strengths of VHDL Mode is that the syntactic analysis model
-provides a very flexible framework for customizing indentation. This
+provides a very flexible framework for customizing indentation. This
allows you to perform special indentation calculations for situations
not handled by the mode directly.
@strong{Q.} @emph{How do I re-indent the whole file?}
@strong{A.} Visit the file and hit @kbd{C-x h} to mark the whole
-buffer. Then hit @kbd{@key{ESC} C-\} to re-indent the entire region
-which you've just marked. Or just enter @kbd{M-x vhdl-indent-buffer}.
+buffer. Then hit @kbd{@key{ESC} C-\} to re-indent the entire region
+which you've just marked. Or just enter @kbd{M-x vhdl-indent-buffer}.
@sp 2
@strong{Q.} @emph{How do I re-indent the entire function?}
-@strong{A.} Hit @kbd{@key{ESC} C-h} to mark the entire function. Then
+@strong{A.} Hit @kbd{@key{ESC} C-h} to mark the entire function. Then
hit @kbd{@key{ESC} C-\} to re-indent the entire region which you've just
marked.
@sp 2
@kindex 0301 C-x C-z @r{(}@code{suspend-emacs}@r{)}
Loading VIP has the effect of globally binding @kbd{C-z} (@kbd{Control-z})
-to the function @code{vip-change-mode-to-vi}. The default binding of @kbd{C-z}
+to the function @code{vip-change-mode-to-vi}. The default binding of @kbd{C-z}
in GNU Emacs is @code{suspend-emacs}, but, you can also call
@code{suspend-emacs} by typing @kbd{C-x C-z}. Other than this, all the
key bindings of Emacs remain the same after loading VIP.
@itemx O
@kindex 157 o @r{(}@code{vip-open-line}@r{)}
@kindex 117 O @r{(}@code{vip-Open-line}@r{)}
-Given counts, that many copies of text will be inserted. Thus
+Given counts, that many copies of text will be inserted. Thus
@kbd{o a b c @key{ESC}} will insert 3 lines of @samp{abc} below the current
line.
@item /
@kindex 033 ESC @r{(}@code{vip-ESC}@r{)}
These keys will exit from vi mode and return to emacs mode temporarily. If
you hit one of these keys, Emacs will be in emacs mode and will believe
-that you hit that key in emacs mode. For example, if you hit @kbd{C-x}
+that you hit that key in emacs mode. For example, if you hit @kbd{C-x}
followed by @kbd{2}, then the current window will be split into 2 and you
will be in vi mode again.
@item \
(@code{downcase-region}).
@item # C
@kindex 0431 # C @r{(}@code{upcase-region}@r{)}
-Change lower-case characters in the region to upper case. For instance,
+Change lower-case characters in the region to upper case. For instance,
@kbd{# C 3 w} will capitalize 3 words from the current point
(@code{upcase-region}).
@item # g
@kindex 1300 X @r{(}@code{vip-ctl-x-equivalent}@r{)}
These keys will exit from vi mode and return to emacs mode temporarily.
If you type @kbd{C} (@kbd{X}), Emacs will be in emacs mode and will believe
-that you have typed @kbd{C-c} (@kbd{C-x}) in emacs mode. Moreover,
+that you have typed @kbd{C-c} (@kbd{C-x}) in emacs mode. Moreover,
if the following character you type is an upper-case letter, then Emacs
will believe that you have typed the corresponding control character.
You will be in vi mode again after the command is executed. For example,
typing @kbd{X S} in vi mode is the same as typing @kbd{C-x C-s} in emacs
mode. You get the same effect by typing @kbd{C-x C-s} in vi mode, but
the idea here is that you can execute useful Emacs commands without typing
-control characters. For example, if you hit @kbd{X} (or @kbd{C-x}) followed
+control characters. For example, if you hit @kbd{X} (or @kbd{C-x}) followed
by @kbd{2}, then the current window will be split into 2 and you will be in
vi mode again.
@end table
@cindex expanding (region)
If a point command is given as an argument to a modifying command, the
region determined by the point command will be affected by the modifying
-command. On the other hand, if a line command is given as an argument to a
+command. On the other hand, if a line command is given as an argument to a
modifying command, the region determined by the line command will be
enlarged so that it will become the smallest region properly containing the
region and consisting of whole lines (we call this process @dfn{expanding
@item p
@kindex 160 p @r{(}@code{vip-put-back}@r{)}
Insert, after the character point is looking at, most recently
-deleted/yanked text from anonymous register. Given a register name
+deleted/yanked text from anonymous register. Given a register name
argument, the content of the named register will be put back. Given a
-count, the command will be repeated that many times. This command also
+count, the command will be repeated that many times. This command also
checks if the text to put back ends with a new line character, and if so
the text will be put below the current line (@code{vip-put-back}).
@item P
This manual is written with the assumption that you are an experienced Vi
user who wants to switch to Emacs while retaining the ability to edit files
-Vi style. Incredible as it might seem, there are experienced Emacs users
+Vi style. Incredible as it might seem, there are experienced Emacs users
who use Viper as a backdoor into the superior (as every Vi user already knows)
-world of Vi! These users are well familiar with Emacs bindings and prefer them
-in some cases, especially in the Vi Insert state. John Hawkins
+world of Vi! These users are well familiar with Emacs bindings and prefer them
+in some cases, especially in the Vi Insert state. John Hawkins
<jshawkin@@eecs.umich.edu> has provided a set of customizations, which
enables additional Emacs bindings under Viper. These customizations can be
included in your @file{~/.emacs.d/viper} file and are found at the
The latest versions of Emacs have an interactive customization facility,
which allows you to (mostly) bypass the use of the @file{.emacs} and
-@code{viper-custom-file-name} files. You can reach this customization
+@code{viper-custom-file-name} files. You can reach this customization
facility from within Viper's VI state by executing the Ex command
@kbd{:customize}.
prior to loading Viper (i.e., prior to @code{(require 'viper)} command.
@item
@cindex Ex customize
-By executing the @kbd{:customize} Ex command. This takes you to the Emacs
+By executing the @kbd{:customize} Ex command. This takes you to the Emacs
customization widget, which lets you change the values of Viper
-customizable variables easily. This method is good for novice and
-experts alike. The customization code in the form of Lisp commands will be
+customizable variables easily. This method is good for novice and
+experts alike. The customization code in the form of Lisp commands will be
placed in @file{~/.emacs} or some other customization file depending on the
version of Emacs that you use. Still, it is recommended to separate
Viper-related customization produced by the Emacs customization widget
Function used by the command @kbd{#c<move>} to spell.
@item viper-glob-function
The value of this variable is the function symbol used to expand wildcard
-symbols. This is platform-dependent. The default tries to set this variable
+symbols. This is platform-dependent. The default tries to set this variable
to work with most shells, MS Windows, etc. However, if it
doesn't work the way you expect, you should write your own.
Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
doesn't need to be harnessed.
It is recommended to harness even those minor modes that don't override
-Viper keys, but still have their own keymaps. A general way to
+Viper keys, but still have their own keymaps. A general way to
make a minor mode, @code{my-mode},
compatible with Viper is to have the file @file{my-mode.el} include the following code:
@cindex % (Current file)
Note that @samp{%} is used in Ex commands @kbd{:e} and @kbd{:r <shell-cmd>}
to mean current file. If you want a @samp{%} in your command, it must be
-escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
+escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
command doesn't support the meta symbols @samp{%} and @samp{#}, because
file history is a better mechanism.
@cindex # (Previous file)
Set the Emacs mark (@pxref{Emacs Preliminaries}) at point.
@item m ^
Set the Emacs mark (@pxref{Emacs Preliminaries}) back to where it was last
-set with the @kbd{m.} command. This is useful when you set the mark with
+set with the @kbd{m.} command. This is useful when you set the mark with
@kbd{m.}, but then some other command (such as @kbd{L} or @kbd{G}) changes
it in a way that you didn't like.
@item m <
@itemx :g/Pat/p
@itemx :v/Pat/p
The above commands display certain buffer lines in a
-temporary buffer. The first form above displays the buffer lines between
-@kbd{x} and @kbd{y}. The second displays the lines of the buffer, which
-match a given pattern. The third form displays the lines that do @emph{not}
+temporary buffer. The first form above displays the buffer lines between
+@kbd{x} and @kbd{y}. The second displays the lines of the buffer, which
+match a given pattern. The third form displays the lines that do @emph{not}
match the given pattern.
@item #c<move>
Change upper-case characters in the region to lower-case.
substitution).
After typing @kbd{/} or @kbd{?} all the usual Emacs minibuffer commands, such as
-@kbd{M-p} and @kbd{M-n} are available. In addition, typing @kbd{C-s} will
+@kbd{M-p} and @kbd{M-n} are available. In addition, typing @kbd{C-s} will
insert the last search string used by the Emacs incremental search command
(which is bound to @kbd{C-s} everywhere except in this case).
name. If you need to type a modifier, such as @kbd{>>} or @kbd{!}, don't
put any space between the command and the modifier.
-Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
-effect is that the command would start acting on the current region. For
+Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
+effect is that the command would start acting on the current region. For
instance, if the current region spans the lines 11 through 22, then if you
type @kbd{1:w} you would see @samp{:11,22w} in the minibuffer.
Recover file from autosave.
@item :f [<file>]
without the argument, prints file name and character/line information afout
-the currently visited file. With an argument, sets the currently visited
+the currently visited file. With an argument, sets the currently visited
filename to @file{file}.
@item :cd [<dir>]
Set the working directory to <dir> (default home directory).
Switch to another buffer. If @code{ex-cycle-other-window} is @code{t},
switch in another window. Buffer completion is supported.
The variable @code{viper-read-buffer-function} controls which function is
-actually used to read the buffer name. The default is @code{read-buffer},
+actually used to read the buffer name. The default is @code{read-buffer},
but better alternatives are also available in Emacs (e.g.,
@code{ido-read-buffer}).
@vindex viper-read-buffer-function
4.4, which, in turn, was based on Sato's manual for VIP 3.5.
Many contributors on the Net pointed out bugs and suggested a number of
-useful features. Scott Bronson and Samuel Padgett contributed patches that
+useful features. Scott Bronson and Samuel Padgett contributed patches that
were incorporated in this code. Here is a hopefully complete list of
contributors:
A form consists of read only text for documentation and some fields,
where each field contains two parts, a tag and a value. The tags are
used to identify the fields, so the documentation can refer to the
-@samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an
+@samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an
example form:
@example
All widgets can be created from a type specification. The general
syntax of a type specification is:
-@c FIXME: Add BNF reference here? If yes, what reference?
+@c FIXME: Add BNF reference here? If yes, what reference?
@example
@var{name} ::= (@var{name} [@var{keyword} @var{argument}]... @var{args})
| @var{name}