* Index:: Concept Index
@c @c Can't do that when using the simple node structure
-@c
+@c
@c --- The Detailed Node Listing ---
-@c
+@c
@c Anatomy of a Module
-@c
+@c
@c * Special Header Files:: Better include <emodules-ng.h>
@c * Recognised Functions:: Specially treated functions
@c * Recognised Variables:: Specially treated variables
@c * Loading other Modules:: How to load dependent modules
-@c
+@c
@c @c @c museum section?
@c @c Using @code{ellcc}
-@c @c
+@c @c
@c @c * Compile Mode:: Compiling modules using ellcc
@c @c * Initialization Mode:: Generating documentation and variables
@c @c * Link Mode:: Creating the final loadable module
@c @c * Other ellcc options:: Other useful options
@c @c * Environment Variables:: How to control ellcc
-@c
+@c
@c Building your Module
-@c
+@c
@c * Configuring:: How to
@c * Compiling and linking:: How to
@c * More Ideas:: Other things you might want
-@c
+@c
@c Defining Functions
-@c
+@c
@c * Using DEFUN:: Using the DEFUN macro to define functions
@c * Declaring Functions:: Declaring functions to the Lisp reader
@end menu
@c the location of @value{emacs} internal header files etc. The program will also
@c invoke the linker correctly to created the final shared object which is
@c loaded into @value{emacs}.
-@c
+@c
@c @item
@c @cindex header files
@c CEmacs also makes all of the relevant @value{emacs} internal header files
@c @xref{Top,,,internals,@value{emacs} Internals Manual}, for a
@c more complete discussion on how to extend and understand @value{emacs}. All of
@c the rules for C modules are discussed there.
-@c
+@c
@c @item
@c @cindex samples
@c Part of the @value{emacs} distribution is a set of sample modules. These are
@c the samples carefully, and maybe even use them as a basis for making
@c your own modules. Most of the concepts required for writing extension
@c modules are covered in the samples.
-@c
+@c
@c @item
@c @cindex documentation
@c @cindex help
@c @c Bullshit
@c @table @file
@c @item lisp.h
-@c
+@c
@c @item sysdep.h
-@c
+@c
@c @item window.h
-@c
+@c
@c @item buffer.h
-@c
+@c
@c @item insdel.h
-@c
+@c
@c @item frame.h
@c @end table
@deffn macro REQUIRE name &rest names
Proclaim the requisite emodules of @var{name}. Set up and fill the
-@code{dependencies} variable from @var{names} as discussed above.
+@code{dependencies} variable from @var{names} as discussed above.
@end deffn
@dots{}
@}
@dots{}
-@}
+@}
@end group
@end example
@item
The @file{make-docfile} utility can always be very easily found when
you know the location of an installed SXEmacs binary. Instead of
-calling @file{make-docfile} directly you would call
+calling @file{make-docfile} directly you would call
@code{sxemacs --make-docfile} and pass all arguments you would
normally pass thereafter.
@c @node Compile Mode, Initialization Mode, Using ellcc, Using ellcc
@c @section Compile Mode
@c @cindex compiling
-@c
+@c
@c By default, @code{ellcc} is in @dfn{compile} mode. This means that it
@c assumes that all of the command line arguments are C compiler arguments,
@c and that you want to compile the specified source file or files. You
@c can force compile mode by specifying the @code{--mode=compile} argument
@c to @code{ellcc}.
-@c
+@c
@c In this mode, @code{ellcc} is simply a front-end to the same C compiler
@c that was used to create the @value{emacs} binary itself. All @code{ellcc}
@c does in this mode is insert a few extra command line arguments before
@c the arguments you specify to @code{ellcc} itself. @code{ellcc} will
@c then invoke the C compiler to compile your module, and will return the
@c same exit codes and messages that your C compiler does.
-@c
+@c
@c By far the easiest way to compile modules is to construct a
@c @file{Makefile} as you would for a normal program, and simply insert, at
@c some appropriate place something similar to:
-@c
+@c
@c @example
@c @cartouche
@c CC=ellcc --mode=compile
-@c
+@c
@c .c.o:
@c $(CC) $(CFLAGS) -c $<
@c @end cartouche
@c @end example
-@c
+@c
@c After this, all you need to do is provide simple @code{make} rules for
@c compiling your module source files. Since modules are most useful when
@c they are small and self-contained, most modules will have a single
@c source file, aside from the module specific initialization file (see
@c below for details).
-@c
+@c
@c @node Initialization Mode, Link Mode, Compile Mode, Using ellcc
@c @section Initialization Mode
@c @cindex initialization
@c @cindex documentation
-@c
+@c
@c @value{emacs} uses a rather bizarre way of documenting variables and
@c functions. Rather than have the documentation for compiled functions
@c and variables passed as static strings in the source code, the
@c the documentation from these comments, producing the @value{emacs} @file{DOC}
@c file, which the internal help engine scans when the documentation for a
@c function or variable is requested.
-@c
+@c
@c Due to the internal construction of Lisp objects, subrs and other such
@c things, adding documentation for a compiled function or variable in a
@c compiled module, at any time after @value{emacs} has been @dfn{dumped} is
@c from the difficulties thanks to your friend @code{ellcc} and some
@c internal trickery in the module loading code. This is all done using
@c the @dfn{initialization} mode of @code{ellcc}.
-@c
+@c
@c The result of running @code{ellcc} in initialization mode is a C source
@c file which you compile with (you guessed it) @code{ellcc} in compile
@c mode. Initialization mode is where you set the module name, version,
@c functions and variables in your module. There are several options that
@c you are required to pass @code{ellcc} in initialization mode, the first
@c of which is the mode switch itself, @code{--mode=init}.
-@c
+@c
@c Next, you need to specify the name of the C source code file that
@c @code{ellcc} will produce, and you specify this using the
@c @code{--mod-output=FILENAME} argument. @var{FILENAME} is the name of
@c the C source code file that will contain the module variables and
@c @code{docs_of_module} function.
-@c
+@c
@c As discussed previously, each module requires a short @dfn{handle} or
@c module name. This is specified with the @code{--mod-name=NAME} option,
@c where @var{NAME} is the abbreviated module name. This @var{NAME} must
@c consist only of characters that are valid in C function and variable
@c names.
-@c
+@c
@c The module version is specified using @code{--mod-version=VERSION}
@c argument, with @var{VERSION} being any arbitrary version string. This
@c version can be passed as an optional second argument to the Lisp
@c module loading command @code{emodules_load}. This version string is
@c used to distinguish between different versions of the same module, and
@c to ensure that the module is loaded at a specific version.
-@c
+@c
@c Last, but not least, is the module title. Specified using the
@c @code{--mod-title=TITLE} option, the specified @var{TITLE} is used when
@c the list of loaded modules is displayed. The module title serves no
@c purpose other than to inform the user of the function of the module.
@c This string should be brief, as it has to be formatted to fit the
@c screen.
-@c
+@c
@c Following all of these parameters, you need to provide the list of all
@c source code modules that make up your module. These are the files which
@c are scanned by @file{make-docfile}, and provide the information required
@c to populate the @code{docs_of_module} function. Below is a sample
@c @file{Makefile} fragment which indicates how all of this is used.
-@c
+@c
@c @example
@c @cartouche
@c CC=ellcc --mode=compile
@c LD=ellcc --mode=link
@c MODINIT=ellcc --mode=init
@c CFLAGS=-O2 -DSOME_STUFF
-@c
+@c
@c .c.o:
@c $(CC) $(CFLAGS) -c $<
-@c
+@c
@c MODNAME=sample
@c MODVER=1.0.0
@c MODTITLE="Small sample module"
-@c
+@c
@c SRCS=modfile1.c modfile2.c modfile3.c
@c OBJS=$(SRCS:.c=.o)
-@c
+@c
@c all: sample.ell
@c clean:
@c rm -f $(OBJS) sample_init.o sample.ell
-@c
+@c
@c install: all
@c mkdir `ellcc --mod-location`/mymods > /dev/null
@c cp sample.ell `ellcc --mod-location`/mymods/sample.ell
-@c
+@c
@c sample.ell: $(OBJS) sample_init.o
@c $(LD) --mod-output=$@ $(OBJS) sample_init.o
-@c
+@c
@c sample_init.o: sample_init.c
@c sample_init.c: $(SRCS)
@c $(MODINIT) --mod-name=$(MODNAME) --mod-version=$(MODVER) \
@c --mod-title=$(MODTITLE) --mod-output=$@ $(SRCS)
@c @end cartouche
@c @end example
-@c
+@c
@c The above @file{Makefile} is, in fact, complete, and would compile the
@c sample module, and optionally install it. The @code{--mod-location}
@c argument to @code{ellcc} will produce, on the standard output, the base
@c the loader attempts to use are @file{.so}, @file{.ell} and @file{.dll}. You
@c can use any of these extensions, although @file{.ell} is the preferred
@c extension.
-@c
+@c
@c @node Link Mode, Other ellcc options, Initialization Mode, Using ellcc
@c @section Link Mode
@c @cindex linking
-@c
+@c
@c Once all of your source code files have been compiled (including the
@c generated init file) you need to link them all together to create the
@c loadable module. To do this, you invoke @code{ellcc} in link mode, by
@c that all other arguments are passed on directly to the system compiler
@c or linker, along with any other required arguments to create the
@c loadable module.
-@c
+@c
@c The module has complete access to all symbols that were present in the
@c dumped @value{emacs}, so you do not need to link against libraries that were
@c linked in with the main executable. If your library uses some other
@c sure you invoke it correctly in the @file{Makefile}. See the sample
@c @file{Makefile} above for an example of a well constructed
@c @file{Makefile} that invoked the linker correctly.
-@c
+@c
@c @node Other ellcc options, Environment Variables, Link Mode, Using ellcc
@c @section Other @code{ellcc} options
@c @cindex paths
-@c
+@c
@c Aside from the three main @code{ellcc} modes described above,
@c @code{ellcc} can accept several other options. These are typically used
@c in a @file{Makefile} to determine installation paths. @code{ellcc} also
@c allows you to over-ride several of its built-in compiler and linker
@c options using environment variables. Here is the complete list of
@c options that @code{ellcc} accepts.
-@c
+@c
@c @table @code
@c @item --mode=compile
@c Enables compilation mode. Use this to compile source modules.
-@c
+@c
@c @item --mode=link
@c Enabled link edit mode. Use this to create the final module.
-@c
+@c
@c @item --mode=init
@c Used to create the documentation function and to initialize other
@c required variables. Produces a C source file that must be compiled with
@c @code{ellcc} in compile mode before linking the final module.
-@c
+@c
@c @item --mode=verbose
@c Enables verbose mode. This will show you the commands that are being
@c executed, as well as the version number of @code{ellcc}. If you specify
@c this option twice, then some extra debugging information is displayed.
-@c
+@c
@c @item --mod-name=NAME
@c Sets the short internal module @var{NAME} to the string specified,
@c which must consist only of valid C identifiers. Required during
@c initialization mode.
-@c
+@c
@c @item --mod-version=VERSION
@c Sets the internal module @var{VERSION} to the specified string.
@c Required during initialization mode.
-@c
+@c
@c @item --mod-title=TITLE
@c Sets the module descriptive @var{TITLE} to the string specified. This
@c string can contain any printable characters, but should not be too
@c long. It is required during initialization mode.
-@c
+@c
@c @item --mod-output=FILENAME
@c Used to control the output file name. This is used during
@c initialization mode to set the name of the C source file that will be
@c created to @var{FILENAME}. During link mode, it sets the name of the
@c final loadable module to @var{FILENAME}.
-@c
+@c
@c @item --mod-location
@c This will print the name of the standard module installation path on the
@c standard output and immediately exit @code{ellcc}. Use this option to
@c determine the directory prefix of where you should install your modules.
-@c
+@c
@c @item --mod-site-location
@c This will print the name of the site specific module location and exit.
-@c
+@c
@c @item --mod-archdir
@c Prints the name of the root of the architecture-dependent directory that
@c @value{emacs} searches for architecture-dependent files.
-@c
+@c
@c @item --mod-config
@c Prints the name of the configuration for which @value{emacs} and @code{ellcc}
@c were compiled.
@c @end table
-@c
+@c
@c @node Environment Variables, , Other ellcc options, Using ellcc
@c @section Environment Variables
@c @cindex environment variables
-@c
+@c
@c During its normal operation, @code{ellcc} uses the compiler and linker
@c flags that were determined at the time @value{emacs} was configured. In
@c certain rare circumstances you may wish to over-ride the flags passed to
@c the compiler or linker, and you can do so using environment variables.
@c The table below lists all of the environment variables that @code{ellcc}
@c recognizes.
-@c
+@c
@c @table @code
@c @item ELLCC
@c @cindex @code{ELLCC}
@c This is used to over-ride the name of the C compiler that is invoked by
@c @code{ellcc}.
-@c
+@c
@c @item ELLLD
@c @cindex @code{ELLLD}
@c Sets the name of the link editor to use to created the final module.
-@c
+@c
@c @item ELLCFLAGS
@c @cindex @code{ELLCFLAGS}
@c Sets the compiler flags passed on when compiling source modules. This
@c only sets the basic C compiler flags. There are certain hard-coded
@c flags that will always be passed.
-@c
+@c
@c @item ELLLDFLAGS
@c @cindex @code{ELLLDFLAGS}
@c Sets the flags passed on to the linker. This does @strong{not} include
@c the flags for enabling PIC mode. This just sets basic linker flags.
-@c
+@c
@c @item ELLDLLFLAGS
@c @cindex @code{ELLDLLFLAGS}
@c Sets the flags passed to the linker that are required to created shared
@c and loadable objects.
-@c
+@c
@c @item ELLPICFLAGS
@c @cindex @code{ELLPICFLAGS}
@c Sets the C compiler option required to produce an object file that is
@c suitable for including in a shared library. This option should turn on
@c PIC mode, or the moral equivalent thereof on the target system.
-@c
+@c
@c @item ELLMAKEDOC
@c @cindex @code{ELLMAKEDOC}
@c Sets the name of the @file{make-docfile} program to use. Usually
@printindex cp
@bye
-
@ignore
All variables, functions, keys, programs, files, and concepts are
-in this one index.
+in this one index.
All names and concepts are permuted, so they appear several times, one
for each permutation of the parts of the name. For example,
* Allocation of Objects in SXEmacs Lisp::
* Dumping::
* Events and the Event Loop::
-* Asynchronous Events; Quit Checking::
+* Asynchronous Events; Quit Checking::
* Evaluation; Stack Frames; Bindings::
* Symbols and Variables::
* Buffers and Textual Representation::
* Main Loop::
* Specifics of the Event Gathering Mechanism::
* Specifics About the Emacs Event::
-* Event Queues::
-* Event Stream Callback Routines::
+* Event Queues::
+* Event Stream Callback Routines::
* Other Event Loop Functions::
-* Stream Pairs::
+* Stream Pairs::
* Converting Events::
* Dispatching Events; The Command Builder::
-* Focus Handling::
-* Editor-Level Control Flow Modules::
+* Focus Handling::
+* Editor-Level Control Flow Modules::
Asynchronous Events; Quit Checking
-* Signal Handling::
-* Control-G (Quit) Checking::
-* Profiling::
-* Asynchronous Timeouts::
-* Exiting::
+* Signal Handling::
+* Control-G (Quit) Checking::
+* Profiling::
+* Asynchronous Timeouts::
+* Exiting::
Evaluation; Stack Frames; Bindings
@itemize @bullet
@item
-GNU Emacs version 13 (the first public release we know of) was
+GNU Emacs version 13 (the first public release we know of) was
released on March 20, 1985.
@item
GNU Emacs version 15 (15.34) was released on May 7, 1985 and
* Main Loop::
* Specifics of the Event Gathering Mechanism::
* Specifics About the Emacs Event::
-* Event Queues::
-* Event Stream Callback Routines::
+* Event Queues::
+* Event Stream Callback Routines::
* Other Event Loop Functions::
-* Stream Pairs::
+* Stream Pairs::
* Converting Events::
* Dispatching Events; The Command Builder::
-* Focus Handling::
-* Editor-Level Control Flow Modules::
+* Focus Handling::
+* Editor-Level Control Flow Modules::
@end menu
@node Introduction to Events
@cindex asynchronous events
@menu
-* Signal Handling::
-* Control-G (Quit) Checking::
-* Profiling::
-* Asynchronous Timeouts::
-* Exiting::
+* Signal Handling::
+* Control-G (Quit) Checking::
+* Profiling::
+* Asynchronous Timeouts::
+* Exiting::
@end menu
@node Signal Handling
nothing will get completely trashed.
@item
-Now, let's look at QUIT again.
+Now, let's look at QUIT again.
-@item
+@item
UNFINISHED. Note, however, that as of the point when this comment got
committed to CVS (mid-2001), the interaction between reading @kbd{C-g}
Widget-glyphs (a.k.a native widgets) are not cached in this way. This is
because widget-glyph image-instances on screen are toolkit windows, and
thus cannot be reused in multiple SXEmacs domains. Thus widget-glyphs are
-cached on an SXEmacs window basis.
+cached on an SXEmacs window basis.
Any action on a glyph first consults the cache before actually
instantiating a widget.
@itemize @bullet
@item
-SXEmacs can rename the original file so that it becomes a backup file,
+SXEmacs can rename the original file so that it becomes a backup file,
and then write the buffer being saved into a new file. After this
procedure, any other names (i.e., hard links) of the original file now
refer to the backup file. The new file is owned by the user doing the
editing, and its group is the default for new files written by the user
in that directory.
-@item
+@item
SXEmacs can copy the original file into a backup file, and then
overwrite the original file with new contents. After this procedure,
any other names (i.e., hard links) of the original file still refer to
Font Lock mode uses this hook to recompute the fonts for the updated
buffer contents.
@end defvar
-
even if there is already a dumped @file{sxemacs}. Normally you wouldn't
want to do that; but the Makefiles do this when you rebuild SXEmacs using
@samp{make all-elc}, which builds SXEmacs and simultaneously compiles any
-out-of-date Lisp files.
+out-of-date Lisp files.
You need @file{temacs} in order to compile Lisp files. However, you
also need the compiled Lisp files in order to dump out
-@file{sxemacs}. If both of these are missing or corrupted, you are
+@file{sxemacs}. If both of these are missing or corrupted, you are
out of luck unless you're able to bootstrap @file{sxemacs} from
@file{temacs}. Note that @samp{make all-elc} actually loads the
alternative loadup file @file{loadup-el.el}, which works like
@example
@group
(emacs-version)
- @result{} "SXEmacs: hroptatyr@@sxemacs.org--sxemacs/sxemacs--hrop--22.1.2--patch-15,
+ @result{} "SXEmacs: hroptatyr@@sxemacs.org--sxemacs/sxemacs--hrop--22.1.2--patch-15,
built Fri Apr 29 18:44:05 2005 on marlin.math.tu-berlin.de"
@end group
@end example
@defun this-command-keys
This function returns a vector containing the key and mouse events that
invoked the present command, plus any previous commands that generated
-the prefix argument for this command.
+the prefix argument for this command.
Note: this is not the same as in FSF Emacs, which can return a string.
@xref{Events}.
@group
(silly-loop 40000000)
-@result{} ("Mon May 2 14:02:28 2005"
+@result{} ("Mon May 2 14:02:28 2005"
"Mon May 2 14:02:43 2005") ; @r{15 seconds}
@end group
If it is non-@code{nil} or an integer greater than 0, the user is asked
whether to compile each such file.
If it is 0 or less, the file in question is compiled quietly, i.e. the
-user is not asked.
+user is not asked.
Note: @var{flag} is not optional in FSF Emacs.
If the third optional argument @var{norecursion} is non-@code{nil},
@end defvar
@defun byte-compiler-options &rest args
-Set some compilation-parameters for this file.
+Set some compilation-parameters for this file.
This will affect only the file in which it appears; this does nothing when
evaluated, or when loaded from a @file{.el} file.
@section Conditionals
@cindex conditional evaluation
- Conditional control structures choose among alternatives. SXEmacs
+ Conditional control structures choose among alternatives. SXEmacs
Lisp has two conditional forms: @code{if}, which is much the same as in
other languages, and @code{cond}, which is a generalized case
statement.
The handler executes in the environment of the @code{condition-case}
that established it; all functions called within that
@code{condition-case} have already been exited, and the handler cannot
-return to them.
+return to them.
If there is no applicable handler for the error, the current command is
terminated and control returns to the editor command loop, because the
@c @defun play-sound sound &optional volume device
@c ...
@c @end defun
-@c
+@c
@c @deffn Command play-sound-file file &optional volume device
@c ...
@c @end deffn
For more information about sounds or audio in general, see @xref{Media}.
-
Unless you are using SXEmacs, Emacs 19+ or XEmacs, this macro is only
defined in Edebug, so you may want to use the following which is
-equivalent:
+equivalent:
@code{(put '@var{macro} 'edebug-form-spec '@var{specification})}
@end defmac
used in the future, and a consistent concept for dealing with
numeric computations from within emacs lisp.
- The feature itself must be considered experimental, though. Howbeit
+ The feature itself must be considered experimental, though. Howbeit
programmers can benefit from extremely increased performance, even
with the current implementation.
* Types of Numbers:: How do C types reflect in elisp.
* Unions of Number Types:: Categories of numbers.
* Coercion:: Converting from on number type to
- another.
+ another.
* Revised Arithmetics:: How ENT modifies arithmetics.
* Revised Formatting:: New output formatting features.
* Number Theoretic Functions:: Functions provided by ENT concerning
@menu
* GNU-MP:: The GNU multi-precision arithmetic
- library (GMP).
+ library (GMP).
* BSD-MP:: The BSD multi-precision library.
* MPFR:: Multi-precision floats with correct.
rounding (based on GMP).
The read syntax of @samp{quatern}s is similar to the read syntax for
complex numbers. The lisp reader interprets
@code{@var{a}+@var{b}i+@var{c}j+@var{d}k} as @samp{quatern} whenever
-@var{a}, @var{b}, @var{c} and @var{d} are all rational integers. We
+@var{a}, @var{b}, @var{c} and @var{d} are all rational integers. We
call @var{a} the z-part, @var{b} the i-part, @var{c} the j-part
and @var{d} the k-part of the quaternion.
category @samp{number} (deductively) consists of all SXEmacs lisp
objects which can be used in the arithmetical functions @code{+} and
@code{*}, and which possess a @dfn{canonical norm}, i.e. for which the
-function @code{canonical-norm} returns a value.
+function @code{canonical-norm} returns a value.
Of course, in our deductive approach, we wish to fragment the
category @samp{number} seamlessly into several subcategories. You can
@defvar read-real-as
Indicate how real numbers should be read.
If set to `nil' or 'float, reals are always converted to floats.
-If set to 'bigf or 'bigfr, reals are read as MPF floats or MPFR
+If set to 'bigf or 'bigfr, reals are read as MPF floats or MPFR
floats respectively.
@end defvar
TYPE is one of the symbols:
- @var{fixnum} or @var{int} to convert to built-in integers
- @var{bigz} or @var{bignum} to convert to bigz integers
-- @var{integer} to convert to the most suitable type out
+- @var{integer} to convert to the most suitable type out
of @var{bigz} or @var{int}
- @var{bigq} or @var{ratio} to convert to bigq fractions
- @var{float} to convert to built-in floats
- @var{bigf} or @var{bigfloat} to convert to bigf floats
- @var{bigfr} to convert to bigfr floats
-- @var{real} to convert to the type indicated by
+- @var{real} to convert to the type indicated by
@var{read-real-as} with a fallback to
@var{float}
Return the ordinary integer numerically equal to @var{number}.
The optional argument @var{precision} is unused.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'int precision)}
@end defun
Return the MPZ number numerically equal to @var{number}.
The optional argument @var{precision} is unused.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigz precision)}
@end defun
Return the MPQ number numerically equal to @var{number}.
The optional argument @var{precision} is unused.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigq precision)}
@end defun
Return a rational most suitable to represent @var{number}.
The optional argument @var{precision} is unused.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'rational precision)}
@end defun
If optional argument @var{precision} is non-@code{nil}, its value
(an integer) is used as precision.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigf precision)}
@end defun
If optional argument @var{precision} is non-@code{nil}, its value
(an integer) is used as precision.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigfr precision)}
@end defun
If optional argument @var{precision} is non-@code{nil}, its value
(an integer) is used as precision.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'real precision)}
@end defun
Return the Gaussian number numerically equal to @var{number}.
The optional argument @var{precision} is unused.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigg precision)}
@end defun
If optional argument @var{precision} is non-@code{nil}, its value
(an integer) is used as precision.
-This is equivalent to
+This is equivalent to
@code{(coerce-number @var{number} 'bigc precision)}
@end defun
The arguments must be numbers, characters or markers.
With one argument, reciprocates the argument.
-The division of @var{a} and @var{b} is defined as the
-largest number @var{c} such that (* @var{b} @var{c}) is
+The division of @var{a} and @var{b} is defined as the
+largest number @var{c} such that (* @var{b} @var{c}) is
less or equal @var{a}.
-Hereby, @var{c} lies in the larger category of @var{a}
+Hereby, @var{c} lies in the larger category of @var{a}
and @var{b}.
The rest can be queried by `mod'.
If GMP is available, some number theoretic functions are in effect.
Most of which accept, unlike in number theory, all kinds of numbers.
In that case coercion to the target range (mostly integer) takes
-place.
+place.
@defun primep number &optional certainty-threshold
Return @code{nil} if @var{number} is known to be composite,
@ifinfo
Return the extended gcd of the arguments.
The result is a list of integers, where the car is the actual gcd
-and the cdr consists of coefficients, @var{s1}, @dots{}, @var{sn},
+and the cdr consists of coefficients, @var{s1}, @dots{}, @var{sn},
such that @var{s1}*@var{arg1} + @dots{} + @var{sn}*@var{argn} = gcd.
@end ifinfo
@iftex
Return the extended gcd of the arguments.
The result is a list of integers, where the car is the actual gcd
-and the cdr consists of coefficients,
+and the cdr consists of coefficients,
@tex
$s_1, @dots{}, s_n$,
-@end tex
-such that
+@end tex
+such that
@tex
$\sum_{i=1}^n s_i arg_i = gcd$.
@end tex
@end defun
@defun congruentp number c m
-Return @code{t} if @var{number} is congruent to @var{c}
+Return @code{t} if @var{number} is congruent to @var{c}
modulo @var{m}, @code{nil} otherwise.
@end defun
@defun perfect-power-p number
Return @code{t} if @var{number} is a perfect power, @code{nil} otherwise.
-An integer @var{number} is said to be a perfect power if there
+An integer @var{number} is said to be a perfect power if there
exist integers, @var{a} and @var{b}, such that
@samp{@var{a}^@var{b} = @var{number}}.
@end defun
@defun perfect-square-p number
Return @code{t} if @var{number} is a perfect square, @code{nil} otherwise.
-An integer @var{number} is said to be a perfect square if there
+An integer @var{number} is said to be a perfect square if there
exists an integer @var{b} such that
@samp{@var{b}^2 = @var{number}}.
@end defun
(,,y ,x))
(list x y ,x ,y ,,x ,,y))
@end smallexample
-
An @dfn{extent} is somewhat the generalisation of a marker object
within the text.
- To be precise, An extent is a region of text (a start position and
-an end position) that is displayed in a particular face and can have
-certain other properties such as being read-only. Extents can overlap
+ To be precise, An extent is a region of text (a start position and
+an end position) that is displayed in a particular face and can have
+certain other properties such as being read-only. Extents can overlap
each other. SXEmacs efficiently handles buffers with large numbers of
extents in them.
This function returns the name of the font of face @var{face}, or
@code{nil} if it is unspecified. This is basically equivalent to
@code{(font-name (face-font @var{face}) @var{domain})} except that
-it does not cause an error if @var{face}'s font is @code{nil}.
+it does not cause an error if @var{face}'s font is @code{nil}.
Note: This function is named @code{face-font} in FSF Emacs.
@end defun
@end defvar
@defvar ffi-named-types
-Alist of named FFI types with elements of the form
+Alist of named FFI types with elements of the form
@code{(NAME . FFI-TYPE)}.
@end defvar
@c The whole procedure of binding foreign function objects can be
@c abbreviated using the macro @code{define-ffi-function}.
-@c
+@c
@c @c all in one macro
@c @defvr Macro define-ffi-function fsym args doc-string ftype ename
-@c
+@c
@c @end defvr
For foreign arrays, unions and structures, there are accessor
-functions to modify or fetch portions in the foreign object:
+functions to modify or fetch portions in the foreign object:
@c on foreign arrays
@defun ffi-aref farray idx
@c @defun ffi-dlerror
@c @end defun
-@c
+@c
@c @defun ffi-plist
@c @end defun
set the counter to 6 for the next symbol.
The defined enumeration will result in a (@code{defconst}'d) variable
-@code{name}, the value is an alist of the form
+@code{name}, the value is an alist of the form
@samp{ ((symbol . value) ...)},
@end defun
@example
-(curl:download "http://www.sxemacs.org"
+(curl:download "http://www.sxemacs.org"
(expand-file-name (make-temp-name "curl") (temp-directory)))
@result{} 0
@end example
@subsection Low-level functions of @file{ffi-wand.el}
-@c @defvr FFI-type MagickWand
+@c @defvr FFI-type MagickWand
@c A context.
-@c
+@c
@c An alias for '(pointer void).
@c @end defvr
-@c
+@c
@c @defvr FFI-type MagickBooleanType
@c A boolean type for function return values.
-@c
+@c
@c An alias for 'long.
@c @end defvr
-@c
+@c
@c @defvr FFI-type MagickStorageType
@c Type for the enumeration of storage methods.
-@c
+@c
@c An alias for 'unsigned-long.
@c @end defvr
-@c
+@c
@c @defvr FFI-type MagickChannelType
@c Type for the enumeration of channels.
-@c
+@c
@c An alias for 'unsigned-long.
@c @end defvr
@defun Wand:gamma-image wand level
Perform gamma correction on the image associated with @var{wand}.
-The argument @var{level} is a positive float, a value of 1.00
+The argument @var{level} is a positive float, a value of 1.00
(read 100%) is a no-op.
@end defun
@c Emacs 19 feature
@defun set-default-file-modes mode
This function sets the default file protection for new files created by
-SXEmacs and its subprocesses. Every file created with SXEmacs initially
+SXEmacs and its subprocesses. Every file created with SXEmacs initially
has this protection. On Unix, the default protection is the bitwise
complement of the ``umask'' value.
recursion depth, use @code{0} to emulate old @code{directory-files}.
Optional argument @var{symlink_is_file} specifies whether symlinks
-should be resolved (which is the default behaviour) or whether
+should be resolved (which is the default behaviour) or whether
they are treated as ordinary files (non-@code{nil}), in the latter
case symlinks to directories are not recurred.
@end defun
A @dfn{command} is a possible definition for a key sequence---we count
mouse events and menu accesses as key sequences for this purpose. More
formally, within SXEmacs lisp, a command is something that
-@code{command-execute} can invoke.
+@code{command-execute} can invoke.
Some functions are commands; a function written in Lisp is a command if
it contains an interactive declaration. A trivial interactive
In the case where you want to call a command in reaction to a
user-generated event, you'll need to bind it to that event. For how to
-do this, see @xref{Key Binding Commands}.
+do this, see @xref{Key Binding Commands}.
@xref{Command Overview}.
@item keystroke command
@item undefined
See @ref{Key Lookup}.
@end table
-
returned.
@end defun
-The following functions are
+The following functions are
@defun image-instance-name image-instance
This function returns the name of the given image instance. The name is
@example
(make-glyph
- `[layout
- :orientation horizontal
- :vertically-justify top
- :horizontally-justify center
+ `[layout
+ :orientation horizontal
+ :vertically-justify top
+ :horizontally-justify center
:border [string :data "Search"]
- :items
- ([layout :orientation vertical
+ :items
+ ([layout :orientation vertical
:justify top ; implies left also
- :items
+ :items
([string :data "Search for:"]
[button :descriptor "Match Case"
:style toggle
:callback-ex
(lambda (image-instance event)
(isearch-dehighlight)
- (delete-frame
+ (delete-frame
(event-channel event)))])])])
@end example
@subsection Progress Bars
Not documented yet.
-
matches records of class @code{Person} containing a @code{mail}
attribute and corresponding to people whose last name is @code{Smith} or
whose first name is @code{John}.
-
* PostgreSQL Support:: Interfacing to the PostgreSQL libpq library.
* OpenSSL Support:: Interfacing to the OpenSSL libcrypto/libssl libs
* Enhanced Number Types:: Using advanced numerical and mathematical
- features
+ features
* Internationalization:: How Emacs supports different languages and
cultural conventions.
* Foreign Functions:: Accessing functions in external
@var{function} may not modify @var{skiplist}, with the one exception
that @var{function} may remove or reput the entry currently being
-processed by @var{function}.
+processed by @var{function}.
@end defun
In box notation a dllist looks like
@smallexample
@group
-car _______ _______
+car _______ _______
| | | | | --> nil
| _____|_ _v___|_ _v___|_
--> |_______| |_______| |_______| <--
@defun dllist-to-list-reversed dllist
Return the ordinary list induced by @var{dllist} in reverse order,
that is start with the last element in @var{dllist} and traverse
-through the front.
+through the front.
@end defun
@example
The membership decision is done with @code{bloom-owns-p}.
@defun bloom-owns-p bloom element
-Return non-@code{nil} if @var{element} is in the bloom-filter
+Return non-@code{nil} if @var{element} is in the bloom-filter
@var{bloom}.
@end defun
which are then followed by the standard directories for Lisp code.
The command line options @samp{-l} or @samp{-load} specify a Lisp
-library to load as part of SXEmacs startup.
+library to load as part of SXEmacs startup.
@ignore @c stupid
Since this file might be in the current directory, Emacs 18 temporarily
out-of-date @samp{.elc} files do not make it mess things up.)
@end defopt
- To learn how @code{load} is used to build SXEmacs,
+ To learn how @code{load} is used to build SXEmacs,
see @ref{Building SXEmacs}.
indicating that the region should remain activated. The motion
commands do this.
@end defvar
-
-
forth.
@menu
-* Prerequisites:: External library dependencies.
+* Prerequisites:: External library dependencies.
* Media Streams:: The concept of media streams.
* Audio Devices:: Audio output facilities.
* Media Threads:: Plugging a stream to an output device.
In the land of ASCII-arts diagrams this would translate to:
@example
+------------+ +-----------+ +-------------+ +------------+
-| media file | | media lib | | SXEmacs | | audio lib |
+| media file | | media lib | | SXEmacs | | audio lib |
|------------|-->|-----------|-->|-------------|->|------------|->...
| e.g. | | parser | | bind to var | | connect to |
| .wav .mp3 | | demuxer | | start/stop | | soundcard |
@url{ftp://ftp.gnome.org/pub/gnome/sources/esound/0.2/esound-0.2.36.tar.bz2}
@item Pros:
-device independent (if used with ALSA),
+device independent (if used with ALSA),
network-mode possible, mixing possible, small
@item Cons:
high latency, not recent, not very configurable
@url{svn co svn://0pointer.de/pulseaudio/trunk pulseaudio}
@item Pros:
-device independent (if used with ALSA),
+device independent (if used with ALSA),
network-mode possible, mixing possible, multiple inputs, multiple
outputs, low latency, very configurable, @emph{developers' choice}
@item Cons:
@itemize
@item Availability: Unix-wide
-@item Dependencies: OSS, (KDE);
+@item Dependencies: OSS, (KDE);
optional: ALSA, Jack, ESD, mas, NAS, libaudiofile, Qt, sgilibaudio
@item Webpage: @url{http://www.arts-project.org/}
@item Download:
@url{http://arts-project.org/download/arts-0.5.4.tar.gz}
@item Pros:
-device independent (if used with ALSA or other sound servers),
+device independent (if used with ALSA or other sound servers),
network-mode possible, mixing possible, very flexible, very configurable
@item Cons:
standalone version discontinued, lots of processes, uses/needs MCOP
@item Availability: Unix-wide
@item Dependencies: ALSA
@item Webpage: @url{http://jackit.sourceforge.net/}
-@item Download:
+@item Download:
@url{http://prdownloads.sourceforge.net/jackit/},
@url{http://www.mega-nerd.com/libsndfile/libsndfile-1.0.15.tar.gz}
-@item Maximally provided formats:
+@item Maximally provided formats:
@item Notes:
@item Known caveats with SXE: none
@end itemize
@url{cvs -z3 -d:pserver:anonymous@@cvs.sf.net:/cvsroot/xine co xine-lib}
-@item Maximally provided formats:
+@item Maximally provided formats:
@item Notes:
@item Known caveats with SXE: not working
@end itemize
@url{cvs -z3 -d:pserver:anoncvs@@anoncvs.freedesktop.org:/cvs/gstreamer co gstreamer}
-@item Maximally provided formats:
+@item Maximally provided formats:
@item Notes:
@item Known caveats with SXE: not working
@end itemize
Optional second argument @var{device} must be an audio device created
by @code{make-audio-device}.
-If omitted @code{device} defaults to the value of
+If omitted @code{device} defaults to the value of
@code{default-audio-device}.
Optional third argument @var{sentinel} specifies a lisp function to be
@code{load-sound-file}.
Note: SXEmacs must be built with sound support for your system. Not all
-systems support sound.
+systems support sound.
Note: The pitch, duration, and volume options are available everywhere,
but many X servers ignore the @code{pitch} option.
@samp{Buffers} menu. @code{switch-to-buffer} is a good choice, as is
@code{pop-to-buffer}.
@end defopt
-
the old one to serve two purposes, since it may become harder to use and
maintain. Instead, copy and rename an existing major mode definition
and alter the copy---or define a @dfn{derived mode} (@pxref{Derived
-Modes}).
+Modes}).
@ignore @c does not exist here
For example, Rmail Edit mode, which is in
@file{lisp/rmailedit.el}, is a major mode that is very similar to
the last hook function that was called. If all hook functions return
@code{nil}, it returns @code{nil} as well.
@end defun
-
+
@defun add-hook hook function &optional append local
This function is the handy way to add function @var{function} to hook
variable @var{hook}. The argument @var{function} may be any valid Lisp
This function returns @code{t} if @var{object} is a category table value.
Valid values are @code{nil} or a bit vector of size 95.
@end defun
-
of @code{random}. On other machines, the result can never be larger
than a certain maximum or less than a certain (negative) minimum.
@end defun
-
-
@node openssl General
-@subsection General information
+@subsection General information
In this section we deal with informative functions which kind of
reflect the underlying library capabilities. It is very hard to say
Message digests are widely used in modern information
infrastructure. They are derived from (collision free) one-way hash
-functions.
+functions.
A hash function (such as @samp{md5} or @samp{sha1}) is a function
with following properties:
@item well definedness: computing a hash value from the same
source data twice yields the same result
@item efficiency: computing hash values is efficient (ideally
- with complexity O(n)) on the input, but it is hard to
+ with complexity O(n)) on the input, but it is hard to
compute a preimage for a given hash value.
@end enumerate
(let ((st (current-btime))
(b (buffer-string)))
(dotimes (i 100000)
- (base16-encode-string
+ (base16-encode-string
(ossl-digest 'md5 b)))
(- (current-btime) st))
@result{} 31697926
@example
@group
-freundt@@muck:~> ls -sh ~/temp/pdftex-1.30.3.tar.bz2
+freundt@@muck:~> ls -sh ~/temp/pdftex-1.30.3.tar.bz2
3.2M /home/freundt/temp/pdftex-1.30.3.tar.bz2
@end group
@var{count} (a positive integer) is the iteration count to use. This
indicates how often the hash algorithm is called recursively.
-Note: You probably want to put a wrapping encoder function
+Note: You probably want to put a wrapping encoder function
(like @code{base16-encode-string}) around it, since this returns
binary string data.
@end defun
@group
(base16-encode-string
- (get
+ (get
(ossl-bytes-to-key 'AES-256-OFB 'SHA512 "somesalt" "secret" 1)
'iv))
@result{} "2ce56b4d64a9ef097761ced99e0f6726"
@var{cipher} and encrypt that key/iv asymmetrically with the provided
public key.
-The envelope returned is a list
+The envelope returned is a list
@code{(@var{encrypted_string} @var{encrypted_key} @var{encrypted_iv})}
where
@var{encrypted_string} is the (symmetrically) encrypted message
iv (nth 2 envl))
(mapcar #'base16-encode-string envl))
@result{} ("0e6a38b28efea3ca4901b268c141d7ac23ed5f8fa598d23d9846fe3ec1
- 47278e"
+ 47278e"
"167911a73b0a228b24e78bdd37197ec95b21bed3bbd62d1915d8fac791
7915fd49fdd9774e7906ca53ed3bf4fb20de8339e628d469a496f7351c
06fddda49b71c90e73e31c406cfb0f0fb7411d1c9d49842603c45415cc
@result{} #<network connection "moz" (443 . "addons.mozilla.org") state:run>
(setq m (ossl-ssl-handshake p))
- @result{} #<OpenSSL socket layer: TLSv1 on top of
- #<secure network connection "moz"
+ @result{} #<OpenSSL socket layer: TLSv1 on top of
+ #<secure network connection "moz"
(443 . "addons.mozilla.org") state:run>>
;; @r{Let's examine @samp{p}}
@result{} (#<OpenSSL X509 Certificate iss:/C=ZA/
O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
sub:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary
- Certification Authority; RSA public key, size 1024>
+ Certification Authority; RSA public key, size 1024>
#<OpenSSL X509 Certificate iss:/C=ZA/ST=Western Cape/
L=Cape Town/O=Thawte Consulting (Pty) Ltd/OU=Security/
CN=www.thawte.com sub:/C=ZA/O=Thawte Consulting (Pty) Ltd./
@result{} none
@end group
@end example
-
-
@example
@group
-(current-time-string)
+(current-time-string)
@result{} "Fri May 6 21:35:58 2005"
@end group
@end example
One reason why we are reluctant to cater to the problems caused by
@kbd{C-s} and @kbd{C-q} is that they are gratuitous. There are other
techniques (albeit less common in practice) for flow control that
-preserve transparency of the character stream.
+preserve transparency of the character stream.
Note also that their use for flow control is not an official standard.
Interestingly, on the model 33 teletype with a paper tape punch (which
@c * Frequently Asked Questions:: Questions and answers from the mailing list.
Internals and Package Release Engineering:
-* Issues::
+* Issues::
@end menu
@node Package Overview, Package Terminology, , Packaging
The @file{packages} directory contains some auxiliary Lisp libraries
used in the compilation and packaging process. The content of these
-libraries is of interest primarily to the packaging engineers, @ref{The
+libraries is of interest primarily to the packaging engineers, @ref{The
Package Release Engineer View}.
Finally, the @file{packages}, @file{packages/xemacs-packages}, and
@item Local.rules.inc
a file to @code{include} in package @file{Makefile}s to be able to get
at variables in @file{Local.rules} @emph{before} including
-@file{XEmacs.rules}.
+@file{XEmacs.rules}.
@c #### Add to "issues"
@item package-compile.el
@table @code
@item GNU cp
-@item GNU install
+@item GNU install
(or a BSD compatible install program).
-@item GNU make
+@item GNU make
(3.79 or later preferred).
-@item makeinfo
+@item makeinfo
(4.2 from texinfo-4.2)
@item GNU tar
(or equivalent).
@cindex package makefile targets
@chapter @file{Makefile} targets
The following targets can be used when running @code{make} to build the
-packages:
+packages:
@table @samp
@item mostlyclean
@item distclean
Use this when preparing a distribution. It kills anything that can be
-rebuilt.
+rebuilt.
@item extraclean
Does a @code{distclean} and also removes any backup files (@file{*~})
@item BUILD_WITHOUT_MULE
Set this to @samp{t} if you are using a non-Mule XEmacs. The default is
that this variable is not set (blank) which means to build @emph{with}
-Mule.
+Mule.
@item XEMACS_NATIVE_NT
Set this to @samp{t} if you are using a native Microsoft Windows build
@var{MULE_INSTALLED_PACKAGES_ROOT}. The default for this is
@file{/usr/local/lib/xemacs}. Which may not be what you want if you are
developing XEmacs. To quote the comments in
-@file{Local.rules.template}:
+@file{Local.rules.template}:
@quotation
If you are developing XEmacs, you probably don't want to install the
@item NONMULE_INSTALLED_PACKAGES_ROOT
This is where the non-Mule packages get installed to. The default is
-@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages}.
+@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages}.
@item MULE_INSTALLED_PACKAGES_ROOT
This is where the Mule packages get installed to. The default is
-@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages}.
+@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages}.
@item NONMULE_PACKAGES
A whitespace separated list of non-Mule packages to build/install.
@item BZIP2
The path to the bzip2 compression program. The default is unset
-(blank). If this is set @file{.tar.bz2} archives will be built
+(blank). If this is set @file{.tar.bz2} archives will be built
@emph{in addition to} the @file{.tar.gz} archives.
@item EXCLUDES
The path to your copy command (GNU cp). The default is dependent on
whether or not @var{symlink} is set (@samp{t}).
-If @var{symlink} is unset (blank), @var{RCOPY}'s default is
+If @var{symlink} is unset (blank), @var{RCOPY}'s default is
@code{cp -af}. If @var{symlink} is set (@samp{t}), @var{RCOPY}'s
default is @code{cp --force --recursive --symbolic-link}.
@end table
@table @samp
@item NAME
The name of the package. In the case of the example it is
-@samp{xemacs-base}.
+@samp{xemacs-base}.
@item standards-version
Part of the internal package infrastructure, its value should always be
@item author-version
This is the package's internal, or @samp{upstream} version number if it
has one. It is set from the @file{Makefile} variable
-@var{AUTHOR_VERSION}.
+@var{AUTHOR_VERSION}.
@item date
This is the date of the last change made to the package. It is
auto-generated at build time, taken from the package's toplevel
-@file{ChangeLog}.
+@file{ChangeLog}.
@item build-date
The date the package was built. It is auto-generated.
@item priority
An unused field, can be any of @samp{high}, @samp{medium}, or
-@samp{low}.
+@samp{low}.
@item category
The @samp{category} of the package. It is taken from the
@item size
The size in bytes of the package's binary tarball. Generated at build
-time.
+time.
@item provides
A whitespace separated list of @emph{all} the features the package
There isn't much to an @xpms{} @file{Makefile}, basically it just
contains a few @file{Makefile} variables and that's it. See the
-example.
+example.
Here is a real world example, from the @samp{build} package:
hackery contact the @email{xemacs-beta@@xemacs.org, XEmacs developers}.
We distribute over 100 packages so the chances are good that you won't
be the first to need such hackery and it is probably already catered
-for.
+for.
@subheading @file{Makefile} Variables Explained:
A number of @file{make} variables are defined by the @xpms{}. Some are
@end example
Would put the @var{ELCS_1} files for the package, @samp{foo} into
-@file{xemacs-packages/lisp/foo/extra/}.
+@file{xemacs-packages/lisp/foo/extra/}.
@item EARLY_GENERATED_LISP
For additional @file{.el} files that will be generated before any
byte-compilation time. You must write @file{Makefile} rules to build
these files.
-@item PRELOADS
+@item PRELOADS
This is used if you need to pass extra command line arguments to
XEmacs to build the package. For instance, a specification for
loading libraries containing macros before compiling the Lisp in the
@item PACKAGE_SUPPRESS
Place calls to @code{package-suppress} here to indicate Lisp libraries
that should only be available to particular versions of XEmacs. For
-example:
+example:
@example
PACKAGE_SUPPRESS = \
@item STANDARD_DOCS
Set this to @samp{t} if your package's Texinfo source file is located in
the package's toplevel directory @emph{and} is named
-@file{$(PACKAGE).texi}.
+@file{$(PACKAGE).texi}.
@item EXPLICIT_DOCS
Use this to explicitly list Texinfo sources that @emph{aren't} in the
@item DOCS_TXI_EXTENSION
Set this to @samp{t} if your Texinfo source files have a @samp{.txi}
-extension.
+extension.
@item EXTRA_DOC_FILES
Files listed here will be installed to @file{.../man/$(PACKAGE)/}. For
@item DATA_1_FILES ... DATA_35_FILES
For data files that need to go into a different directory from
-@var{DATA_DEST}.
+@var{DATA_DEST}.
@item DATA_1_DEST ... DATA_35_DEST
The name of the subdirectory for files specified in @var{DATA_n_FILES}.
@section Issues
To be completed.
-
@var{count} is negative). Normally it returns @code{t}. If this motion
encounters the beginning or end of the buffer, or the limits of the
accessible portion when narrowing is in effect, point stops there and
-the value is @code{nil}.
+the value is @code{nil}.
@var{count} defaults to @code{1} and @var{buffer} defaults to the
current buffer.
by default. @code{M-x describe-installation} will tell you if you do.
If you are building SXEmacs from source, you need to install PostgreSQL
-first (see above example). On some systems, PostgreSQL will come
+first (see above example). On some systems, PostgreSQL will come
pre-installed in /usr or /usr/local. In this case, it should be
autodetected when you run configure.
If PostgreSQL is installed into its default location (for example when
passing no @samp{--prefix} to the configure; @file{/usr/local/pgsql} is
default) you must specify @code{--site-prefixes=/usr/local/pgsql} when
-you run configure. If PostgreSQL is installed into another location,
+you run configure. If PostgreSQL is installed into another location,
use that instead of @file{/usr/local/pgsql} when specifying
@code{--site-prefixes}.
All versions of SXEmacs have been reported to work with PostgreSQL
versions 6.5, 7.x, and 8.x. SXEmacs Lisp support for V7.x and V8.x is
-somewhat more extensive than support for V6.5. In particular,
+somewhat more extensive than support for V6.5. In particular,
asynchronous queries are supported.
user types another @kbd{C-g}, that kills the subprocess instantly with
@code{SIGKILL} and quits immediately. @xref{Quitting}.
-Note: The synchronous subprocess functions returned @code{nil} in
+Note: The synchronous subprocess functions returned @code{nil} in
FSF Emacs 18. In version 19, they return an indication of how the
process terminated.
sentinel. @xref{Debugger}.
In earlier Emacs versions, every sentinel that did regexp searching or
-matching had to explicitly save and restore the match data.
-SXEmacs does this automatically; sentinels never need to do it
+matching had to explicitly save and restore the match data.
+SXEmacs does this automatically; sentinels never need to do it
explicitly. @xref{Match Data}.
@defun set-process-sentinel process sentinel
@defun open-network-server-stream name buffer-or-name host service &optional protocol acceptor filter sentinel
This function establishes listening for TCP connections for a service
to the local host. It returns a process object to represent the listening
-connection.
+connection.
When a new connection request arrives, it is automatically
accepted. A network-stream process is automatically created for that
for the new connection process .
Input and output work as for other process objects.
-@code{delete-process} closes the connection.
+@code{delete-process} closes the connection.
The @var{name} argument is name for process. It is modified if
specify an output stream or filter function to handle the output. No
real process output of listening process is expected. However the
name of this buffer will be used as a base for generating a new
-buffer name for the accepted connections.
+buffer name for the accepted connections.
If @var{buffer-or-name} is @code{nil}, this process is not
associated with any buffer. In this case a filter should be specified
-otherwise there will be no way to retrieve the process output.
+otherwise there will be no way to retrieve the process output.
When @var{buffer-or-name} is @code{auto} a buffer is automatically
created for the accepted connection.
calling it with three args, the beginning and end of the range and the
corresponding value.
@end defun
-
@item \C@var{category}
@cindex @samp{\C} in regexp
matches any character outside @var{category}. @xref{Category Tables},
-again, and note that this is only available under Mule.
+again, and note that this is only available under Mule.
@end table
The following regular expression constructs match the empty string---that is,
(plists-equal '(foo "hello" bar "goodbye") '(bar "goodbye" foo "hello"))
@result{} t
@end example
-
-
-
This command inserts the last character typed; it does so @var{count}
times, before point, and returns @code{nil}. Most printing characters
are bound to this command. In routine use, @code{self-insert-command}
-is the most frequently called function in SXEmacs, but programs rarely
+is the most frequently called function in SXEmacs, but programs rarely
use it except to install it on a keymap.
In an interactive call, @var{count} is the numeric prefix argument.
FSF Emacs supplies a notion of a @emph{text field}, which is a region
of text where every character has the same value of the @code{field}
property. It is used to identify regions of a buffer used for
-communicating with an external process, for example.
+communicating with an external process, for example.
SXEmacs supplies a compatible interface. In SXEmacs, the @code{field}
property can be set as either an extent property or a text property,
@c creation ++ o - -
@c prepend ++ -- - --
@c append ++ -- ++ --
-@c search -- o + +
-@c modify ++ + o ++
-@c sort - - - ++
+@c search -- o + +
+@c modify ++ + o ++
+@c sort - - - ++
@end itemize
in the library's main file.
@example
-(when
+(when
;; check if SXEmacs is build with ENT support (bigq submodule)
(and (featurep 'ent) (featurep 'bigq))
In Lisp mode and related modes, the @kbd{M-;}
(@code{indent-for-comment}) command automatically inserts such a
@samp{;} in the right place, or aligns such a comment if it is already
-present.
+present.
This and following examples are taken from the SXEmacs sources.
@code{cyclic-variable-indirection} error if there is a loop in the
variable chain of symbols.
@end defun
-
-
context of general-purpose window systems such as X, but not identical.
The X Window System places X windows on the screen; SXEmacs uses one or
more X windows as frames, and subdivides them into
-SXEmacs windows. When you use SXEmacs on a character-only terminal,
+SXEmacs windows. When you use SXEmacs on a character-only terminal,
SXEmacs treats the whole terminal screen as one frame.
@cindex terminal frame
@end deffn
@deffn Command enlarge-window-pixels count &optional side window
-This function makes the selected window @var{count} pixels larger.
+This function makes the selected window @var{count} pixels larger.
When called from Lisp, optional second argument @var{side}
non-@code{nil} means to grow sideways @var{count} pixels, and optional
third argument @var{window} specifies the window to change instead of
@comment node-name, next, previous, up
@node Customization Basics, Help, Edit, Top
-@chapter Customize key bindings and menus
+@chapter Customize key bindings and menus
@cindex init.el
@cindex customize
@findex eval-region
@end menu
@node Customizing key Bindings, Customizing Menus, Customization Basics, Customization Basics
-@section Customize key bindings
+@section Customize key bindings
@cindex key bindings
@cindex keystrokes
@noindent
then @kbd{C-p} will move to the next line and @kbd{C-n} to the previous
-line.
+line.
You can also disable a key binding, by using @samp{nil} as the @var{cmd}
in the syntax stated above. Here, @samp{nil} stands for @samp{false}
You can customize any of the SXEmacs Pull-down-Menus. You can create your
own menu, delete an existing one, enable a menu or disable a menu. For
more information on the default menus available to you, @xref{Pull-down
-Menus}.
+Menus}.
Some of the functions which are available to you for customization are:
@enumerate
@end example
@noindent
-@b{Replace String} will now execute the function
+@b{Replace String} will now execute the function
@code{replace-string}. Select this menu item. Emacs will prompt you for
-a string name to be replaced. Type a
+a string name to be replaced. Type a
string and hit @key{RET}. Now type a new string to replace the old
string and hit @key{RET}. All occurrences of the old string will be
replaced by the new string. In this example,
@samp{Edit} is the @var{menu-name} which identifies the menu into which
-the new menu item should be inserted.
+the new menu item should be inserted.
@samp{Replace String} is the @var{item-name} which names the menu item
-to be added.
+to be added.
@samp{replace-string} is the @var{function} i.e. the command to be
-invoked when the menu item "Replace String" is selected.
+invoked when the menu item "Replace String" is selected.
@samp{t} is the @var{enabled-p} parameter which controls whether the
menu item is selectable or not. This parameter can be either @code{t} (selectable), @code{nil} (not selectable), or a
form to evaluate. This form is evaluated just before the menu is
displayed, and the menu item will be selectable if the form returns
-non-@code{nil}.
+non-@code{nil}.
@samp{Clear} is the @var{&optional before} parameter which is the name
of the menu before which the new menu or sub-menu should be added. The
This will create a new menu @b{Bot} on the menu bar. Selecting this menu
will take you to the end of the buffer. Using @code{nil} for the
parameter @var{menu-name} will create a new menu. Your menu-bar
-will now look like:
+will now look like:
@example
File Edit Options Buffers Bot Help
This will create a sub-menu @b{Management} under the @b{File}
menu. When you select the submenu @b{Management}, it will contain three
-submenus: @b{Copy File}, @b{Delete File} and @b{Rename File}.
+submenus: @b{Copy File}, @b{Delete File} and @b{Rename File}.
@findex delete-menu-item
@cindex deleting menu items
@example
;; deletes the "Replace String" menu item created earlier
-(delete-menu-item '("Edit" "Replace String"))
+(delete-menu-item '("Edit" "Replace String"))
;; deletes the "Bot" menu created earlier
(delete-menu-item '("Bot"))
(delete-menu-item '("File" "File Management" "Copy File"))
;; deletes the sub-menu "Delete File" created earlier
-(delete-menu-item '("File" "Management" "Delete File"))
+(delete-menu-item '("File" "Management" "Delete File"))
;; deletes the sub-menu "Rename File" created earlier
(delete-menu-item '("File" "Management" "Rename File"))
@cindex disabling menu items
@item
disable-menu-item: (@var{menu-name})
-Disables the specified menu item. The following example
+Disables the specified menu item. The following example
@example
(disable-menu-item '("File" "Management" "Copy File"))
@cindex enabling menu items
@item
enable-menu-item: (@var{menu-name})
-Enables the specified previously disabled menu item.
+Enables the specified previously disabled menu item.
@example
(enable-menu-item '("File" "Management" "Copy File"))
@item
relabel-menu-item: (@var{menu-name} @var{new-name})
Change the string of the menu item specified by @var{menu-name} to
-@var{new-name}.
+@var{new-name}.
@example
(relabel-menu-item '("File" "Open...") "Open File")
@end example
This example will rename the @b{Open...} menu item from the @b{File}
-menu to @b{Open File}.
+menu to @b{Open File}.
@end enumerate
-
function name followed by arguments, all surrounded by parentheses. For
example, to turn on the auto-fill-mode (i.e. break lines automatically
when they become too long) , put the following line in your
-@file{init.el} file:
+@file{init.el} file:
@example
-(add-hook 'text-mode-hook
+(add-hook 'text-mode-hook
'(lambda() (auto-fill-mode 1)))
@end example
@noindent
Emacs has a function named "turn-on-auto-fill" which is defined as
"(lambda() (auto-fill-mode 1))". Therefore you can also write the above
-as:
+as:
@example
(add-hook 'text-mode-hook 'turn-on-auto-fill)
;;; the function names will now be displayed in blue color
(set-face-foreground 'font-lock-function-name-face "blue")
-;;; the comments will be displayed in forest green
+;;; the comments will be displayed in forest green
(set-face-foreground 'font-lock-comment-face "forest green")
@end example
@noindent
For other customizations regarding the font-lock face, look at the file
-@file{/usr/local/lib/sxemacs-VERSION/etc/sample.init.el}.
+@file{/usr/local/lib/sxemacs-VERSION/etc/sample.init.el}.
@end example
@noindent
-"setq" will assign the "new value" to the "variable-name" .
+"setq" will assign the "new value" to the "variable-name" .
If you want a list of the "options" i.e. the variables available for
you find any of them useful, just type them in your @file{init.el} file:
@itemize @bullet
-@item
+@item
The following expression will make @key{TAB} in C mode insert a real tab
character if the cursor or point is in the middle of the line. Now
hitting the @key{TAB} key will indent a line only if the cursor is at
@end example
@noindent
-This will change the value of this variable globally.
+This will change the value of this variable globally.
@item
@findex eval-expression
@noindent
Now when you use @var{eval-expression}, it will print the value of the
expression you specify in the @dfn{echo area} without confirming with
-you.
+you.
@item
This expression will remove the binding of @kbd{C-x C-c}, because its
@end example
@noindent
-@xref{Minor Modes}, for information on font-lock mode.
+@xref{Minor Modes}, for information on font-lock mode.
-@item
+@item
Rebinds the key @kbd{C-x l} to run the function
@code{make-symbolic-link}:
(global-set-key 'f2 'undo)
@end example
-@item
+@item
The following statement will display the current time in the modeline of
the buffer:
(display-time)
@end example
-@item
+@item
This displays the current line number on which the cursor is present in
the modeline:
Now if you use a command like @kbd{C-x C-p} (@code{mark-page}), the text
will not be highlighted.
-@item
+@item
To control the number of buffers listed when you select the @b{Buffers}
menu, you need to set the variable @code{buffers-menu-max-size} to
whatever value you wish. For example, if you want 20 buffers to be listed
@xref{Init File,,,sxemacs,SXEmacs User's Manual}. You should also look at
@file{/usr/local/lib/sxemacs-VERSION/etc/sample.init.el}, which is a sample
@file{init.el} file. It contains some of the commonly desired
-customizations in Emacs.
-
-
-
-
-
-
-
-
-
-
-
+customizations in Emacs.
can also learn the basic editing commands by typing @kbd{Control-h t}
(@code{help-with-tutorial} OR by selecting @b{Emacs Tutorial} from the
@b{Help} menu on the menu bar. Most of the Emacs commands will use the
-@key{CONTROL} key or the @key{META} key. The following abbreviations
+@key{CONTROL} key or the @key{META} key. The following abbreviations
will be used for the @key{CONTROL} and @key{META} key in this manual:
@table @kbd
@item C-<chr>
This means that you should hold down the @key{CONTROL} key while typing
@kbd{<chr>}. For example, if the command is @kbd{C-g}, you should hold
-the @key{CONTROL} key and type @key{g}.
+the @key{CONTROL} key and type @key{g}.
@item M-<chr>
This means that you should hold down the @kbd{META} key while typing
@kbd{<chr>}. If there is no @kbd{META} key on your keyboard, use the
@table @key
@item SPC
-Space bar.
+Space bar.
@item RET
Return key.
@item LFD
Linefeed key.
@item TAB
-Tab.
+Tab.
@item ESC
Escape.
@item SFT
-Shift.
+Shift.
@end table
@comment node-name, next, previous, up
* Insert:: Insert text in Emacs by simply typing at
the cursor position.
* Cursor Position:: Moving Around the cursor in the buffer,
-* Erase:: Different commands for erasing text
+* Erase:: Different commands for erasing text
* Numeric Argument:: Giving Numeric Arguments to commands
* Undo:: Undoing Changes made by mistake
@end menu
into the buffer at the cursor. The cursor moves forward, but if you
prefer to have text characters replace (overwrite) existing text
characters, you can enable the @b{Overstrike} option from the
-@b{Options} menu in the menu bar.
+@b{Options} menu in the menu bar.
@kindex DEL
@cindex deletion
@findex goto-line
@table @kbd
@item C-b
-Move the cursor backward one character (@code{backward-char}).
+Move the cursor backward one character (@code{backward-char}).
@item C-f
Move the cursor forward one character (@code{forward-char}).
@item C-p
@end example
@noindent
-You should then type in a number right after the colon
+You should then type in a number right after the colon
and hit the @kbd{RETURN} key again. After reading a number @var{n} this
command will move the cursor to character number @var{n}.
Position 1 is the beginning of the buffer. For example, if you type
@table @kbd
@item @key{DEL}
-If you press @key{DEL} i.e. the @dfn{delete} key, it will delete the
+If you press @key{DEL} i.e. the @dfn{delete} key, it will delete the
character before the cursor (@code{delete-backward-char}).
@item C-d
This will delete the character after the cursor (@code{delete-char}).
Type any char and press the @key{RET} key. For example, if you type
@samp{p} then the entire text starting from the position of the cursor
-until the first occurrence of @samp{p} is killed.
+until the first occurrence of @samp{p} is killed.
@end table
@kindex C-x u
@item C-x u
Undo one batch of changes (usually, one command's worth).
-(@code{undo}).
+(@code{undo}).
@item C-_
The same as above, but this command might not be obvious to type on some
keyboards so it might be better to use the above command.
@xref{Undoing Changes,,,sxemacs,SXEmacs User's Manual}, for more information on
undoing changes.
-
-
-
-
-
-
-
-
-
-
Manual}.
@item File
-A @b{file} is a region of disk space holding characters. Emacs edits a file by
-reading it into a buffer, editing that buffer and writing out the buffer
+A @b{file} is a region of disk space holding characters. Emacs edits a file by
+reading it into a buffer, editing that buffer and writing out the buffer
back to the file. To save your work permanently you have to write it to a file.
So after you load and work with a file, you have to save it back.
@item Windows
-A @b{window} is a rectangular region in which a buffer is displayed. You can
-open multiple windows with multiple buffers and edit them by selecting the
-corresponding buffer. Initially, when you start emacs, it will automatically
+A @b{window} is a rectangular region in which a buffer is displayed. You can
+open multiple windows with multiple buffers and edit them by selecting the
+corresponding buffer. Initially, when you start emacs, it will automatically
open up a window for you.
@end table
@cindex entering SXEmacs
To enter Emacs type @kbd{sxemacs} and press the Return key at the
-shell i.e. @kbd{sxemacs @key{RET}}.
+shell i.e. @kbd{sxemacs @key{RET}}.
This will bring up an emacs window with @samp{*scratch*} as the default
-buffer because Emacs must always have a buffer to work on. Then choose
-the @b{Open...} option from the @b{File} menu on the menubar at the top
+buffer because Emacs must always have a buffer to work on. Then choose
+the @b{Open...} option from the @b{File} menu on the menubar at the top
of the frame. It will prompt you to enter a filename. After you enter
the filename, Emacs will read that file into the current buffer. You can
also type :
@example
-@kbd{sxemacs <filename> @key{RET}}
+@kbd{sxemacs <filename> @key{RET}}
@end example
directly which will bring up
-an Emacs frame with the @dfn{filename} as the buffer.
-
+an Emacs frame with the @dfn{filename} as the buffer.
-@comment
+
+@comment
@node Frame, Exiting, Enter, Entering
@section Emacs Frame
@cindex open another file
The Emacs frame has a rectangle shaped box at the extreme right and you can
drag it up or down to scroll the window accordingly. Clicking on the
-arrows also serves the same purpose.
+arrows also serves the same purpose.
The last line in your window is @samp{the Mode line} which will give
you a description of what's going on in that particular
window. @xref{Mode Line}, for more
information. Below the mode line is the @samp{Echo area}. Emacs uses
-this area to interact with the user. @xref{Echo Area}.
+this area to interact with the user. @xref{Echo Area}.
If you wish to open another file in a new window after you enter
SXEmacs, select @b{Open in New Frame...} from the @b{File} menu, which
@cindex shrinking SXEmacs frame
There are two commands for exiting Emacs, one for @dfn{suspending} Emacs
-and the other for @dfn{killing} Emacs. @dfn{Suspending} means stopping
-Emacs temporarily and returning control to the shell, allowing you to
-resume editing
+and the other for @dfn{killing} Emacs. @dfn{Suspending} means stopping
+Emacs temporarily and returning control to the shell, allowing you to
+resume editing
later in the same Emacs job, with the same files, same kill ring, same
undo history, and so on. This is the usual way to exit. @dfn{Killing}
Emacs means destroying the Emacs job. You can run Emacs again later,
but you will get a fresh Emacs; there is no way to resume the same
-editing session after it has been killed.
+editing session after it has been killed.
@kindex C-z
@findex suspend-emacs
@kindex C-x C-c
@findex save-buffers-kill-emacs
-
+
@table @kbd
@item C-z
Suspend Emacs (@code{suspend-emacs}). If used under the X window system,
-this command will shrink the X window containing the Emacs frame to an
+this command will shrink the X window containing the Emacs frame to an
icon. Clicking on the icon will resume that Emacs process
-again. @xref{Exiting Emacs,,,sxemacs,SXEmacs User's Manual}.
+again. @xref{Exiting Emacs,,,sxemacs,SXEmacs User's Manual}.
@item C-x C-c
-Kill Emacs (@code{save-buffers-kill-emacs}). You can also select
+Kill Emacs (@code{save-buffers-kill-emacs}). You can also select
@b{Exit Emacs} option from the @b{File} menu to kill that Emacs
process. If you haven't saved the file, Emacs will ask you if you wish
-to save the file before killing that process.
+to save the file before killing that process.
@end table
is @file{myfile}, you will type @file{myfile} after
@file{/usr/lib/x11/} and press the @key{Return} key. If you pause for
more than a second while typing, you will see the characters that you
-type in the @dfn{echo area}.
+type in the @dfn{echo area}.
@item
The @dfn{echo area} also prints error messages. For example, if you
misspell @samp{usr} and type @file{/urs/lib/x11/myfile} @key{RETURN} in
-the above example you might get an error message. Since
-Emacs will not be able to find the @file{/urs}
+the above example you might get an error message. Since
+Emacs will not be able to find the @file{/urs}
directory, the @dfn{echo area} will say:
@example
Area,,,sxemacs,SXEmacs User's Manual}, for more information on the @dfn{echo
area}.
@end itemize
-
-
-
-
-
-
the user about the lock and provide some
options. For more information on protection against simultaneous
editing, @xref{Interlocking,,,sxemacs,SXEmacs User's Manual}.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@end menu
@node The Help Menu, , Help, Help
-@section Help menu
+@section Help menu
@cindex help
When you click on the Help menu with any of the mouse buttons you will
Selecting this item will take you to the Info page which is the online
documentation browsing system. You can simply click on the highlighted
items and "Info" will take you to the document providing information
-about that topic.
+about that topic.
@item Describe Mode
After you select this item, you will get a documentation on the major
Now you can give any string name, for example "mode" and hit
@key{RET}. You will get a listing of all the variables and commands
containing that string i.e "mode" with a short description of its
-function.
+function.
@item List Keybindings
Select this item and you will get a listing of all the keys and the
@end example
@noindent
These keybindings apply only to "Texinfo" mode. @xref{Modes}, for more
-information on various modes.
+information on various modes.
@item Describe Key...
After you select this item, you will be see the following message in the
If you hit @key{RET} without giving a function name, you will get
documentation for that default function name, otherwise if you type a
function name and hit @key{RET}, you will get documentation for the
-given function.
+given function.
@kindex C-h k
@item Describe Variable...
You can get documentation on any variable by selecting this menu
item. It is similar to @b{Describe Function} and will prompt you for a
-variable name.
+variable name.
@item Unix Manual...
After you select this item you will be prompted for a Unix command for
@item Emacs Tutorial
Select this item and you will get a tutorial on Emacs. It is good for new
-users.
+users.
@item Emacs News
Select this item and you will get a lot of historical and current news
-on Emacs !
+on Emacs !
@end table
For more information on the Help facility, @xref{Help,,,sxemacs,SXEmacs
User's Manual}.
-
-
-
-
-
-
-
-
-
-
-
-
time. Emacs can only be in one major mode at any time, but it can turn
on several minor modes at the same time. After you have selected any
major or minor mode, you can select @b{Describe Mode} from the @b{Help}
-menu and you will get documentation about those modes.
+menu and you will get documentation about those modes.
@comment node-name, next, previous, up
@menu
Some of the available modes in SXEmacs are :
@table @b
-@item fundamental-mode
+@item fundamental-mode
@cindex fundamental-mode
When you start SXEmacs, usually you start with the default "Fundamental"
-mode. This mode has no special definitions or settings.
+mode. This mode has no special definitions or settings.
@item nroff-mode
@cindex nroff-mode
turn on or off. Any number of minor modes can be active at the same time
with any major mode. You can enable a minor mode in one buffer and
disable it in other mode. To enable a minor mode, for example the
-font-lock mode type the following command:
+font-lock mode type the following command:
@example
M-x font-lock-mode
command, it will turn the mode on if it was off, OR it will turn it off
if it was on i.e. it toggles. Look at the mode-line at the bottom of the
frame. If it says FLock in parentheses, then it means that this
-mode is on, otherwise it is off.
+mode is on, otherwise it is off.
The following are some of the minor modes available in SXEmacs. To enable
any one of them type "M-x" in front of them.
You can also choose this mode by selecting the @b{Syntax Highlighting}
menu item from the @b{Options} menu on the menu-bar at the
-top. If you wish to have this mode enabled permanently, choose
+top. If you wish to have this mode enabled permanently, choose
@b{Save Options} from the @b{Options} menu. @xref{Options Menu}, for
more information on the Options menu. You can also add statements in
your @file{init.el} file. For each major mode in which you wish to
enable this minor mode, you need a statement in your @file{init.el}
file. The following example shows how to enable the font-lock mode when
-the major mode is c-mode.
+the major mode is c-mode.
@example
(add-hook 'c-mode-hook 'turn-on-font-lock)
keywords in different colors and fonts. When you select @b{More} from
the @b{Syntax Highlighting} option, you get very detailed display of
colors and fonts; function names within comments themselves might appear
-in a different font and color.
+in a different font and color.
@item auto-fill-mode
@findex auto-fill-mode
Enabling this mode will provide automatic word-wrapping. The @key{SPC}
key will break lines i.e. insert newlines as you type to prevent lines
-from becoming too long.
+from becoming too long.
@item overwrite-mode
@cindex overwrite-mode
When you enable this mode, the text that you type will replace the
existing text rather than moving it to the right (the default case). You
can enable this mode by selecting @b{Overstrike} menu-item from the
-@b{Options} menu from the menu-bar.
+@b{Options} menu from the menu-bar.
@item abbrev-mode
@cindex abbrev-mode
some different text i.e. you can define abbreviations. For example, you
might define "expand" to "expand will eventually expand to this
text". After this definition you will be able to get "expand will
-eventually expand to this text" simply by typing
+eventually expand to this text" simply by typing
@example
-expand @key{SPC}
+expand @key{SPC}
@end example
@noindent
@item line-number-mode
@cindex line-number-mode
After you enable this mode, the line number at which your cursor is
-present will be displayed continuously in the mode line.
+present will be displayed continuously in the mode line.
@item blink-paren
@cindex blink-paren
-To enable this command, just type
+To enable this command, just type
@example
M-x blink-paren
@end example
For information on some other modes, look at the SXEmacs User's Manual
and the associated files.
-
Emacs is the extensible, customizable, self-documenting real-time
-display editor. This Info file will help you get started on using
+display editor. This Info file will help you get started on using
SXEmacs. It corresponds to SXEmacs version 19.13.
@end ifnottex
using Emacs on a specially designed file which describes commands, tells
you when to try them, and then explains the results you see.
- The first few chapters will introduce you to some basic Emacs commands.
-Later on, some examples of simple customizations will be shown.
+ The first few chapters will introduce you to some basic Emacs commands.
+Later on, some examples of simple customizations will be shown.
To find the documentation on a particular command, look in the index.
Keys (character commands) and command names have separate indexes. There
* Modes:: Major and Minor modes in SXEmacs
* Files:: Visiting, Saving and Listing Files
* Other Customizations:: Customizing Variables, Modes, etc
-* Select and Move:: Selecting text and moving text
+* Select and Move:: Selecting text and moving text
* Search and Replace:: Searching and Replacing text
* Insert:: Insert text in Emacs by simply typing at
the cursor position.
* Cursor Position:: Moving Around the cursor in the buffer,
-* Erase:: Different commands for erasing text
+* Erase:: Different commands for erasing text
* Numeric Argument:: Giving Numeric Arguments to commands
* Undo:: Undoing Changes made by mistake
-Customize key bindings and menus
+Customize key bindings and menus
* Customizing key Bindings:: Changing Key Bindings
* Customizing Menus:: Adding, Deleting, Enabling and Disabling Menus
Help
-* The Help Menu:: Items on the Help Menu
+* The Help Menu:: Items on the Help Menu
Major and Minor Modes
* Selecting Text:: Select a region of text by setting the Mark
* Mouse:: Selecting Text with Mouse
* Region Operation:: Various ways to operate on a selected text
-* Moving Text:: Moving Text
+* Moving Text:: Moving Text
* Accumulating text:: Accumulating Text from several buffers
No sub menu for the node search and replace
@bindingoffset = 0.5in
@parindent = 0pt
@end iftex
-
@itemize @bullet
@item
You use special keys to select text by defining a region between the
-cursor and @dfn{the mark} (which you set).
+cursor and @dfn{the mark} (which you set).
@item
If you are running SXEmacs under X, you can also select text
-with the mouse.
+with the mouse.
@end itemize
@comment node-name, next, previous, up
* Selecting Text:: Select a region of text by setting the Mark
* Mouse:: Selecting Text with Mouse
* Region Operation:: Various ways to operate on a selected text
-* Moving Text:: Moving Text
+* Moving Text:: Moving Text
* Accumulating text:: Accumulating Text from several buffers
@end menu
@findex mark-beginning-of-buffer
@findex mark-end-of-buffer
@findex exchange-point-and-mark
- To define a region you need to set @dfn{the mark} at one end of it and
+ To define a region you need to set @dfn{the mark} at one end of it and
move the cursor to the other end. Once you set the mark, it remains
there until you set it again to some other place. Each buffer has its
own @dfn{mark ring} (a place where Emacs remembers 16 previous
@item C-@key{SPC}
This command will set @dfn{the mark} at the position of your cursor
(@code{set-mark-command}). You can move your cursor around and @dfn{the
-mark} will stay there.
+mark} will stay there.
@item C-x C-x
Interchange mark and point (@code{exchange-point-and-mark}). Since Emacs
will have only one cursor, after you move the cursor it will be unable
mark} you can type the command @kbd{C-x C-x} which will put your cursor
on the position of your mark and your mark on the position of your
cursor. Use the command again to reset the positions of your cursor and
-mark.
+mark.
@item C-<
This command will push the mark at the beginning of the buffer without
changing the position of your cursor.
Move the mouse cursor over the character at the beginning of the region of
text you want to select.
@item
-Press and hold the left mouse button.
+Press and hold the left mouse button.
@item
While holding the left mouse button down, drag the cursor to the
character at the end of the region of text you want to select.
You can convert the case of the text with @kbd{C-x C-l} or @kbd{C-x C-u}
If you type @kbd{C-x C-u} the selected text will become all
upper-case. If you type @kbd{C-x C-l} the selected text will become all
-lower-case.
+lower-case.
@item
Print hardcopy with @kbd{M-x
print-region}. @xref{Hardcopy,,,sxemacs,SXEmacs User's Manual}, for more
The most common way to move or copy text in Emacs is through
@dfn{killing} or @samp{cutting} it and then @dfn{yanking} or
@samp{pasting} it. You can also use the @b{Cut} or @b{Copy} option from
-the @b{Edit} menu for killing and copying respectively. @xref{Edit menu},
+the @b{Edit} menu for killing and copying respectively. @xref{Edit menu},
for reviewing the commands for killing text. All the killed text
in Emacs is recorded in the @dfn{kill ring}. Since there is only one
kill ring in Emacs, you can kill text in one buffer and yank it in
-another buffer. To @samp{paste} or
+another buffer. To @samp{paste} or
@samp{yank} the killed text you can use the following commands:
@table @kbd
@item C-y
Append next kill to last batch of killed text
(@code{append-next-kill}). This command will append whatever you killed
last to what you kill now. Then later you will be able to yank the
-entire appended text from the @dfn{kill ring}.
+entire appended text from the @dfn{kill ring}.
@end table
@comment node-name, next, previous, up
The following commands can be used for accumulating text from
different buffers into one place or for copying one region of text into
-many buffers:
+many buffers:
@table @kbd
@item M-x append-to-buffer
@key{RET}, Emacs will prompt you for a buffer name. You will see a
message in the echo area:
@example
-Append to buffer: (default <buffer name>)
+Append to buffer: (default <buffer name>)
@end example
@noindent
After you type in a buffer name, a copy of the region will be inserted
@noindent
@xref{Accumulating Text,,,sxemacs,SXEmacs User's Manual}, for more
information regarding this topic.
-
+
You can also use @dfn{rectangle commands} for operating on rectangular
areas of text. @xref{Rectangles,,,sxemacs,SXEmacs User's Manual}, for more
information regarding rectangle commands.
store @dfn{regions}, a @dfn{rectangle}, or a @dfn{mark} i.e. a cursor
position. Whatever you store in register stays there until you store
something else in that register. To find out about commands which
-manipulate registers @xref{Registers,,,sxemacs,SXEmacs User's Manual}.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+manipulate registers @xref{Registers,,,sxemacs,SXEmacs User's Manual}.
@findex delete-window
@findex delete-other-windows
@findex scroll-other-window
-
+
The first section of this chapter will show you how you can manipulate
SXEmacs Windows and the other section will explain the Pull-down Menus of
an SXEmacs window.
@table @kbd
@item M-C-v
@findex scroll-other-window
-This command will scroll the window which is not @dfn{selected}
+This command will scroll the window which is not @dfn{selected}
(@code{scroll-other-window}).
@findex delete-window
sole remaining window on that frame deletes the frame as well. If the
current frame is the only frame, it is not deleted.
-@findex delete-other-windows
+@findex delete-other-windows
@item C-x 1
-This command will get rid of all the windows except the selected one.
+This command will get rid of all the windows except the selected one.
(@code{delete-other-windows}). For example, if you use the @b{Describe
variable} option from the @b{Help} menu, the window will split
vertically and the bottom window will contain documentation for that
@kbd{C-x 1} after your cursor is in the top window (the window which you
want to keep) and hit @key{RET}.
-@findex split-window-vertically
+@findex split-window-vertically
@item C-x 2
This command will split the selected window into two windows, one above
the other (@code{split-window-vertically}). Both the windows will start
@noindent
You can select a buffer in another window by using some other
-commands. These commands all have a prefix key @kbd{C-x 4}
+commands. These commands all have a prefix key @kbd{C-x 4}
@table @kbd
@kindex C-x 4 b
@kindex C-x 4 f
@b{Rmail}.
@end table
-
+
If you click the right button on the mouse on a mode line, you will
get a menu with following options:
@cindex windows
@item Delete Other Windows
Delete all windows on the frame except for the one above this modeline.
@item Split Window
-Split the window above the mode line in half, creating another window.
+Split the window above the mode line in half, creating another window.
@item Split Window Horizontally
Split the window above the mode line in half horizontally, so that there
will be two windows side-by-side.
the echo area:
@example
-Find File:
+Find File:
@end example
@noindent
After Find File, there might be a directory path also. After you type
the file name and press @key{RET} the file will be loaded into a new
-buffer.
+buffer.
@item Open in New Frame...
It prompts you for a file name and loads that file in a new buffer in
a new frame. You can open many frames for the same Emacs session. You
-can delete the frame by selecting @b{Delete Frame}.
+can delete the frame by selecting @b{Delete Frame}.
@item Insert File...
Prompts you for a filename and inserts the contents of this filename in
@item Split Frame
Splits the current window into two equal-sized windows with the same
buffer. To get back a single frame, select @b{Un-Split (Keep
-This)}. @xref{SXEmacs Window}, for more information about windows.
+This)}. @xref{SXEmacs Window}, for more information about windows.
@item Un-Split (Keep This)
If the frame contains multiple windows, it will remove all windows
-except the selected one.
+except the selected one.
@item Un-Split (Keep Others)
If the frame contains multiple windows, it will remove the selected
@item Kill Buffer <buffername>
It will kill the current buffer. If will prompt you if there are unsaved
-changes.
+changes.
@item Exit Emacs
It will kill the Emacs @dfn{process} as opposed to simply killing the
@dfn{buffer}. Before it kills the process, it will prompt you as to
which unsaved buffers you wish to save by going through the list of the
-buffers.
+buffers.
@end table
Most of the commands in this menu work on a block of text or a selected
region. The text will be highlighted as you select it.
@table @b
-@item Undo
+@item Undo
Undoes the previous command. If you type something by mistake you can
use this command. For example, if you select @b{Insert File...} from the
@b{File} menu and insert a wrong file by mistake, you can select this
@item Cut
Removes the selected text block from the current buffer, makes it the X
-clipboard selection, and places it in the kill ring
+clipboard selection, and places it in the kill ring
(@pxref{Moving Text}). Before executing this command, you have to select
a region using Emacs region selection commands or with the
-mouse. @xref{Selecting Text}.
+mouse. @xref{Selecting Text}.
-@item Copy
+@item Copy
Makes a selected text block the X clipboard selection, and places it in
the kill ring. You can select text using one of the Emacs region
selection commands or by selecting a text region with the
mouse. @xref{Selecting Text}, for more information.
-@item Paste
+@item Paste
Inserts the current value of the X clipboard selection in the current
buffer. Note that this is not necessarily the same as the Emacs
@code{yank} command, because the Emacs kill ring and the X clipboard
@item Start Macro Recording
After selecting this, Emacs will remember every keystroke you type until
-@b{End Macro Recording} is selected.
+@b{End Macro Recording} is selected.
@item End Macro Recording
-Selecting this tells emacs to stop remembering your keystrokes.
+Selecting this tells emacs to stop remembering your keystrokes.
@item Execute Last Macro
Selecting this item will cause emacs to re-interpret all of the
@table @b
@item Read Only
-Selecting this item will cause the buffer to visit the file in a
-read-only mode. Changes to the file will not be allowed.
+Selecting this item will cause the buffer to visit the file in a
+read-only mode. Changes to the file will not be allowed.
@item Case Sensitive Search
-Selecting this item will cause searches to be case-sensitive. If
-its not selected then searches will ignore case. This option is
+Selecting this item will cause searches to be case-sensitive. If
+its not selected then searches will ignore case. This option is
local to the buffer. For example, if this item is selected and you are
searching for @samp{Smile}, then an occurrence of @samp{smile} will not
be recognized because of the smaller case of @samp{s}.
@item Overstrike
-After selecting this item, when you type letters they will replace
-existing text on a one-to-one basis, rather than pushing it to the
-right. At the end of a line, such characters extend the line. Before
-a tab, such characters insert until the tab is filled in.
+After selecting this item, when you type letters they will replace
+existing text on a one-to-one basis, rather than pushing it to the
+right. At the end of a line, such characters extend the line. Before
+a tab, such characters insert until the tab is filled in.
@item Auto Delete Selection
-Selecting this item will cause automatic deletion of the selected
+Selecting this item will cause automatic deletion of the selected
region. After you select a region and hit the @key{RET} key, the
selected text will be deleted. The typed text will replace the selection
if the selection is active (i.e. if its highlighted). If the option is
not selected then the typed text is just inserted at the cursor.
@item Teach Extended Commands
-After you select this item, any time you execute a command with
-@kbd{M-x} which has a shorter keybinding, you will be shown the
+After you select this item, any time you execute a command with
+@kbd{M-x} which has a shorter keybinding, you will be shown the
alternate binding before the command executes. For example if you type
@kbd{M-x find-file-other-window} which performs the same function as the
@b{Open in Other Window...} in @b{File} menu you will see the following
@example
M-x find-file-other-window (bound to keys: C-x 4 f, C-x 4 C-f)
-@end example
+@end example
@item Syntax Highlighting
You can customize your @code{init.el} file to include the font-lock mode
name @dfn{within} the comments might appear in red color.
@item Paren Highlighting
-After selecting @b{Blink} from this item, if you place the cursor
-on a parenthesis, the matching parenthesis will blink. If you select
-@b{Highlight} and place the cursor on a parenthesis, the whole
-expression of the parenthesis under the cursor will be highlighted.
-Selecting @b{None} will turn off the options (regarding @b{Paren
+After selecting @b{Blink} from this item, if you place the cursor
+on a parenthesis, the matching parenthesis will blink. If you select
+@b{Highlight} and place the cursor on a parenthesis, the whole
+expression of the parenthesis under the cursor will be highlighted.
+Selecting @b{None} will turn off the options (regarding @b{Paren
Highlighting}) which you had selected earlier.@refill
@item Font
-You can select any Font for your program by choosing from one of the
+You can select any Font for your program by choosing from one of the
available Fonts. The whole buffer will be converted to the Font you select.
@item Size
of your buffer.
@item Buffers Menu Length...
-Prompts you for the number of buffers to display. Then it will display
+Prompts you for the number of buffers to display. Then it will display
that number of most recently selected buffers.
@item Buffers Sub-Menus
-After selection of this item the Buffers menu will contain several
-commands, as submenus of each buffer line. If this item is unselected,
-then there are no submenus for each buffer line, the only command
+After selection of this item the Buffers menu will contain several
+commands, as submenus of each buffer line. If this item is unselected,
+then there are no submenus for each buffer line, the only command
available will be selecting that buffer.
@item Save Options
-Selecting this item will save the current settings of your Options
+Selecting this item will save the current settings of your Options
menu to your @code{init.el} file so that the next time you start SXEmacs,
you won't need to select the options again.
@end table
@cindex Help menu
The Help Menu gives you access to Emacs Info and provides a menu
-equivalent for some of the choices you have when using @kbd{C-h}.
-@xref{Help}, for more information.
+equivalent for some of the choices you have when using @kbd{C-h}.
+@xref{Help}, for more information.
The @b{Describe variable} and @b{Describe function} will provide
documentation for the corresponding variable or function. The Help menu
also gives access to UNIX online manual pages via the @b{UNIX Manual...}
-option.
-
-
-
-
-
-
-
-
-
+option.
where you'll find release tarballs and release to release patches
available for download.
-@uref{http://downloads.sxemacs.org/snapshots/, SXEmacs snapshot downloads}
+@uref{http://downloads.sxemacs.org/snapshots/, SXEmacs snapshot downloads}
is where you can find snapshot tarballs which are uploaded from time
to time. Please note that these snapshots can sometimes be very
unstable.
Whenever you see unscrupulous people carrying your nickname or your
nickname is ghosted because of a reconnection, you can just
-@code{/nickserv ghost <yournickname> <yourpassword>} to send the
+@code{/nickserv ghost <yournickname> <yourpassword>} to send the
other client to oblivion.
Okay, now that you've registered yourself with freenode, you're
nickname can be referred to, independently from whether you are
carrying that nick or not. Just do @code{/nickserv info <nickname>}
-to obtain some information on a nickname you see and like to refer
+to obtain some information on a nickname you see and like to refer
to.
@item
HowTo to be listed in the channel access list
@enumerate
@item
-A diff is always sent to
+A diff is always sent to
@email{sxemacs-patches@@sxemacs.org, SXEmacs Patches}.
@item
-The diff is always in @dfn{unified} format
+The diff is always in @dfn{unified} format
@code{diff -u oldfile newfile}
@end enumerate
From time to time someone will wander into the mailing list or our
IRC channel saying something like "ya know, SXEmacs is cool, but it
would truly @emph{rock} if it had @dfn{fooble-klangers}. How 'bout
-it guys? Can somebody please add @dfn{fooble-klangers} to SXEmacs?".
+it guys? Can somebody please add @dfn{fooble-klangers} to SXEmacs?".
@emph{That's} a @dfn{Feature Request}.
SXEmacs Devel} and comp.emacs.xemacs.
@item
-Make a new release and announcement on Freshmeat (our FM id: 52281)
+Make a new release and announcement on Freshmeat (our FM id: 52281)
@item
Commit the first patch to the next version, which would be adding a
-@file{ChangeLog.d/ChangeLog-@nver}
+@file{ChangeLog.d/ChangeLog-@nver}
@end itemize
How do you get a new feature into SXEmacs? It's not hard, but
remember this, we look at any new feature in this order of
-priority...
+priority...
@enumerate 1
@item
A plan of action with a willingness to write the code.
@item
An idea with a willingness to move it to a real plan and then to
-code.
+code.
@item
An idea with a willingness to help test any code resulting from it.
@item
A git repo that others have read
access to .
* Setting up a private repos:: A git repo only you have access to.
-* Other Developers' Repositories:: Git repos of regular developers of
+* Other Developers' Repositories:: Git repos of regular developers of
SXEmacs.
@end menu
Take note that the SXEmacs mailing lists will funnel any post from
non-subscribers into the moderation queue. So make sure that the
address you set @dfn{hooks.envelopesender} to is subscribed to the
-patches list.
+patches list.
-Also be aware that using this @dfn{post-receive} hook will mean that
+Also be aware that using this @dfn{post-receive} hook will mean that
every time you push to your publicly accessible repo, a message will be
-sent to sxemacs-patches; this includes instances where you merely
-are pulling the latest from mainline and mirroring. Hence, the use of
-aliases as discussed below may be preferable.
+sent to sxemacs-patches; this includes instances where you merely
+are pulling the latest from mainline and mirroring. Hence, the use of
+aliases as discussed below may be preferable.
@subsection @anchor{Automating with Aliases}Automating with Aliases
@c download the faq} in info format, and install it in @file{<XEmacs
@c library directory>/info/}. For example in
@c @file{/usr/local/lib/xemacs-21.4/info/}.
-@c
+@c
@c @end itemize
-@c
+@c
@c @end html
-@c
+@c
@c @end ifset
-@c
+@c
@c end ifset points to CANONICAL
@menu
Here is a list of some of the reasons why we think you might
consider using it:
-
+
@itemize @bullet
@item
It looks nicer.
-
+
@item
The XEmacs and SXEmacs maintainers, especially the SXEmacs
maintainers, are generally more receptive to suggestions than the GNU
@item
Better APIs (and performance) for attaching fonts, colors, and other
properties to text.
-
+
@c @c does not apply anymore
@c @item
@c The ability to embed arbitrary graphics in a buffer.
@unnumberedsec Q1.1.1: What is the FAQ editorial policy?
The FAQ is actively maintained and modified regularly. All links should
-be up to date.
+be up to date.
If you think you have a better way of answering a question, or think a
question should be included, we'd like to hear about it.
@c @html
@c <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br>
@c @end html
-@c
-@c
+@c
+@c
@c @item @email{stephen@@xemacs.org, Stephen Turnbull}
-@c
-@c
+@c
+@c
@c @item @email{ben@@xemacs.org, Ben Wing}
@c @html
@c <br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
@c @end html
-@c
-@c
+@c
+@c
@c @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
-@c
+@c
@c @html
@c <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br>
@c @end html
-@c
+@c
@c @end itemize
-@c
+@c
@c The developers responsible for older releases were:
-@c
+@c
@c @itemize @bullet
@c @item @email{steve@@xemacs.org, Steve Baur}
-@c
+@c
@c @html
@c <br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
@c @end html
-@c
+@c
@c @item @email{cthomp@@xemacs.org, Chuck Thompson}
@c @html
@c <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
@c @end html
-@c
+@c
@c @item @email{jwz@@jwz.org, Jamie Zawinski}
@c @html
@c <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
@c @end html
-@c
+@c
@c @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
-@c
+@c
@c Steve Baur was the primary maintainer for 19.15 through 21.0.
-@c
+@c
@c Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
@c and heavy code contributors for 19.8 through 19.10.
-@c
+@c
@c Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
@c history of Lucid Emacs). Richard Mlynarik was a heavy code contributor
@c to 19.6 through 19.8.
-@c
+@c
@c @end itemize
-@c
+@c
@c Along with many other contributors, partially enumerated in the
@c @samp{About XEmacs} option in the Help menu.
@c On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc
@c 5.2.18, XEmacs 20.0b20 is unable to open a tty device:
@c @c oh great
-@c
+@c
@c @example
@c src/xemacs -nw -q
@c Initialisation error:
@c @end iftex
@c Terminal type `xterm' undefined (or can't access database?)
@c @end example
-@c
+@c
@c @email{ben@@xemacs.org, Ben Wing} writes:
-@c
+@c
@c @quotation
@c Your ncurses configuration is messed up. Your /usr/lib/terminfo is a
@c bad pointer, perhaps to a CD-ROM that is not inserted.
@c @c WHOOOOOOOAT?!?!
@c Not necessarily. If you have GNU sed 3.0 you should downgrade it to
@c 2.05. From the @file{README} at prep.ai.mit.edu:
-@c
+@c
@c @quotation
@c sed 3.0 has been withdrawn from distribution. It has major revisions,
@c which mostly seem to be improvements; but it turns out to have bugs too
@c which cause trouble in some common cases.
-@c
+@c
@c Tom Lord won't be able to work fixing the bugs until May. So in the
@c mean time, we've decided to withdraw sed 3.0 from distribution and make
@c version 2.05 once again the recommended version.
@c @end quotation
-@c
+@c
@c It has also been observed that the vfork test on Solaris will leave a
@c core dump.
generated by redirecting the output of @code{make} and @code{make check}
to a file (@file{,,make-all.out} and @file{,,make-check.out} are the
default used by @code{build-report}), and executing @kbd{M-x
-build-rpt}.
+build-rpt}.
@node Q2.1.2
you have problems. To fix, set the environment variable
@code{XKEYSYMDB} to the location of the @file{XKeysymDB} file on your
system or to the location of the one included with SXEmacs which
-should be at
+should be at
@iftex
@*
@end iftex
@c would not run because it claimed the version number was incorrect
@c although it was indeed OK. I traced the problem to the regular
@c expression handler.
-@c
+@c
@c @email{douglask@@dstc.edu.au, Douglas Kosovic} writes:
-@c
+@c
@c @quotation
@c Actually it's a DEC cc optimisation bug that screws up the regexp
@c handling in XEmacs.
-@c
+@c
@c Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a
@c different sort of optimisation) works fine.
@c @end quotation
-@c
+@c
@c See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to
@c build with the @samp{-migrate} flag:
-@c
+@c
@c @example
@c @uref{http://www-digital.cern.ch/carney/emacs/emacs.html}
@c @c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is
@c @c dead. And the directory `carney' is empty.
-@c
-@c
-@c
+@c
+@c
+@c
@c @end example
-@c
+@c
@c NOTE: There have been a variety of other problems reported that are
@c fixed in this fashion.
@unnumberedsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure.
@c @email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes:
-@c
+@c
@c @quotation
@c With XEmacs 19.13 and HP/UX 10.10, anything that relies on the
@c @code{create_process} function fails. This breaks a lot of things
@c (shell-mode, compile, ange-ftp, to name a few).
@c @end quotation
-@c
+@c
@c @email{johnson@@dtc.hp.com, Phil Johnson} writes:
-@c
+@c
@c @quotation
@c This is a problem specific to HP-UX 10.10. It only occurs when XEmacs
@c is compiled for shared libraries (the default), so you can work around
@c it by compiling a statically-linked binary (run configure with
@c @samp{--dynamic=no}).
-@c
+@c
@c I'm not sure whether the problem is with a particular shared library or
@c if it's a kernel problem which crept into 10.10.
@c @end quotation
-@c
+@c
@c @email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
-@c
+@c
@c @quotation
@c I had a few problems with 10.10. Apparently, some of them were solved by
@c forcing a static link of libc (manually).
If you'd like to write your own, this file provides as good a set of
examples as any to start from. The file is located in edit-utils
-package.
+package.
@node Q3.8.3
The Gnus numbering issues are not meant for mere mortals to know them.
@c If you feel you @emph{must} enter the muddy waters of Gnus, visit the
@c excellent FAQ, maintained by Justin Sheehy, at:
-@c
+@c
@c @example
@c @uref{http://www.ccs.neu.edu/software/contrib/gnus/}
@c @end example
fi
@end example
-Note that there is a known problem when running SXEmacs and
+Note that there is a known problem when running SXEmacs and
@samp{gnuclient -nw} on the same TTY.
@end quotation
@unnumberedsec Q5.3.9: Are only certain syntactic character classes available for abbrevs?
@c @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
-@c
+@c
@c @quotation
@c Yes, abbrevs only expands word-syntax strings. While XEmacs does not
@c prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l})
@c them. So you need to ensure, that the abbreviation contains letters and
@c digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are
@c valid abbrevs, but @samp{&d}, and @samp{x d} are not.
-@c
+@c
@c If this sounds confusing to you, (re-)read the online documentation for
@c abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and
@c read this question/answer again.
@c @end quotation
-@c
+@c
@c Starting with XEmacs 20.3 this restriction has been lifted.
Does not apply anymore.
Fix major bug in regex.c
This fixed a whole swag of crashes involving regexps and
-syntax-tables.
+syntax-tables.
@item
Sync up with XEmacs 21.4 -- Various Developers.
Features provided when all of the library demands are met:
@example
- (featurep 'bigz) and
+ (featurep 'bigz) and
(featurep 'bignum) <=> if MPZ from GMP or BSD MP is present
-
+
(featurep 'bigq) and
(featurep 'ratio) <=> if MPQ from GMP is present
-
+
(featurep 'bigf) and
(featurep 'bigfloat) <=> if MPF from GMP is present
-
+
(featurep 'bigfr) <=> if MPFR is present
-
+
(featurep 'bigc) <=> if MPC is present
-
+
(featurep 'number-types) <=> if one of the above features is
provided
@end example
SXEmacs tries to relieve backslashitis by implementing raw strings.
You'll imediately notice the benefit of raw strings when use them for
those hairy regexps. Consider the regular expression (from
-font-latex.el)...
+font-latex.el)...
@example
"\\(?:^\\|[^\\]\\)\\(?:\\\\\\\\\\)*\\(\\\\[@@A-Za-z]+\\)"
$ sxemacs -nw -vanilla
...and look at the modeline. Now open a .c file and turn on
-font-lock...
+font-lock...
C-x C-f /path/to/file.c RET
M-x font-lock-mode RET
-
@node Abbrevs, Picture, Running, Top
@chapter Abbrevs
@cindex abbrevs
point. It prints a line in the echo area that looks like this:
@example
-Char: c (0143, 99, 0x63) point=18862 of 24800(76%) column 53
+Char: c (0143, 99, 0x63) point=18862 of 24800(76%) column 53
@end example
@noindent
The four values after @samp{Char:} describe the character that follows
point, first by showing it and then by giving its character code in
-octal, decimal and hex.
+octal, decimal and hex.
@samp{point=} is followed by the position of point expressed as a character
count. The front of the buffer counts as position 1, one character later
might say:
@smallexample
-Char: c (0143, 99, 0x63) point=19674 of 24575(80%) <19591 - 19703> column 69
+Char: c (0143, 99, 0x63) point=19674 of 24575(80%) <19591 - 19703> column 69
@end smallexample
@noindent
-
@node Buffers, Windows, Files, Top
@chapter Using Multiple Buffers
MR Buffer Size Mode File
-- ------ ---- ---- ----
.* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex
- *Help* 1287 Fundamental
+ *Help* 1287 Fundamental
files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el
% RMAIL 64042 RMAIL /u/rms/RMAIL
*% man 747 Dired /u2/emacs/man/
@findex kill-buffer
@findex kill-some-buffers
@kindex C-x k
-
+
@kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
specify in the minibuffer. If you type just @key{RET} in the
minibuffer, the default, killing the current buffer, is used. If the
leaving @samp{*Buffer List*} visible.
@item q
Immediately select this buffer, and display any buffers previously
-flagged with the @kbd{m} command in other windows. If there are no
+flagged with the @kbd{m} command in other windows. If there are no
buffers flagged with @kbd{m}, this command is equivalent to @kbd{1}.
@item m
Flag this buffer to be displayed in another window if the @kbd{q}
All that @code{buffer-menu} does directly is create and select a
suitable buffer, and turn on Buffer Menu mode. All the other
capabilities of the buffer menu are implemented by special commands
-provided in Buffer Menu mode.
+provided in Buffer Menu mode.
The only difference between @code{buffer-menu} and @code{list-buffers} is
that @code{buffer-menu} selects the @samp{*Buffer List*} buffer and
-
@node Running, Abbrevs, Programs, Top
@chapter Compiling and Testing Programs
file system, near the directory in which the Emacs executable resides.
@findex locate-library
- Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the
+ Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the
directories in @code{load-path} to find the file that @kbd{M-x load-library}
would load. If the optional second argument @var{nosuffix} is
non-@code{nil}, the suffixes @file{.elc} or @file{.el} are not added to
@item M-x batch-byte-compile
Run byte-compile-file on the files remaining on the command line.
@item M-x byte-compile-buffer &optional @var{buffer}
-Byte-compile and evaluate contents of @var{buffer} (default is current
+Byte-compile and evaluate contents of @var{buffer} (default is current
buffer).
@item M-x byte-compile-file
Compile a file of Lisp code named @var{filename} into a file of byte code.
@item M-x disassemble
Print disassembled code for @var{object} on (optional) @var{stream}.
@findex make-obsolete
-@item M-x make-obsolete @var{function new}
-Make the byte-compiler warn that @var{function} is obsolete and @var{new}
+@item M-x make-obsolete @var{function new}
+Make the byte-compiler warn that @var{function} is obsolete and @var{new}
should be used instead.
@end table
the calendar, type @kbd{q}. @xref{Calendar, Customizing the Calendar
and Diary,, lispref, The SXEmacs Lisp Reference Manual}, for customization
information about the calendar and diary.
-
+
@menu
* Calendar Motion:: Moving through the calendar; selecting a date.
* Scroll Calendar:: Bringing earlier or later months onto the screen.
@menu
* Calendar Unit Motion:: Moving by days, weeks, months, and years.
* Move to Beginning or End:: Moving to start/end of weeks, months, and years.
-* Specified Dates:: Moving to the current date or another
+* Specified Dates:: Moving to the current date or another
specific date.
@end menu
weeks (months, years) as starting on particular dates. So Calendar mode
provides commands to move to the beginning or end of a week, month or
year:
-
+
@table @kbd
@kindex C-a @r{(Calendar mode)}
@findex calendar-beginning-of-week
@findex calendar-unmark
To view the distribution of holidays for all the dates shown in the
calendar, use the @kbd{x} command. This displays the dates that are
-holidays in a different face (or places a @samp{*} after these dates, if
+holidays in a different face (or places a @samp{*} after these dates, if
display with multiple faces is not available). The command applies both
to the currently visible months and to other months that subsequently
become visible by scrolling. To turn marking off and erase the current
preceding and succeeding months. For information about a different
month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and
year.
-
+
The dates and times given for the phases of the moon are given in
local time (corrected for daylight savings, when appropriate); but if
the variable @code{calendar-time-zone} is void, Coordinated Universal
@cindex Mayan long count
To understand these commands, you need to understand the Mayan calendars.
The @dfn{long count} is a counting of days with these units:
-
+
@display
1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
1 katun = 20 tun@ @ @ 1 baktun = 20 katun
diary file, with portions of it concealed from view. This means, for
instance, that the @kbd{C-f} (@code{forward-char}) command can put point
at what appears to be the end of the line, but what is in reality the
-middle of some concealed line.
+middle of some concealed line.
@emph{Be careful when editing the diary entries!} Inserting
additional lines or adding/deleting characters in the middle of a
style for displaying diary dates. (Note that there is no comma after
the @var{monthname} in the European style.) To go back to the (default)
American style of writing dates, type @kbd{M-x american-calendar}.
-
+
You can use the name of a day of the week as a generic date which
applies to any date falling on that day of the week. You can abbreviate
the day of the week to three letters (with or without a period) or spell
When you modify the diary file, be sure to save the file before
exiting Emacs.
-
+
@node Special Diary Entries,, Adding to Diary, Diary
@subsection Special Diary Entries
@table @kbd
@item i a
-Add an anniversary diary entry for the selected date
+Add an anniversary diary entry for the selected date
(@code{insert-anniversary-diary-entry}).
@item i b
-Add a block diary entry for the current region
+Add a block diary entry for the current region
(@code{insert-block-diary-entry}).
@item i c
-Add a cyclic diary entry starting at the date
+Add a cyclic diary entry starting at the date
(@code{insert-cyclic-diary-entry}).
@end table
weeks, and months. It is comparable to a crontab entry interpreted by
the @code{cron} utility. Here is a nonmarking, floating diary entry
that applies to the last Thursday in November:
-
+
@findex diary-float
@example
&%%(diary-float 11 4 -1) American Thanksgiving
calendar automatically displays a list of holidays for the current
three-month period. The holiday list appears in a separate
window.
-
+
@vindex mark-diary-entries-in-calendar
You can set the variable @code{mark-diary-entries-in-calendar} to
@code{t} in order to mark any dates with diary entries. This takes
Emacs uses these expressions to determine the starting date of
daylight savings time for the holiday list and for correcting times of
day in the solar and lunar calculations.
-
+
The values for Cambridge, Massachusetts are as follows:
@example
after midnight local time when the transition to and from daylight
savings time should occur. For Cambridge, Massachusetts both variables'
values are 120.
-
+
@node Diary Customizing
@subsubsection Customizing the Diary
Notice the use of @code{backup} in the third pattern, because it needs
to match part of a word beyond the date itself to distinguish it from
the fourth pattern.
-
+
@node Hebrew/Islamic Entries
@subsubsection Hebrew- and Islamic-Date Diary Entries
well as entries based on the world-standard Gregorian calendar.
However, because recognition of such entries is time-consuming and most
people don't use them, you must explicitly enable their use. If you
-want the diary to recognize Hebrew-date diary entries, for example,
+want the diary to recognize Hebrew-date diary entries, for example,
you must do this:
-
+
@vindex nongregorian-diary-listing-hook
@vindex nongregorian-diary-marking-hook
@findex list-hebrew-diary-entries
Here is a table of commands used in the calendar to create diary entries
that match the selected date and other dates that are similar in the Hebrew
or Islamic calendar:
-
+
@table @kbd
@item i h d
Add a diary entry for the Hebrew date corresponding to the selected date
selected date.
@item i h y
Add a diary entry for the day of the Hebrew year corresponding to the
-selected date (@code{insert-yearly-hebrew-diary-entry}). This diary
+selected date (@code{insert-yearly-hebrew-diary-entry}). This diary
entry matches any date which has the same Hebrew month and day-within-month
as the selected date.
@item i i d
These commands work much like the corresponding commands for ordinary
diary entries: they apply to the date that point is on in the calendar
window, and what they do is insert just the date portion of a diary entry
-at the end of your diary file. You must then insert the rest of the
+at the end of your diary file. You must then insert the rest of the
diary entry.
-
+
@node Fancy Diary Display
@subsubsection Fancy Diary Display
@vindex diary-display-hook
hook @code{diary-display-hook}. The default value of this hook
(@code{simple-diary-display}) hides the irrelevant diary entries and
then displays the buffer. However, if you specify the hook as follows,
-
+
@cindex diary buffer
@findex fancy-diary-display
@example
Fancy diary display also has the ability to process included diary
files. This permits a group of people to share a diary file for events
that apply to all of them. Lines in the diary file of this form:
-
+
@smallexample
#include "@var{filename}"
@end smallexample
These functions can be used to construct sexp diary entries based on
the Hebrew calendar in certain standard ways:
-
+
@cindex rosh hodesh
@findex diary-rosh-hodesh
@cindex parasha, weekly
-
@node Command Switches, Startup Paths, Exiting, Top
@section Command Line Switches and Arguments
@cindex command line arguments
The following subsections list:
@itemize @bullet
-@item
+@item
Command line arguments that you can always use
-@item
+@item
Command line arguments that have to appear at the beginning of the
argument list
@item
@example
% sxemacs -version
SXEmacs: steve@@sxemacs.org--2006/sxemacs--main--22.1.4--patch-79,
-built Sun Apr 9 05:36:50 2006 on bastard
+built Sun Apr 9 05:36:50 2006 on bastard
@end example
@item -help
@item -no-autoloads
Do not load global symbol files (@file{auto-autoloads}) at startup.
-This implies @samp{-vanilla}.
+This implies @samp{-vanilla}.
@item -no-early-packages
Do not process early packages. (For more information on startup issues
@end table
In addition, SXEmacs allows you to use a number of standard Xt
-command line arguments.
+command line arguments.
@table @samp
-
@node Customization, Quitting, Emulation, Top
@chapter Customization
@cindex customization
[ ] Foreground: white (sample)
[ ] Background: blue (sample)
[ ] Inverse: [Toggle] off (nil)
- [ ] Stipple:
- [ ] Font Family:
- [ ] Size:
+ [ ] Stipple:
+ [ ] Font Family:
+ [ ] Size:
[ ] Strikethru: off
@end smallexample
@c background are @samp{black}, @samp{white}, @samp{gray}, @samp{gray1},
@c and @samp{gray3}. Emacs supports these shades of gray by using
@c background stipple patterns instead of a color.
-@c
+@c
Setting, saving and resetting a face work like the same operations for
options (@pxref{Changing an Option}).
@item M-x customize-apropos @key{RET} @var{regexp} @key{RET}
Set up a customization buffer with all the options, faces and groups
that match @var{regexp}.
-@item M-x customize-saved
+@item M-x customize-saved
Set up a customization buffer containing all options and faces that you
have saved with customization buffers.
@item M-x customize-customized
enough like Lisp for Lisp mode to be useful but in which comments
start and end differently. The prefix and suffix are used in the local
variables list to make the list look like several lines of comments when
-the compiler or interpreter for that language reads the file.
+the compiler or interpreter for that language reads the file.
The start of the local variables list must be no more than 3000
characters from the end of the file, and must be in the last page if the
executed, but also becomes part of the definition of the macro. @samp{Def}
appears in the mode line to remind you of what is going on. When you are
finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
-definition, without becoming part of it.
+definition, without becoming part of it.
For example,
local map, which affects all buffers using the same major mode.
@menu
-* Interactive Rebinding:: Changing Key Bindings Interactively
+* Interactive Rebinding:: Changing Key Bindings Interactively
* Programmatic Rebinding:: Changing Key Bindings Programmatically
-* Key Bindings Using Strings:: Using Strings for Changing Key Bindings
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings
@end menu
@node Interactive Rebinding
@table @kbd
@item M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
Defines @var{key} globally to run @var{cmd}.
-@item M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET}
+@item M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET}
Defines @var{key} locally (in the major mode now in effect) to run
@var{cmd}.
@item M-x local-unset-key @key{RET} @var{keys} @key{RET}
@item @code{(define-key @var{keymap} @var{keys} @var{def})}
Defines @var{keys} to run @var{def} in the keymap @var{keymap}.
@end table
-
+
@var{keymap} is a keymap object.
@var{keys} is the sequence of keystrokes to bind.
@xref{Keystrokes}, for more information about the rules for constructing
key sequences.
-Emacs allows you to abbreviate representations for key sequences in
+Emacs allows you to abbreviate representations for key sequences in
most places where there is no ambiguity.
Here are some rules for abbreviation:
@example
;;; Bind @code{my-command} to @key{f1}
-(global-set-key 'f1 'my-command)
+(global-set-key 'f1 'my-command)
;;; Bind @code{my-command} to @kbd{Shift-f1}
(global-set-key '(shift f1) 'my-command)
;;; Bind @code{my-command} to @kbd{C-c Shift-f1}
-(global-set-key '[(control c) (shift f1)] 'my-command)
+(global-set-key '[(control c) (shift f1)] 'my-command)
;;; Bind @code{my-command} to the middle mouse button.
(global-set-key 'button2 'my-command)
@comment (global-set-key '(meta control backspace) 'my-command)
@comment (global-set-key '(meta control h) 'my-command)
@comment (global-set-key '(meta control H) 'my-command)
-@comment
+@comment
@comment ;; note that this binds two key sequences: ``control-j'' and ``linefeed''.
@comment ;;
@comment (global-set-key "\^J" 'my-command)
@node Key Bindings Using Strings
-@subsubsection Using Strings for Changing Key Bindings
+@subsubsection Using Strings for Changing Key Bindings
For backward compatibility, you can still use strings to represent
key sequences. Thus you can use commands like the following:
@end example
Note, however, that in some cases you may be binding more than one
-key sequence by using a single command. This situation can
+key sequence by using a single command. This situation can
arise because in ASCII, @kbd{C-i} and @key{TAB} have
the same representation. Therefore, when Emacs sees:
similar fashion:
@example
- control h backspace
+ control h backspace
control l clear
- control i tab
- control m return
- control j linefeed
+ control i tab
+ control m return
+ control j linefeed
control [ escape
control @@ control space
@end example
standard beep. This only works if you are logged in on the console of a
machine with audio hardware. To listen to a sound of the provided type,
call the function @code{play-sound} with the argument @var{sound}. You
-can also set the volume of the sound with the optional argument
+can also set the volume of the sound with the optional argument
@var{volume}.@refill
@cindex ding
@table @code
@item sound
-A string of raw sound data, or the name of another sound to play.
+A string of raw sound data, or the name of another sound to play.
The symbol @code{t} here means use the default X beep.
@item volume
This variable applies to the standard X bell sound as well as sound files.
If the symbol @code{t} is in place of a sound-string, Emacs uses the
-default X beep. This allows you to define beep-types of
+default X beep. This allows you to define beep-types of
different volumes even when not running on the console.
@findex load-sound-file
@item y-or-n-p
You type something other than the required @code{y} or @code{n}
-@item yes-or-no-p
+@item yes-or-no-p
You type something other than @code{yes} or @code{no}
@end table
Make the font of the given @var{face} bold. When called from a
program, returns @code{nil} if this is not possible.
@item M-x make-face-bold-italic
-Make the font of the given @var{face} bold italic.
+Make the font of the given @var{face} bold italic.
When called from a program, returns @code{nil} if not possible.
@item M-x make-face-italic
-Make the font of the given @var{face} italic.
+Make the font of the given @var{face} italic.
When called from a program, returns @code{nil} if not possible.
@item M-x make-face-unbold
-Make the font of the given @var{face} non-bold.
+Make the font of the given @var{face} non-bold.
When called from a program, returns @code{nil} if not possible.
@item M-x make-face-unitalic
Make the font of the given @var{face} non-italic.
@item M-x make-face-smaller
Make the font of the given @var{face} a little smaller.
When called from a program, returns @code{nil} if not possible.
-@item M-x set-face-background
+@item M-x set-face-background
Change the background color of the given @var{face}.
@item M-x set-face-background-pixmap
Change the background pixmap of the given @var{face}.
-@item M-x set-face-font
+@item M-x set-face-font
Change the font of the given @var{face}.
@item M-x set-face-foreground
Change the foreground color of the given @var{face}.
@var{face} with the function @code{invert-face}. If the face does not
specify both foreground and background, then its foreground and
background are set to the background and foreground of the default face.
-When calling this from a program, you can supply the optional argument
+When calling this from a program, you can supply the optional argument
@var{frame} to specify which frame is affected; otherwise, all frames
are affected.
You can set the background color of the specified @var{face} with the
function @code{set-face-background}. The argument @code{color} should
be a string, the name of a color. When called from a program, if the
-optional @var{frame} argument is provided, the face is changed only
+optional @var{frame} argument is provided, the face is changed only
in that frame; otherwise, it is changed in all frames.
@findex set-face-background-pixmap
You can set the font of the specified @var{face} with the function
@code{set-face-font}. The @var{font} argument should be a string, the
name of a font. When called from a program, if the
-optional @var{frame} argument is provided, the face is changed only
+optional @var{frame} argument is provided, the face is changed only
in that frame; otherwise, it is changed in all frames.
-@findex set-face-foreground
+@findex set-face-foreground
You can set the foreground color of the specified @var{face} with the
function @code{set-face-foreground}. The argument @var{color} should be
a string, the name of a color. If the optional @var{frame} argument is
The examples in this section assume the application class is @samp{Emacs}.
-The Emacs resources are generally set per-frame. Each Emacs frame can have
-its own name or the same name as another, depending on the name passed to the
+The Emacs resources are generally set per-frame. Each Emacs frame can have
+its own name or the same name as another, depending on the name passed to the
@code{make-frame} function.
You can specify resources for all frames with the syntax:
from the geometry of the frame.
@item
-For subsequent frames, the position is taken only from the frame, and
+For subsequent frames, the position is taken only from the frame, and
never from the ApplicationShell.
@end itemize
Whether this frame should appear in the iconified state.
@item @code{internalBorderWidth} (class @code{InternalBorderWidth}): int
-How many blank pixels to leave between the text and the edge of the
+How many blank pixels to leave between the text and the edge of the
window.
@item @code{interline} (class @code{Interline}): int
@item zmacs-region
This is the face that mouse selections are displayed in.
-
+
@item isearch
This is the face that the matched text being searched for is displayed
in.
Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
@end example
-If both the Lucid Motif-lookalike menu widgets and X Font Sets are
+If both the Lucid Motif-lookalike menu widgets and X Font Sets are
configured to allow multilingual menubars, then one uses
@example
resources (eg, menubars) are ignored in favor of the corresponding
.fontSet resources.
-If the Motif library is being used, then one would have to use
+If the Motif library is being used, then one would have to use
@example
Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
because the Motif library uses the @code{fontList} resource name instead
of @code{font}, which has subtly different semantics.
-The same is true of the scrollbars: They accept whichever resources are
+The same is true of the scrollbars: They accept whichever resources are
appropriate for the toolkit in use.
-
@node Display, Search, Registers, Top
@chapter Controlling the Display
into visibility, that is what happens.
@vindex scroll-conservatively
- If you set @code{scroll-step} to a small value because you want to use
+ If you set @code{scroll-step} to a small value because you want to use
arrow keys to scroll the screen without recentering, the redisplay
preemption will likely make SXEmacs keep recentering the screen when
scrolling fast, regardless of @code{scroll-step}. To prevent this, set
@vindex ctl-arrow
If the variable @code{ctl-arrow} is @code{nil}, control characters in the
buffer are displayed with octal escape sequences, all except newline and
-tab. If its value is @code{t}, then control characters will be printed
-with an up-arrow, for example @kbd{^A}.
+tab. If its value is @code{t}, then control characters will be printed
+with an up-arrow, for example @kbd{^A}.
If its value is not @code{t} and not @code{nil}, then characters whose
code is greater than 160 (that is, the space character (32) with its
-
@node Files, Buffers, Fixit, Top
@chapter File Handling
@cindex files
To visit a file, use the command @kbd{C-x C-f} (@code{find-file}). Follow
the command with the name of the file you wish to visit, terminated by a
@key{RET}. If you are using SXEmacs under X, you can also use the
-@b{Open...} command from the @b{File} menu bar item.
+@b{Open...} command from the @b{File} menu bar item.
The file name is read using the minibuffer (@pxref{Minibuffer}), with
defaulting and completion in the standard manner (@pxref{File Names}).
mathematical symbol for `not'; thus @kbd{Meta-~} is `not', metafied.)
You could also use @code{set-visited-file-name} (see below) to mark the
buffer as visiting a different file name, not in use for
-anything important.
+anything important.
You can also undo all the changes made since the file was visited or
saved, by reading the text from the file again. This is called
(different operating systems have different defaults for the group).
Having the owner change is usually a good idea, because then the owner
-is always the person who last edited the file. Occasionally there is a
+is always the person who last edited the file. Occasionally there is a
file whose owner should not change. Since most files should change
-owners, it is a good idea to use local variable lists to set
-@code{backup-by-copying-when-mismatch} for the special cases where the
+owners, it is a good idea to use local variable lists to set
+@code{backup-by-copying-when-mismatch} for the special cases where the
owner should not change (@pxref{File Variables}).
@vindex backup-by-copying
it can be undesirable to save a program that is in an inconsistent
state when you have made only half of a planned change. Instead, auto-saving
is done in a different file called the @dfn{auto-save file}, and the
-visited file is changed only when you save explicitly, for example,
+visited file is changed only when you save explicitly, for example,
with @kbd{C-x C-s}.
Normally, the name of the auto-save file is generated by appending
@vindex auto-save-timeout
You can set the number of seconds of idle time before an auto-save is
-done. Setting the value of the variable @code{auto-save-timeout} to zero or
+done. Setting the value of the variable @code{auto-save-timeout} to zero or
@code{nil} will disable auto-saving due to idleness.
The actual amount of idle time between auto-saves is logarithmically
@dfn{Version control systems} are packages that can record multiple
versions of a source file, usually storing the unchanged parts of the
file just once. Version control systems also record history information
-such as the creation time of each version, who created it, and a
+such as the creation time of each version, who created it, and a
description of what was changed in that version.
The GNU project recommends the version control system known as RCS,
to check files in or out.
* Log Entries:: Logging your changes.
* Change Logs and VC:: Generating a change log file from log
- entries.
+ entries.
* Old Versions:: Examining and comparing old versions.
* VC Status:: Commands to view the VC status of files and
look at log entries.
To examine a file, you @dfn{check it out}. This extracts a version
of the source file (typically, the most recent) from the master file.
If you want to edit the file, you must check it out @dfn{locked}. Only
-one user can do this at a time for any given source file. (This kind
+one user can do this at a time for any given source file. (This kind
of locking is completely unrelated to the locking that Emacs uses to
detect simultaneous editing of a file.)
last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
This cancels your last check-out, leaving the file unlocked. If you want
to make a different set of changes, you must first check the file out
-again. @kbd{C-x v u} requires confirmation, unless it sees that
+again. @kbd{C-x v u} requires confirmation, unless it sees that
you haven't made any changes since the last checked-in version.
@kbd{C-x v u} is also the command to use if you lock a file and then
@kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
the minibuffer, then renames file @var{old} as @var{new}. If a file named
@var{new} already exists, you must confirm with @kbd{yes} or renaming is not
-done; this is because renaming causes the previous meaning of the
-name @var{new} to be lost. If @var{old} and @var{new} are on different
+done; this is because renaming causes the previous meaning of the
+name @var{new} to be lost. If @var{old} and @var{new} are on different
file systems, the file @var{old} is copied and deleted.
@findex view-file
-
@node Fixit, Files, Search, Top
@chapter Commands for Fixing Typos
@cindex typos
@cindex mistakes, correcting
This chapter describes commands that are especially useful when you
-catch a mistake in your text just after you have made it, or when you
+catch a mistake in your text just after you have made it, or when you
change your mind while composing text on line.
@menu
title; the name is used for resource lookup, among other things, and the
title is simply what appears above the window.)
@end itemize
-
-
@node Glossary,, Intro, Top
@unnumbered Glossary
-
@node Help, Mark, M-x, Top
@chapter Help
@kindex Help
-
@node Indentation, Text, Major Modes, Top
@chapter Indentation
@cindex indentation
(@code{delete-indentation}) command to delete the indentation at the
front of the current line, and the line boundary as well. Empty spaces
are replaced by a single space, or by no space if at the beginning of a
-line, before a close parenthesis, or after an open parenthesis.
-To delete just the indentation of a line, go to the beginning of the
-line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which
+line, before a close parenthesis, or after an open parenthesis.
+To delete just the indentation of a line, go to the beginning of the
+line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which
deletes all spaces and tabs around the cursor.
@kindex C-M-\
-
@node Keystrokes, Pull-down Menus, Frame, Top
@chapter Keystrokes, Key Sequences, and Key Bindings
keyboard: for example, you could have the
@key{Capslock} key be understood as the @key{Super} key by Emacs. A
@key{Super} key is used like @key{Control} or @key{Meta} in that you hold
-it while typing another key.
+it while typing another key.
@end itemize
You will also learn how to customize existing key bindings and
* Character Representation:: How characters appear in Emacs buffers.
* Commands:: How commands are bound to key sequences.
@end menu
-
+
@node Intro to Keystrokes, Representing Keystrokes, Keystrokes, Keystrokes
@section Keystrokes as Building Blocks of Key Sequences
@cindex character set
keystrokes that can be represented in ASCII. SXEmacs can tell the
difference between, for example, @kbd{Control-h}, @kbd{Control-Shift-h},
and @kbd{Backspace}.
-
+
@cindex modifier key
@cindex keysym
@kindex meta key
@kindex hyper key
@kindex super key
@kindex shift key
-@kindex button1
+@kindex button1
@kindex button2
@kindex button3
@kindex button1up
middle mouse button
@item button3
right mouse button
-@item button1up
+@item button1up
upstroke on the left mouse button
@item button2up
upstroke on the middle mouse button
Pressing the @key{BREAK} key.
@item (control meta button2up)
Release the middle mouse button, while pressing @key{CTRL} and
-@key{META}.
+@key{META}.
@end table
@cindex shift modifier
Note: As you define keystrokes, you can use the @kbd{shift} key only
@node Meta Key, Super and Hyper Keys, String Key Sequences, Keystrokes
@comment node-name, next, previous, up
@subsection Assignment of the @key{META} Key
-
+
@kindex META
@kindex ESC
- Not all terminals have the complete set of modifiers.
+ Not all terminals have the complete set of modifiers.
Terminals that have a @key{Meta} key allow you to type Meta characters
by just holding that key down. To type @kbd{Meta-a}, hold down
@key{META} and press @kbd{a}. On those terminals, the @key{META} key
would type @kbd{ESC C-a}. @key{ESC} is allowed on terminals with
Meta keys, too, in case you have formed a habit of using it.@refill
-If you are running under X and do not have a @key{META} key, it
-is possible to reconfigure some other key to be a @key{META}
+If you are running under X and do not have a @key{META} key, it
+is possible to reconfigure some other key to be a @key{META}
key. @xref{Super and Hyper Keys}. @refill
@vindex meta-flag
yourself. @xref{Variables}, for how to do this.
Note: If you are running under the X window system, the setting of
-the @code{meta-flag} variable is irrelevant.
+the @code{meta-flag} variable is irrelevant.
@node Super and Hyper Keys, Character Representation, Meta Key, Keystrokes
@comment node-name, next, previous, up
The first line says that the key that is currently called @code{Caps_Lock}
should no longer behave as a ``lock'' key. The second line says that
-this should now be called @code{Super_L} instead. The third line says that
+this should now be called @code{Super_L} instead. The third line says that
the key called @code{Super_L} should be a modifier key, which produces the
@code{Mod2} modifier.
If you have problems, see the documentation for the @code{xmodmap}
program. The X keyboard model is quite complicated, and explaining
-it is beyond the scope of this manual. However, we reprint the
+it is beyond the scope of this manual. However, we reprint the
following description from the X Protocol document for your convenience:
@cindex keysyms
A list of keysyms is associated with each keycode. If that list
(ignoring trailing @code{NoSymbol} entries) is a single keysym @samp{K},
-then the list is treated as if it were the list
-@code{``K NoSymbol K NoSymbol''}. If the list (ignoring trailing
-@code{NoSymbol} entries) is a pair of keysyms @samp{K1 K2}, then the
-list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the
-list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms
-@samp{K1 K2 K3}, then the list is treated as if it were the list
+then the list is treated as if it were the list
+@code{``K NoSymbol K NoSymbol''}. If the list (ignoring trailing
+@code{NoSymbol} entries) is a pair of keysyms @samp{K1 K2}, then the
+list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the
+list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms
+@samp{K1 K2 K3}, then the list is treated as if it were the list
@code{``K1 K2 K3 NoSymbol''}.
- The first four elements of the list are split into two groups of
+ The first four elements of the list are split into two groups of
keysyms. Group 1 contains the first and second keysyms; Group 2 contains
third and fourth keysyms. Within each group, if the second element of
the group is NoSymbol, then the group should be treated as if the second
element were the same as the first element, except when the first
-element is an alphabetic keysym @samp{K} for which both lowercase and
-uppercase forms are defined. In that case, the group should be treated
-as if the first element were the lowercase form of @samp{K} and the second
+element is an alphabetic keysym @samp{K} for which both lowercase and
+uppercase forms are defined. In that case, the group should be treated
+as if the first element were the lowercase form of @samp{K} and the second
element were the uppercase form of @samp{K}.
- The standard rules for obtaining a keysym from a KeyPress event make use of
-only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in
+ The standard rules for obtaining a keysym from a KeyPress event make use of
+only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in
the list is given here. (That is, the last four keysyms are unused.)
Which group to use is determined by modifier state. Switching between
off, and Group 2 is used when the group modifier is on.
Within a group, which keysym to use is also determined by modifier
-state. The first keysym is used when the @code{Shift} and @code{Lock}
-modifiers are off. The second keysym is used when the @code{Shift}
-modifier is on, or when the @code{Lock} modifier is on and the second
-keysym is uppercase alphabetic, or when the @code{Lock} modifier is on
-and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock}
-modifier is on and is interpreted as @code{CapsLock}, the state of the
-@code{Shift} modifier is applied first to select a keysym,
-but if that keysym is lower-case alphabetic, then the corresponding
+state. The first keysym is used when the @code{Shift} and @code{Lock}
+modifiers are off. The second keysym is used when the @code{Shift}
+modifier is on, or when the @code{Lock} modifier is on and the second
+keysym is uppercase alphabetic, or when the @code{Lock} modifier is on
+and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock}
+modifier is on and is interpreted as @code{CapsLock}, the state of the
+@code{Shift} modifier is applied first to select a keysym,
+but if that keysym is lower-case alphabetic, then the corresponding
upper-case keysym is used instead.
- In addition to the above information on keysyms, we also provide the
-following description of modifier mapping from the InterClient
+ In addition to the above information on keysyms, we also provide the
+following description of modifier mapping from the InterClient
Communications Conventions Manual:
@cindex modifier mapping
- X11 supports 8 modifier bits, of which 3 are pre-assigned to
-@code{Shift}, @code{Lock}, and @code{Control}. Each modifier bit is
-controlled by the state of a set of keys, and these sets are specified
-in a table accessed by @code{GetModifierMapping()} and
+ X11 supports 8 modifier bits, of which 3 are pre-assigned to
+@code{Shift}, @code{Lock}, and @code{Control}. Each modifier bit is
+controlled by the state of a set of keys, and these sets are specified
+in a table accessed by @code{GetModifierMapping()} and
@code{SetModifierMapping()}.
A client needing to use one of the pre-assigned modifiers should assume
Lock} or @code{Shift Lock} according to whether the keycodes in its
controlling set include @code{XK_Caps_Lock} or @code{XK_Shift_Lock}.
- Clients should determine the meaning of a modifier bit from the keysyms
+ Clients should determine the meaning of a modifier bit from the keysyms
being used to control it.
A client needing to use an extra modifier, for example @code{Meta}, should:
@enumerate
@item
-If it finds a modifier that contains a keycode whose set of keysyms
-includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that
+If it finds a modifier that contains a keycode whose set of keysyms
+includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that
modifier bit.
@item
-If there is no existing modifier controlled by @code{XK_Meta_L} or
-@code{XK_Meta_R}, it should select an unused modifier bit (one with
+If there is no existing modifier controlled by @code{XK_Meta_L} or
+@code{XK_Meta_R}, it should select an unused modifier bit (one with
an empty controlling set) and:
@end enumerate
@item
-If there is a keycode with @code{XL_Meta_L} in its set of keysyms,
+If there is a keycode with @code{XL_Meta_L} in its set of keysyms,
add that keycode to the set for the chosen modifier, and then:
@enumerate
@item
-If there is a keycode with @code{XL_Meta_R} in its set of keysyms,
+If there is a keycode with @code{XL_Meta_R} in its set of keysyms,
add that keycode to the set for the chosen modifier, and then:
@item
-If the controlling set is still empty, interact with the user to
+If the controlling set is still empty, interact with the user to
select one or more keys to be @code{Meta}.
@end enumerate
If there are no unused modifier bits, ask the user to take corrective action.
@end enumerate
- This means that the @code{Mod1} modifier does not necessarily mean
-@code{Meta}, although some applications (such as twm and emacs 18)
-assume that. Any of the five unassigned modifier bits could mean
-@code{Meta}; what matters is that a modifier bit is generated by a
+ This means that the @code{Mod1} modifier does not necessarily mean
+@code{Meta}, although some applications (such as twm and emacs 18)
+assume that. Any of the five unassigned modifier bits could mean
+@code{Meta}; what matters is that a modifier bit is generated by a
keycode which is bound to the keysym @code{Meta_L} or @code{Meta_R}.
- Therefore, if you want to make a @key{META} key, the right way
-is to make the keycode in question generate both a @code{Meta} keysym
+ Therefore, if you want to make a @key{META} key, the right way
+is to make the keycode in question generate both a @code{Meta} keysym
and some previously-unassigned modifier bit.
@node Character Representation, Commands, Super and Hyper Keys, Keystrokes
This section briefly discusses how characters are represented in Emacs
buffers. @xref{Key Sequences}, for information on representing key
-sequences to create key bindings.
+sequences to create key bindings.
ASCII graphic characters in Emacs buffers are displayed with their
graphics. @key{LFD} is the same as a newline character; it is displayed
customization: some command or other part of Emacs uses the variable
and behaves differently depending on its setting. Until you are interested in
customizing, you can ignore the information about variables. When you
-are ready to be interested, read the basic information on variables, and
+are ready to be interested, read the basic information on variables, and
then the information on individual variables will make sense.
@xref{Variables}.
-
@iftex
@chapter Killing and Moving Text
the current line. If the current line is blank, it deletes all blank lines
preceding the current line as well as leaving one blank line, the current
line. @kbd{M-^} (@code{delete-indentation}) joins the current line and
-the previous line, or, if given an argument, joins the current line and
+the previous line, or, if given an argument, joins the current line and
the next line by deleting a newline and all surrounding spaces, possibly
leaving a single space. @xref{Indentation,M-^}.
@item
Click the middle button in the other application, pasting the @b{Primary}
-selection.
+selection.
@end itemize
With some other applications (notably, the OpenWindows and Motif tools) you
Deletes the text in the primary selection without copying it to the kill
ring or the Clipboard.
@item M-x x-kill-primary-selection
-Deletes the text in the primary selection and copies it to
+Deletes the text in the primary selection and copies it to
both the kill ring and the Clipboard.
@item M-x x-mouse-kill
-Kill the text between point and the mouse and copy it to
+Kill the text between point and the mouse and copy it to
the clipboard and to the cut buffer.
@item M-x x-own-secondary-selection
-Make a secondary X selection of the given argument.
+Make a secondary X selection of the given argument.
@item M-x x-own-selection
-Make a primary X selection of the given argument.
+Make a primary X selection of the given argument.
@item M-x x-set-point-and-insert-selection
Set point where clicked and insert the primary selection or the
cut buffer.
@item
The text selected with the mouse becomes both the X selection and the
Emacs selected region. You can use menu-bar commands as well as Emacs
-region commands on it.
+region commands on it.
@item
The text selected with point and the mark is not highlighted. You can
-only use Emacs region commands on it, not the menu-bar items.
+only use Emacs region commands on it, not the menu-bar items.
@end itemize
Active regions originally come from Zmacs, the Lisp Machine editor.
@item
The region is deactivated after each command that is executed, except that
motion commands do not change whether the region is active or not.
-@end itemize
+@end itemize
@code{set-mark-command} (@kbd{C-SPC}) pushes a mark and activates the
region. Moving the cursor with normal motion commands (@kbd{C-n},
When @code{zmacs-regions} is @code{t}, programs can make the region between
point and mark go into the active (highlighted) state by using the
function @code{zmacs-activate-region}. Only a small number of commands
-should ever do this.
+should ever do this.
@findex zmacs-deactivate-region
When @code{zmacs-regions} is @code{t}, programs can deactivate the region
between point and the mark by using @code{zmacs-deactivate-region}.
Note: you should not have to call this function; the command loop calls
-it when appropriate.
+it when appropriate.
@node Accumulating Text, Rectangles, Using X Selections, Top
@section Accumulating Text
-
@node M-x, Help, Minibuffer, Top
@chapter Running Commands by Name
@code{manual-entry}. The use of English words makes the command name
easier to remember than a key made up of obscure characters, even though
it results in more characters to type. You can run any command by name,
-even if it can be run by keys as well.
+even if it can be run by keys as well.
@kindex M-x
@cindex minibuffer
@end example
@noindent
-After you type in @code{M-x fo TAB} emacs will give you a possible list of
-completions from which you can choose. Note that @code{forward-char} is the
-same command that you invoke with the key @kbd{C-f}. You can call any
-command (interactively callable function) defined in Emacs by its name
+After you type in @code{M-x fo TAB} emacs will give you a possible list of
+completions from which you can choose. Note that @code{forward-char} is the
+same command that you invoke with the key @kbd{C-f}. You can call any
+command (interactively callable function) defined in Emacs by its name
using @kbd{M-x} regardless of whether or not any keys are bound to it.
If you type @kbd{C-g} while Emacs reads the command name, you cancel
letter followed by a prompt. Some code letters do not use I/O to get
the argument and do not need prompts. To prompt for multiple arguments,
you must provide a code letter, its prompt, a newline, and another code
-letter, and so forth. If the argument is not a string, it is evaluated
+letter, and so forth. If the argument is not a string, it is evaluated
to get a list of arguments to pass to the function. If you do not provide an
argument to @code{interactive}, no arguments are passed when calling
interactively.
-
@node Major Modes, Indentation, Mule, Top
@chapter Major Modes
@cindex major modes
that depend on the order that hooks are executed.
Hooks can be removed from hook variables with @code{remove-hook}.
-
-
-
@node Mark, Mouse Selection, Help, Top
@chapter Selecting Text
@cindex mark
@itemize @bullet
@item
You use special keys to select text by defining a region between point
-and the mark.
+and the mark.
@item
If you are running SXEmacs under X, you can also select text
-with the mouse.
+with the mouse.
@end itemize
@section The Mark and the Region
point or the mark to adjust the boundaries of the region. It doesn't
matter which one is set first chronologically, or which one comes
earlier in the text.
-
+
Once the mark has been set, it remains until it is set again at
another place. The mark remains fixed with respect to the preceding
character if text is inserted or deleted in a buffer. Each Emacs
command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
mark where point was and point where the mark was. The extent of the
region is unchanged, but the cursor and point are now at the previous
-location of the mark.
+location of the mark.
@kindex C-<
@kindex C->
argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
@var{n}/10 of the way from the true beginning of the buffer. You can
also set the mark at the end of a buffer with @kbd{C->}
-(@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer,
+(@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer,
leaving point alone. Supplying an argument to the command pushes the mark
@var{n}/10 of the way from the true end of the buffer.
region (defined by point and mark) highlight and makes it available as
the X clipboard selection, which means you can use the menu bar items on
it. @xref{Active Regions}, for more information.
-
+
@kbd{C-x C-x} is also useful when you are satisfied with the location of
point but want to move the mark; do @kbd{C-x C-x} to put point there and
then you can move it. A second use of @kbd{C-x C-x}, if necessary, puts
There are commands for placing point and the mark around a textual
object such as a word, list, paragraph or page.
-
+
@table @kbd
@item M-@@
Set mark after end of next word (@code{mark-word}). This command and
-
@node Pull-down Menus, Entering Emacs, Keystrokes, Top
@comment node-name, next, previous, up
-@section SXEmacs Pull-down Menus
+@section SXEmacs Pull-down Menus
If you are running SXEmacs under X, a menu bar on top of the
Emacs frame provides access to pull-down menus of file, edit, and
easy interface for novice users. They do not provide additions to the
functionality available via key commands; you can still invoke commands
from the keyboard as in previous versions of Emacs.
-
+
@table @b
@item File
Perform file and buffer-related operations, such as opening and closing
@cindex File menu
@item Edit
-Perform standard editing operations, such as
+Perform standard editing operations, such as
cutting, copying, pasting, and killing selected text.
@cindex Edit menu
@item
Select an item in the menu bar by moving the cursor over it and click and
hold the left mouse-button. With the mouse-button depressed, move the
-cursor over the menu item you want, then release it to make your selection.
+cursor over the menu item you want, then release it to make your selection.
@end itemize
If a command in the pull-down menu is not applicable in a given
@enumerate
@item
-Type @kbd{C-h k} to get the @code{Describe Key} prompt.
+Type @kbd{C-h k} to get the @code{Describe Key} prompt.
@item
-Select the menu item and click.
+Select the menu item and click.
@end enumerate
Emacs displays the function associated with the menu item in a separate
-window, usually together with some documentation.
+window, usually together with some documentation.
@menu
* File Menu:: Items on the File menu.
* Edit Menu:: Items on the Edit menu.
* Apps Menu:: Items on the Apps menu.
-* Options Menu:: Items on the Options menu.
+* Options Menu:: Items on the Options menu.
* Buffers Menu:: Information about the Buffers menu.
* Tools Menu:: Items on the Tools menu.
-* Help Menu:: Items on the Help menu.
+* Help Menu:: Items on the Help menu.
* Menu Customization:: Adding and removing menu items and related
operations.
@end menu
for confirmation. @refill
@item Open File...
-Prompts you for a filename and loads that file into a new buffer.
+Prompts you for a filename and loads that file into a new buffer.
@b{Open File...} is equivalent to the Emacs command @code{find-file} (@kbd{C-x
-C-f}).@refill
+C-f}).@refill
@item Insert File...
Prompts you for a filename and inserts the contents of that file into
the current buffer. The file associated with the current buffer is
not changed by this command. This is equivalent to the Emacs command
-@code{insert-file} (@kbd{C-x i}).@refill
+@code{insert-file} (@kbd{C-x i}).@refill
-@item Save Buffer
+@item Save Buffer
Writes and saves the current Emacs buffer as the latest
version of the current visited file. @b{Save Buffer} is equivalent to the
Emacs command @code{save-buffer} (@kbd{C-x C-s}).@refill
-@item Save Buffer As...
+@item Save Buffer As...
Writes and saves the current Emacs buffer to the filename you specify.
@b{Save Buffer As...} is equivalent to the Emacs command
@code{write-file} (@kbd{C-x C-w}).@refill
@item Kill Buffer
Kills the current buffer, prompting you first if there are unsaved
-changes. This is roughly equivalent to the Emacs command
-@code{kill-buffer} (@kbd{C-x k}), except that @code{kill-buffer}
+changes. This is roughly equivalent to the Emacs command
+@code{kill-buffer} (@kbd{C-x k}), except that @code{kill-buffer}
prompts for the name of a buffer to kill. @refill
@item Print Buffer
is like the @b{Open File, New Frame...} menu item, except that it does
not prompt for or load a file.@refill
-@item Delete Frame
+@item Delete Frame
Allows you to close all but one of the frames created by @b{New Frame}.
If you created several Emacs frames belonging to the same Emacs
process, you can close all but one of them. When you attempt to close the
@cindex End Macro Recording menu item
@cindex Execute Last Macro menu item
@table @b
-@item Undo
+@item Undo
Undoes the previous command. @b{Undo} is equivalent to
the Emacs command @code{undo} (@kbd{C-x u}).@refill
Removes the selected text block from the current buffer, makes it the X
clipboard selection, and places it in the kill ring. Before executing
this command, you have to select a region using Emacs region selection
-commands or with the mouse.@refill
+commands or with the mouse.@refill
-@item Copy
+@item Copy
Makes a selected text block the X clipboard selection, and places it in
the kill ring. You can select text using one of the Emacs region
selection commands or by selecting a text region with the mouse.@refill
-@item Paste
+@item Paste
Inserts the current value of the X clipboard selection in the current
buffer. Note that this is not necessarily the same as the Emacs
@code{yank} command, because the Emacs kill ring and the X clipboard
@item Clear
Removes the selected text block from the current buffer but does not
-place it in the kill ring or the X clipboard selection.
+place it in the kill ring or the X clipboard selection.
@item Start Macro Recording
After selecting this, Emacs will remember every keystroke you type until
-@b{End Macro Recording} is selected. This is the same as the Emacs
+@b{End Macro Recording} is selected. This is the same as the Emacs
command @code{start-kbd-macro} (@kbd{C-x (}).
@item End Macro Recording
@subsection The Options Menu
@cindex Options menu
-The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case
-Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection},
-@b{Teach Extended Commands}, @b{Syntax Highlighting}, @b{Paren
-Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu
-Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items.
-When you select a menu item, Emacs executes the equivalent command.
-For some of the menu items, there are sub-menus which you will need
+The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case
+Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection},
+@b{Teach Extended Commands}, @b{Syntax Highlighting}, @b{Paren
+Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu
+Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items.
+When you select a menu item, Emacs executes the equivalent command.
+For some of the menu items, there are sub-menus which you will need
to select.
@cindex Read Only menu item
@cindex Save Options
@table @b
@item Read Only
-Selecting this item will cause the buffer to visit the file in a
-read-only mode. Changes to the file will not be allowed. This is
-equivalent to the Emacs command @code{toggle-read-only}
+Selecting this item will cause the buffer to visit the file in a
+read-only mode. Changes to the file will not be allowed. This is
+equivalent to the Emacs command @code{toggle-read-only}
(@kbd{C-x C-q}).
@item Case Sensitive Search
-Selecting this item will cause searches to be case-sensitive. If
-its not selected then searches will ignore case. This option is
+Selecting this item will cause searches to be case-sensitive. If
+its not selected then searches will ignore case. This option is
local to the buffer.
@item Overstrike
-After selecting this item, when you type letters they will replace
-existing text on a one-to-one basis, rather than pushing it to the
-right. At the end of a line, such characters extend the line. Before
-a tab, such characters insert until the tab is filled in. This is the
+After selecting this item, when you type letters they will replace
+existing text on a one-to-one basis, rather than pushing it to the
+right. At the end of a line, such characters extend the line. Before
+a tab, such characters insert until the tab is filled in. This is the
same as Emacs command @code{quoted-insert} (@kbd{C-q}).
@item Auto Delete Selection
-Selecting this item will cause automatic deletion of the selected
-region. The typed text will replace the selection if the selection
-is active (i.e. if its highlighted). If the option is not selected
+Selecting this item will cause automatic deletion of the selected
+region. The typed text will replace the selection if the selection
+is active (i.e. if its highlighted). If the option is not selected
then the typed text is just inserted at the point.
@item Teach Extended Commands
-After you select this item, any time you execute a command with
-@kbd{M-x}which has a shorter keybinding, you will be shown the
+After you select this item, any time you execute a command with
+@kbd{M-x}which has a shorter keybinding, you will be shown the
alternate binding before the command executes.
@item Syntax Highlighting
a different Color or Font.@refill
@item Paren Highlighting
-After selecting @b{Blink} from this item, if you place the cursor
-on a parenthesis, the matching parenthesis will blink. If you select
-@b{Highlight} and place the cursor on a parenthesis, the whole
-expression of the parenthesis under the cursor will be highlighted.
-Selecting @b{None} will turn off the options (regarding @b{Paren
+After selecting @b{Blink} from this item, if you place the cursor
+on a parenthesis, the matching parenthesis will blink. If you select
+@b{Highlight} and place the cursor on a parenthesis, the whole
+expression of the parenthesis under the cursor will be highlighted.
+Selecting @b{None} will turn off the options (regarding @b{Paren
Highlighting}) which you had selected earlier.@refill
@item Font
-You can select any Font for your program by choosing from one of the
+You can select any Font for your program by choosing from one of the
available Fonts.
@item Size
-You can select any size ranging from @b{2} to @b{24} by selecting the
+You can select any size ranging from @b{2} to @b{24} by selecting the
appropriate option.@refill
@item Weight
You can choose either @b{Bold} or @b{Medium} for the weight.@refill
@item Buffers Menu Length...
-Prompts you for the number of buffers to display. Then it will display
+Prompts you for the number of buffers to display. Then it will display
that number of most recently selected buffers.
@item Buffers Sub-Menus
-After selection of this item the Buffers menu will contain several
-commands, as submenus of each buffer line. If this item is unselected,
-then there are no submenus for each buffer line, the only command
+After selection of this item the Buffers menu will contain several
+commands, as submenus of each buffer line. If this item is unselected,
+then there are no submenus for each buffer line, the only command
available will be selecting that buffer.
@item Save Options
-Selecting this item will save the current settings of your Options
+Selecting this item will save the current settings of your Options
menu to your init file. @xref{Init File}.
@end table
@cindex Buffers menu
The @b{Buffers} menu provides a selection of up to ten buffers and the
item @b{List All Buffers}, which provides a Buffer List. @xref{List
-Buffers}, for more information.
+Buffers}, for more information.
@node Tools Menu
@subsection The Tools Menu
@cindex Help menu
The Help Menu gives you access to Emacs Info and provides a menu
-equivalent for each of the choices you have when using @kbd{C-h}.
-@xref{Help}, for more information.
+equivalent for each of the choices you have when using @kbd{C-h}.
+@xref{Help}, for more information.
The Help menu also gives access to UNIX online manual pages via the
-@b{UNIX Manual Page} option.
+@b{UNIX Manual Page} option.
@node Menu Customization
@subsection Customizing SXEmacs Menus
You can customize any of the pull-down menus by adding or removing menu
items and disabling or enabling existing menu items.
-
-The following functions are available:
+
+The following functions are available:
@table @kbd
@item add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} &optional @var{before})
Add a menu to the menu bar or one of its submenus.
submenu of @b{File}. If @var{menu-path} is @code{nil}, the menu is
added to the menu bar itself.
-@var{menu-name} is the string naming the menu to be added.
+@var{menu-name} is the string naming the menu to be added.
@var{menu-items} is a list of menu item descriptions. Each menu item
should be a vector of three elements:
@itemize @bullet
-@item
+@item
A string, which is the name of the menu item
-@item
+@item
A symbol naming a command, or a form to evaluate
-@item
+@item
@code{t} or @code{nil} to indicate whether the item is selectable
@end itemize
list is simply evaluated.
@var{enabled-p} controls whether the item is selectable or not.
-It should be @code{t}, @code{nil}, or a form to evaluate to decide.
-This form will be evaluated just before the menu is displayed, and
+It should be @code{t}, @code{nil}, or a form to evaluate to decide.
+This form will be evaluated just before the menu is displayed, and
the menu item will be selectable if that form returns non-@code{nil}.
For example, to make the @code{rename-file} command available from the
@end example
To add a submenu of file management commands using a @b{File Management}
-item, use the following code:
+item, use the following code:
@example
(add-menu-item '("File" "File Management") "Copy File" 'copy-file t)
-
@node Minibuffer, M-x, Undo, Top
@chapter The Minibuffer
@cindex minibuffer
Find File: chocolate_bar.c [no completions, confirm]
@end example
If you press @kbd{Return} again, that confirms the filename. Otherwise,
-you can continue editing it.
+you can continue editing it.
SXEmacs supports recursive use of the minibuffer. However, it is easy
to do this by accident (because of autorepeating keyboards, for example)
ignored for completion's sake if specified by program.
When a completion list is displayed, the completions will highlight as
-you move the mouse over them. Clicking the middle mouse button on any
+you move the mouse over them. Clicking the middle mouse button on any
highlighted completion will ``select'' it just as if you had typed it in
and hit @key{RET}.
When the minibuffer is being used to prompt the user for a completion,
any valid completions which are visible on the screen will be highlighted
when the mouse moves over them. Clicking @key{button2} will select the
-highlighted completion and exit the minibuffer.
+highlighted completion and exit the minibuffer.
(@code{minibuf-select-highlighted-completion}).
@end table
-
@iftex
@chapter Miscellaneous Commands
if you have typed the beginning of a command (@code{comint-previous-input}).
@item M-n
Move forward through the input history. Useful when you are
-using @key{M-p} quickly and go past the desired command
+using @key{M-p} quickly and go past the desired command
(@code{comint-next-input}).
@item @key{TAB}
Complete the file name preceding point (@code{comint-dynamic-complete}).
@section CONX
@cindex random sentences
-Besides producing a file of scrambled text with Dissociated Press, you
+Besides producing a file of scrambled text with Dissociated Press, you
can generate random sentences by using CONX.
@table @kbd
@item M-x conx-init
Forget the current word-frequency tree.
@item M-x conx-load
-Load a @code{conx} database that has been previously saved with
+Load a @code{conx} database that has been previously saved with
@code{M-x conx-save}.
@item M-x conx-region
Absorb the text in the current buffer into the @code{conx} database.
Copy text from a buffer using @kbd{M-x conx-buffer} or @kbd{M-x conx-region}
and then type @kbd{M-x conx}. Output is continuously generated until you
type @key{^G}. You can save the @code{conx} database to a file with
-@kbd{M-x conx-save}, which you can retrieve with @code{M-x conx-load}.
+@kbd{M-x conx-save}, which you can retrieve with @code{M-x conx-load}.
To clear the database, use @code{M-x conx-init}.
@node Amusements, Emulation, CONX, Top
-
@node Mouse Selection, Additional Mouse Operations, Mark, Top
@comment node-name, next, previous, up
@section Selecting Text with the Mouse
selected. On monochrome monitors, a stippled background indicates that a
region of text has been highlighted. On color monitors, a color
background indicates highlighted text. You can triple-click to select
-whole lines.
+whole lines.
To select an arbitrary region of text:
Move the mouse cursor over the character at the beginning of the region of
text you want to select.
@item
-Press and hold the left mouse button.
+Press and hold the left mouse button.
@item
While holding the left mouse button down, drag the cursor to the
character at the end of the region of text you want to select.
@item mouse-select-and-split
Select the Emacs window mouse is on, then split it vertically in half.
@item mouse-set-mark
-Select the Emacs window the mouse is on and set the mark at the mouse
+Select the Emacs window the mouse is on and set the mark at the mouse
position. Display the cursor at that position for a second.
@item mouse-set-point
Select the Emacs window that the mouse is on and move point to the
mouse position.
@item mouse-track
-Make a selection with the mouse. This is the default binding of
+Make a selection with the mouse. This is the default binding of
the left mouse button (@key{button1}).
@item mouse-track-adjust
Extend the existing selection. This is the default binding of
The @kbd{M-x mouse-track} command should be bound to a mouse button. If
you click-and-drag, the selection is set to the region between the
point of the initial click and the point at which you release the
-button. These positions do not need to be ordered.
+button. These positions do not need to be ordered.
If you click-and-release without moving the mouse, the point is moved,
and the selection is disowned (there will be no selection owner.) The
the SXEmacs session. The supported language environments include:
@quotation
-ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO,
+ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO,
Cyrillic-KOI8, Cyrillic-Win, Czech, English, Ethiopic, French, German,
Greek, Hebrew, IPA, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4,
Latin-5, Norwegian, Polish, Romanian, Slovenian, Thai-XTIS, Vietnamese.
input method name with the minibuffer; the name normally starts with the
language environment that it is meant to be used with. The variable
@code{current-input-method} records which input method is selected.
-
+
@findex toggle-input-method
@kindex C-\
Input methods use various sequences of ASCII characters to stand for
@c #### This section is out of date. The following set-*-coding-system
@c functions are known:
-@c set-buffer-file-coding-system
+@c set-buffer-file-coding-system
@c set-buffer-file-coding-system-for-read
@c set-buffer-process-coding-system
-@c set-console-tty-coding-system
+@c set-console-tty-coding-system
@c set-console-tty-input-coding-system
@c set-console-tty-output-coding-system
@c set-default-buffer-file-coding-system
-@c set-default-coding-systems
+@c set-default-coding-systems
@c set-default-file-coding-system
-@c set-file-coding-system
+@c set-file-coding-system
@c set-file-coding-system-for-read
-@c set-keyboard-coding-system
-@c set-pathname-coding-system
-@c set-process-coding-system
+@c set-keyboard-coding-system
+@c set-pathname-coding-system
+@c set-process-coding-system
@c set-process-input-coding-system
@c set-process-output-coding-system
-@c set-terminal-coding-system
+@c set-terminal-coding-system
@c Some are marked as broken. Agenda: (1) Update this section using
@c docstrings. Note that they may be inaccurate. (2) Correct the
-
@iftex
@unnumbered XEmacs Features
SXEmacs conditions. In the future it will describe the differences
between XEmacs and SXEmacs.
-This section describes the difference between Emacs Version 18 and
+This section describes the difference between Emacs Version 18 and
XEmacs.
@unnumberedsec General Changes
@itemize @bullet
@ignore
-@item
+@item
XEmacs has a new vi emulation mode called evi mode. To
start evi mode in Emacs, type the command @kbd{M-x evi}. If you want
Emacs to automatically put you in evi-mode all the time, include this
@xref{Init File}.
@end ignore
-@item
+@item
XEmacs has a new vi emulation mode called ``viper'' mode. To start
viper mode in XEmacs, type the command @kbd{M-x viper-mode}. If you
want XEmacs to automatically put you in viper-mode all the time, include
@item
There is a new @file{tags} package and a new UNIX manual browsing
package. They are similar to earlier versions; for more information look
-at the source code.
+at the source code.
@item
There is a new implementation of Dired, with many new features. The
online info for Dired, @i{not} the Dired node of Emacs info, provides
-more detail.
+more detail.
@item
GNUS (a network news reader), VM (an alternative mail reader), ILISP (a
@item
On some machines, you can change the audible bell using the
-@code{sound-alist} variable. @xref{Audible Bell} for more information.
+@code{sound-alist} variable. @xref{Audible Bell} for more information.
@item
-You can use multiple X windows to display multiple Emacs frames.
+You can use multiple X windows to display multiple Emacs frames.
@item
You can use the X selection mechanism to copy material from other
@item
By default, the variable @code{zmacs-regions} is set to highlight the region
between point and the mark. This unifies X selection and Emacs selection
-behavior.
+behavior.
@item
XEmacs has a menu bar for mouse-controlled operations in addition to
keystrokes. @xref{Pull-down Menus}.
@item
-You can look in the file @file{/usr/local/lib/xemacs-19.11/etc/Emacs.ad} for
-a list of Emacs X resources. You can set these resources in your X
-environment to set your preferences for color, fonts, location, and the size
-of XEmacs frames. Refer to your X documentation for more information
+You can look in the file @file{/usr/local/lib/xemacs-19.11/etc/Emacs.ad} for
+a list of Emacs X resources. You can set these resources in your X
+environment to set your preferences for color, fonts, location, and the size
+of XEmacs frames. Refer to your X documentation for more information
about resources.
@unnumberedsec New Commands and Variables
@code{mouse-track-delete-and-insert}, @code{mouse-track-insert}, and
@code{mouse-window-to-region}.
-@findex compare-windows
+@findex compare-windows
@item
@code{compare-windows} takes an argument @var{ignore-whitespace}.
The argument means ignore changes in whitespace.
@end itemize
-You can conditionalize your @file{.emacs} file as follows so that XEmacs
+You can conditionalize your @file{.emacs} file as follows so that XEmacs
commands are invoked only when you are in XEmacs:
@cindex version number
@vindex minibuffer-confirm-incomplete
@item
-@code{minibuffer-confirm-incomplete} prompts for confirmation in
+@code{minibuffer-confirm-incomplete} prompts for confirmation in
contexts where @code{completing-read} allows answers that are not valid
completions.
There are two main flavors of packages.
@itemize @bullet
-@item
+@item
Regular Packages
@cindex regular packages
A regular package is one in which multiple files are involved and one
may not in general safely remove any of them, unless removing the entire
package.
-@item
+@item
Single-File Packages
@cindex single-file packages
A single-file package is an aggregate collection of thematically
-related but otherwise independent lisp files. These files are bundled
+related but otherwise independent lisp files. These files are bundled
together for download convenience and individual files may be deleted at
will without any loss of functionality. However, we would recommend
that you follow this rule of thumb: "When in doubt, don't delete".
as XEmacs. What you may not be aware of is that PUI is useless until
you manually install a couple of packages. Yep, that's right, you
can't use PUI to install packages unless you install some packages
-first...
+first...
Well @emph{that} was for XEmacs, @emph{this} is SXEmacs! SXEmacs can
@dfn{bootstrap} PUI @strong{without} needing @strong{any} packages to
users.
If you can't find which package provides the feature you require, try
-using the @code{package-get-package-provider} function. Eg., if you know
+using the @code{package-get-package-provider} function. Eg., if you know
that you need @code{thingatpt}, type:
@example
If you are unlucky enough to have a @dfn{FFI-enabled} SXEmacs, you
will have to manually install the EFS and xemacs-base packages
-@pxref{Manually}.
+@pxref{Manually}.
@enumerate 1
-@item
+@item
Choose a download site.
-via menu: Tools -> Packages -> Set Download Site
+via menu: Tools -> Packages -> Set Download Site
via keyb: @code{M-x customize-variable RET package-get-remote RET}
(put in the details of remote host and directory)
If the package tarballs _AND_ the package-index file are in a
local directory, you can: @code{M-x pui-set-local-package-get-directory RET}
-@item
+@item
Obtain a list of packages and display the list in a buffer named
@file{*Packages*}.
menu: Tools -> Packages -> List & Install
Install selected packages.
@item @key{SPC}
View, in the minibuffer, additional information about the package, such
-as the package date (not the build date) and the package author. Moving
+as the package date (not the build date) and the package author. Moving
the mouse over a package name will also do the same thing.
@item v
Toggle between verbose and non-verbose package display.
additional package information also.
-@item
+@item
Choose the packages you wish to install.
mouse: Click button 2 on the package name.
keyb: @kbd{RET} on the package name
-@item
+@item
Make sure you have everything you need.
menu: Packages -> Add Required
keyb: @kbd{r}
For novices and gurus alike, this step can save your bacon.
It's easy to forget to install a critical package.
-@item
+@item
Download and install the packages.
menu: Packages -> Install/Remove Selected
keyb: @kbd{x}
Fetch the packages from the FTP site, CD-ROM whatever. The filenames
have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
a fresh install it is sufficient to untar the file at the top of the
-package hierarchy.
+package hierarchy.
Note: If you are upgrading packages already installed, it's best to
remove the old package first @ref{Removing Packages}.
change it is recommended to remove a package first before installing a
new version. In order to facilitate removal each package contains an
@file{pgkinfo/MANIFEST.pkgname} file which list all the files belonging
-to the package.
+to the package.
No need to panic, you don't have to go through the
@file{pkinfo/MANIFEST.pkgname} and manually delete the files. Instead, use
@table @code
@item GNU cp
-@item GNU install
+@item GNU install
(or a BSD compatible install program).
-@item GNU make
+@item GNU make
(3.75 or later preferred).
-@item makeinfo
+@item makeinfo
(4.2 from GNU texinfo 4.2 or later required).
@item GNU tar
(or equivalent).
Support for the Clearcase version control system.
@item cookie
-"Fortune cookie"-style messages. Includes Spook (suspicious phrases)
+"Fortune cookie"-style messages. Includes Spook (suspicious phrases)
and Yow (Zippy quotes).
@item crisp
Support for Multiple Major Modes within a single buffer.
@item net-utils
-Miscellaneous Networking Utilities. This is a single-file package and
+Miscellaneous Networking Utilities. This is a single-file package and
files may be deleted at will.
@item ocaml
@item xemacs-devel
XEmacs Lisp developer support. This package contains utilities for
-supporting Lisp development. It is a single-file package so it may be
+supporting Lisp development. It is a single-file package so it may be
tailored.
@item xslide
Another Japanese Language Input Method. Can be used without a
separate process running as a dictionary server.
@end table
-
-
@node Picture, Sending Mail, Abbrevs, Top
@chapter Editing Pictures
@cindex pictures
One of these keys, @kbd{C-c C-c}, is pretty important. Often a picture
is part of a larger file that is usually edited in some other major mode.
-@kbd{M-x edit-picture} records the name of the previous major mode.
+@kbd{M-x edit-picture} records the name of the previous major mode.
You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to
restore that mode. @kbd{C-c C-c} also deletes spaces from the ends of
lines, unless you give it a numeric argument.
@kindex C-c C-d (Picture mode)
@findex delete-char
-
+
To actually delete parts of the picture, use @kbd{C-w}, or with
@kbd{C-c C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is
in other modes), or with one of the picture rectangle commands
@node Tabs in Picture, Rectangles in Picture, Insert in Picture, Picture
@section Picture Mode Tabs
-
+
@kindex M-TAB
@findex picture-tab-search
@vindex picture-tab-chars
-
@node Programs, Running, Text, Top
@chapter Editing Programs
@cindex Programming Languages
@cindex Lisp
SXEmacs provides specialized support for editing source files for many
-different programming languages. For example it is possible to
+different programming languages. For example it is possible to
@itemize @bullet
@item
these language have seperate manuals, and some times more than one mode
may be available for a language. For example, there are several
variants of Lisp mode, which differ in the way they interface to Lisp
-execution. @xref{Lisp Modes}.
+execution. @xref{Lisp Modes}.
Major modes for programming language support are distributed in
optional SXEmacs packages (@pxref{Packages}) that must be installed
@code{backward-delete-char-untabify}). This makes it possible to rub out
indentation one column at a time without worrying whether it is made up of
spaces or tabs. In these modes, use @kbd{C-b C-d} to delete a tab
-character before point.
+character before point.
Programming language modes define paragraphs to be separated only by
blank lines, so that the paragraph commands remain useful. Auto Fill mode,
returned data type so that the entire C function is inside the region.
@findex compile-defun
-To compile and evaluate the current defun, use @kbd{M-x compile-defun}.
-This function prints the results in the minibuffer. If you include an
+To compile and evaluate the current defun, use @kbd{M-x compile-defun}.
+This function prints the results in the minibuffer. If you include an
argument, it inserts the value in the current buffer after the defun.
Emacs assumes that any open-parenthesis found in the leftmost column is
function. To speed this up, Emacs was changed to assume
that any @samp{(} (or other character assigned the syntactic class of
opening-delimiter) at the left margin is the start of a defun. This
-heuristic is nearly always right; however, it mandates the convention
+heuristic is nearly always right; however, it mandates the convention
described above.
@node Grinding, Matching, Defuns, Programs
location of the matching opening delimiter, provided that is visible on
the screen. If it is not on the screen, some text starting with that
opening delimiter is displayed in the echo area. Either way, you see
-the grouping you are closing off.
+the grouping you are closing off.
In Lisp, automatic matching applies only to parentheses. In C, it
also applies to braces and brackets. Emacs knows which characters to regard
@vindex blink-matching-paren
@vindex blink-matching-paren-distance
Two variables control parenthesis matching displays.
-@code{blink-matching-paren} turns the feature on or off. The default is
+@code{blink-matching-paren} turns the feature on or off. The default is
@code{t} (match display is on); @code{nil} turns it off.
@code{blink-matching-paren-distance} specifies how many characters back
Emacs searches to find a matching opening delimiter. If the match is
use the command @kbd{Meta-@key{LFD}} (@code{indent-new-comment-line}),
which terminates the comment you are typing, creates a new blank line
afterward, and begins a new comment indented under the old one. If
-Auto Fill mode is on and you go past the fill column while typing, the
+Auto Fill mode is on and you go past the fill column while typing, the
comment is continued in just this fashion. If point is
not at the end of the line when you type @kbd{M-@key{LFD}}, the text on
the rest of the line becomes part of the new comment line.
@findex manual-entry
The @kbd{M-x manual-entry} command gives you access to documentation
on Unix commands, system calls, and libraries. The command reads a
-topic as an argument, and displays the Unix manual page for that topic.
+topic as an argument, and displays the Unix manual page for that topic.
@code{manual-entry} always searches all 8 sections of the
manual and concatenates all the entries it finds. For example,
the topic @samp{termcap} finds the description of the termcap library
If the cdr of the elements of this list are strings, they are
assumed to name a tags file. If they name a directory, the string
-@file{tags} is appended to them to get the file name. If they are not
+@file{tags} is appended to them to get the file name. If they are not
strings, they are evaluated and must return an appropriate string.
For example:
@end example
The example defines the tags table alist in the following way:
-
+
@itemize @bullet
@item
-Anything in the directory @file{/usr/src/public/perl/}
-should use the @file{TAGS} file @file{/usr/src/public/perl/perl-3.0/TAGS}.
+Anything in the directory @file{/usr/src/public/perl/}
+should use the @file{TAGS} file @file{/usr/src/public/perl/perl-3.0/TAGS}.
@item
Files ending in @file{.el} should use the @file{TAGS} file
-@file{/usr/local/emacs/src/TAGS}.
+@file{/usr/local/emacs/src/TAGS}.
@item
-Anything in or below the directory @file{/jbw/gnu/} should use the
-@file{TAGS} file @file{/usr15/degree/stud/jbw/gnu/TAGS}.
+Anything in or below the directory @file{/jbw/gnu/} should use the
+@file{TAGS} file @file{/usr15/degree/stud/jbw/gnu/TAGS}.
@end itemize
If you had a file called @file{/usr/jbw/foo.el}, it would use both
@code{tags-file-name} is the name of the tags table used by all buffers.
This is for backward compatibility, and is largely supplanted by the
variable @code{tag-table-alist}.
-
+
@node Find Tag, Tags Search, Select Tags Table, Tags
@subsection Finding a Tag
variables (@pxref{Mode Hooks}). In addition to this conventional
behavior all the CC Mode major modes will also run hooks in
@code{c-mode-common-hook} @emph{before} invoking the major mode specific
-hook.
+hook.
CC Mode runs any hooks in @code{c-initialization-hook} exactly once
when it is first loaded.
-
+
CC Mode is a very comprehensive and flexible system and full
description of its capabilities is beyond the scope of this manual. It
is strongly recommended that the reader consult the CC Mode
@itemize @bullet
@item
``gnu'' --- The recommeded style from the Free Software Foundation for
-GNU software.
+GNU software.
@item
``k&r'' --- The classic style from Kernighan and Ritchie.
@item
@code{c-basic-offset} as the basic indentation level (this buffer local
variable is used in all CC Mode language modes though its name might
suggest otherwise). All indentation is, by default, expressed in
-multiples of @code{c-basic-offset}.
+multiples of @code{c-basic-offset}.
Each style defines a default value for @code{c-basic-offset}, for the
``gnu'' style sets it to 2. A very common customization scenario is
The normal Emacs comment command @kbd{C-x ;} has not been redefined.
It can therefore be used if you use @samp{!} comments, but is useless in
-Fortran mode otherwise.
+Fortran mode otherwise.
@kindex C-c ; (Fortran mode)
@findex fortran-comment-region
-
@node Reading Mail, Calendar/Diary, Sending Mail, Top
@chapter Reading Mail
@cindex mail
-
@node Registers, Display, Rectangles, Top
@chapter Registers
@cindex registers
-
@node Search, Fixit, Display, Top
@chapter Searching and Replacement
@cindex searching
@kbd{C-g} as described below.@refill
When you are satisfied with the place you have reached, you can type
-@key{RET} (or @key{C-m}), which stops searching, leaving the cursor where
+@key{RET} (or @key{C-m}), which stops searching, leaving the cursor where
the search brought it. Any command not specially meaningful in searches also
stops the search and is then executed. Thus, typing @kbd{C-a} exits the
search and then moves to the beginning of the line. @key{RET} is necessary
The characters @kbd{M-p} and @kbd{M-n} can be used in an incremental
search to recall things which you have searched for in the past. A
-list of the last 16 things you have searched for is retained, and
+list of the last 16 things you have searched for is retained, and
@kbd{M-p} and @kbd{M-n} let you cycle through that ring.
-The character @kbd{M-@key{TAB}} does completion on the elements in
+The character @kbd{M-@key{TAB}} does completion on the elements in
the search history ring. For example, if you know that you have
recently searched for the string @code{POTATOE}, you could type
@kbd{C-s P O M-@key{TAB}}. If you had searched for other strings
beginning with @code{PO} then you would be shown a list of them, and
-would need to type more to select one.
+would need to type more to select one.
You can change any of the special characters in incremental search via
-the normal keybinding mechanism: simply add a binding to the
+the normal keybinding mechanism: simply add a binding to the
@code{isearch-mode-map}. For example, to make the character
@kbd{C-b} mean ``search backwards'' while in isearch-mode, do this:
@item C-w
Pull next word from buffer into search string (@code{isearch-yank-word}).
@item C-g
-Cancels input back to what has been found successfully, or aborts the
+Cancels input back to what has been found successfully, or aborts the
isearch (@code{isearch-abort}).
@item M-p
-Recall the previous element in the isearch history ring
+Recall the previous element in the isearch history ring
(@code{isearch-ring-retreat}).
@item M-n
-Recall the next element in the isearch history ring
+Recall the next element in the isearch history ring
(@code{isearch-ring-advance}).
@item M-@key{TAB}
-Do completion on the elements in the isearch history ring
+Do completion on the elements in the isearch history ring
(@code{isearch-complete}).
@end table
By default, @kbd{C-s} invokes incremental search, but if you give it an
empty argument, which would otherwise be useless, it invokes non-incremental
-search. Therefore, @kbd{C-s @key{RET}} invokes non-incremental search.
+search. Therefore, @kbd{C-s @key{RET}} invokes non-incremental search.
@kbd{C-r @key{RET}} also works this way.
@findex search-forward
@code{case-fold-search} to @code{nil}. Then all letters must match
exactly, including case. @code{case-fold-search} is a per-buffer
variable; altering it affects only the current buffer, but
-there is a default value which you can change as well. @xref{Locals}.
-You can also use @b{Case Sensitive Search} from the @b{Options} menu
+there is a default value which you can change as well. @xref{Locals}.
+You can also use @b{Case Sensitive Search} from the @b{Options} menu
on your screen.
@node Replace, Other Repeating Search, Search Case, Search
prompted for another input character. However, since the replacement has
already been made, @key{DEL} and @key{SPC} are equivalent. At this
point, you can type @kbd{C-r} (see below) to alter the replaced text. To
-undo the replacement, you can type @kbd{C-x u}.
+undo the replacement, you can type @kbd{C-x u}.
This exits the @code{query-replace}. If you want to do further
replacement you must use @kbd{C-x @key{ESC} @key{ESC}} to restart (@pxref{Repetition}).
-
@node Sending Mail, Reading Mail, Picture, Top
@chapter Sending Mail
@cindex mail
have been composing another message but have not sent it, a new mail
buffer will be created; in this way, you can compose multiple messages
at once. You can switch back to and complete an unsent message by using
-the normal buffer selection mechanisms.
+the normal buffer selection mechanisms.
@kbd{C-u C-x m} is another way to switch back to a message in progress:
it will search for an existing, unsent mail message buffer and select it.
@file{.mailrc} and a new local user is given a userid which conflicts
with one of your aliases.
-@vindex mail-abbrev-mode-regexp
+@vindex mail-abbrev-mode-regexp
Your mail alias abbrevs are in effect only when point is in an
appropriate header field. The mail aliases will not expand in the body
of the message, or in other header fields. The default mode-specific
That is, if you want an address to have embedded spaces, simply surround
it with double-quotes. The quotes are necessary because the format of
-the @file{.mailrc} file uses spaces as address delimiters.
+the @file{.mailrc} file uses spaces as address delimiters.
Aliases in the @file{.mailrc} file may be nested. For example, assume
you define aliases like:
@kbd{C-c C-f C-t} (@code{mail-to}) to move to the @samp{To} field, @kbd{C-c
C-f C-s} (@code{mail-subject}) for the @samp{Subject} field, and @kbd{C-c
C-f C-c} (@code{mail-cc}) for the @samp{CC} field. These fields have
-special motion commands because they are edited most frequently.
+special motion commands because they are edited most frequently.
@kindex C-c C-w (Mail mode)
directories as well as @code{data-directory}.
@end table
-
-
Important General Concepts
* Frame:: How to interpret what you see on the screen.
* Keystrokes:: Keyboard gestures SXEmacs recognizes.
-* Pull-down Menus::
+* Pull-down Menus::
The SXEmacs Pull-down Menus available under X.
-* Entering Emacs::
+* Entering Emacs::
Starting Emacs from the shell.
* Exiting:: Stopping or killing SXEmacs.
-* Command Switches::
+* Command Switches::
Hairy startup options.
* Startup Paths::
How SXEmacs finds Directories and Files.
Important Text-Changing Commands
* Mark:: The mark: how to delimit a ``region'' of text.
-* Mouse Selection::
+* Mouse Selection::
Selecting text with the mouse.
* Additional Mouse Operations::
Other operations available from the mouse.
The Organization of the Frame
-* Point:: The place in the text where editing commands operate.
-* Echo Area:: Short messages appear at the bottom of the frame.
-* Mode Line:: Interpreting the mode line.
-* SXEmacs under X:: Some information on using SXEmacs under the X
- Window System.
+* Point:: The place in the text where editing commands operate.
+* Echo Area:: Short messages appear at the bottom of the frame.
+* Mode Line:: Interpreting the mode line.
+* SXEmacs under X:: Some information on using SXEmacs under the X
+ Window System.
Keystrokes
* Super and Hyper Keys:: Adding modifier keys on certain keyboards.
* Character Representation:: How characters appear in SXEmacs buffers.
* Commands:: How commands are bound to key sequences.
-
+
Pull-down Menus
* File Menu:: Items on the File menu.
* Edit Menu:: Items on the Edit menu.
* Apps Menu:: Items on the Apps menu.
-* Options Menu:: Items on the Options menu.
+* Options Menu:: Items on the Options menu.
* Buffers Menu:: Information about the Buffers menu.
* Tools Menu:: Items on the Tools menu.
-* Help Menu:: Items on the Help menu.
+* Help Menu:: Items on the Help menu.
* Menu Customization:: Adding and removing menu items and related
operations.
to check files in or out.
* Log Entries:: Logging your changes.
* Change Logs and VC:: Generating a change log file from log
- entries.
+ entries.
* Old Versions:: Examining and comparing old versions.
* VC Status:: Commands to view the VC status of files and
look at log entries.
Tags Tables
-* Tag Syntax:: Tag syntax for various types of code and text files.
+* Tag Syntax:: Tag syntax for various types of code and text files.
* Create Tags Table:: Creating a tags table with @code{etags}.
* Select Tags Table:: How to visit a tags table.
-* Find Tag:: Commands to find the definition of a specific tag.
+* Find Tag:: Commands to find the definition of a specific tag.
* Tags Search:: Using a tags table for searching and replacing.
* List Tags:: Listing and finding tags defined in a file.
* Syntax:: The syntax table controls how words and expressions
are parsed.
* Init File:: How to write common customizations in the init file.
-* Audible Bell:: Changing how SXEmacs sounds the bell.
-* Faces:: Changing the fonts and colors of a region of text.
+* Audible Bell:: Changing how SXEmacs sounds the bell.
+* Faces:: Changing the fonts and colors of a region of text.
* X Resources:: X resources controlling various aspects of the
behavior of SXEmacs.
-
@node Text, Programs, Indentation, Top
@chapter Commands for Human Languages
@cindex text
@end table
@findex electric-nroff-mode
- The other feature of Nroff mode is Electric Nroff newline mode.
+ The other feature of Nroff mode is Electric Nroff newline mode.
This is a minor mode that you can turn on or off with
@kbd{M-x electric-nroff-mode} (@pxref{Minor Modes}). When the mode is
on and you use @key{RET} to end a line containing an nroff command
@noindent
Purchase orders are acceptable, but there is an extra charge of
-$10.00 to pay for processing charges. (The total cost comes to $150
+$10.00 to pay for processing charges. (The total cost comes to $150
for domestic sites, $175 for foreign sites).
The normal distribution is a tar tape, blocked 20, 1600 bpi, on an
-
@iftex
@chapter Correcting Mistakes (Yours or Emacs's)
If the manifestation of the bug is an Emacs error message, it is
important to report not just the text of the error message but a backtrace
showing how the Lisp program in Emacs arrived at the error. To make the
-backtrace, you must execute the Lisp expression
+backtrace, you must execute the Lisp expression
@code{(setq @w{debug-on-error t})} before the error happens (that is to
say, you must execute that expression and then make the bug happen). This
causes the Lisp debugger to run (@pxref{Lisp Debug}). The debugger's
@xref{Init File}. Be warned: it is often difficult, and sometimes
impossible, to fix a terminal-dependent bug without access to a terminal
of the type that stimulates the bug.@refill
-
-
@node Undo, Minibuffer, Basic, Top
@chapter Undoing Changes
@cindex undo
-
@node Windows, Mule, Buffers, Top
@chapter Multiple Windows
@cindex windows
@node subbuffer
@subsection The sub-buffer
-A program that talks to terminal expects the terminal to have a fixed size.
+A program that talks to terminal expects the terminal to have a fixed size.
If the program is talking a terminal emulator program such as @code{xterm},
that size can be changed (if the xterm window is re-sized), but programs
still assume a logical terminal that has a fixed size independent
@top The Emacs Widget Library
@menu
-* Introduction::
-* User Interface::
-* Programming Example::
-* Setting Up the Buffer::
-* Basic Types::
-* Sexp Types::
-* Widget Properties::
-* Defining New Widgets::
-* Widget Browser::
-* Widget Minor Mode::
-* Utilities::
-* Widget Wishlist::
+* Introduction::
+* User Interface::
+* Programming Example::
+* Setting Up the Buffer::
+* Basic Types::
+* Sexp Types::
+* Widget Properties::
+* Defining New Widgets::
+* Widget Browser::
+* Widget Minor Mode::
+* Utilities::
+* Widget Wishlist::
* Widget Internals::
@end menu
@item link
Areas of text with an associated action. Intended for hypertext links
embedded in text.
-@item push-button
+@item push-button
Like link, but intended for stand-alone buttons.
@item editable-field
An editable text field. It can be either variable or fixed length.
visible in the buffer.
@item item
A simple constant widget intended to be used in the @code{menu-choice} and
-@code{radio-button-choice} widgets.
+@code{radio-button-choice} widgets.
@item choice-item
A button item only intended for use in choices. When invoked, the user
will be asked to select another option from the choice widget.
@item toggle
A simple @samp{on}/@samp{off} switch.
@item checkbox
-A checkbox (@samp{[ ]}/@samp{[X]}).
+A checkbox (@samp{[ ]}/@samp{[X]}).
@item editable-list
Create an editable list. The user can insert or delete items in the
list. Each list item is itself a widget.
meaning. The user is not supposed to change or delete any of the text
between the fields. Examples of forms in Emacs are the @file{forms}
package (of course), the customize buffers, the mail and news compose
-modes, and the @sc{html} form support in the @file{w3} browser.
+modes, and the @sc{html} form support in the @file{w3} browser.
The advantages for a programmer of using the @code{widget} package to
implement forms are:
@enumerate
@item
-More complex fields than just editable text are supported.
+More complex fields than just editable text are supported.
@item
You can give the user immediate feedback if he enters invalid data in a
text field, and sometimes prevent entering invalid data.
-@item
+@item
You can have fixed sized fields, thus allowing multiple field to be
lined up in columns.
@item
-It is simple to query or set the value of a field.
-@item
+It is simple to query or set the value of a field.
+@item
Editing happens in buffer, not in the mini-buffer.
-@item
+@item
Packages using the library get a uniform look, making them easier for
the user to learn.
-@item
+@item
As support for embedded graphics improve, the widget library will
extended to support it. This means that your code using the widget
library will also use the new graphic features by automatic.
@table @file
@item widget.el
This will declare the user variables, define the function
-@code{define-widget}, and autoload the function @code{widget-create}.
+@code{define-widget}, and autoload the function @code{widget-create}.
@item wid-edit.el
Everything else is here, there is no reason to load it explicitly, as
it will be autoloaded when needed.
@b{[INS]} @b{[DEL]} @i{One}
@b{[INS]} @b{[DEL]} @i{Eh, two?}
@b{[INS]} @b{[DEL]} @i{Five!}
-@b{[INS]}
+@b{[INS]}
Select multiple:
the example, @samp{@b{Choose}} is an option field tag.
@item The @samp{@b{[INS]}} and @samp{@b{[DEL]}} buttons.
Activating these will insert or delete elements from an editable list.
-The list is created by the @code{editable-list} widget.
+The list is created by the @code{editable-list} widget.
@item Embedded Buttons.
The @samp{@b{_other work_}} is an example of an embedded
button. Embedded buttons are not associated with a fields, but can serve
These are explicit buttons made with the @code{push-button} widget. The main
difference from the @code{link} widget is that the buttons are will be
displayed as GUI buttons when possible.
-enough.
+enough.
@end table
-To make them easier to locate, buttons are emphasized in the buffer.
+To make them easier to locate, buttons are emphasized in the buffer.
@deffn Face widget-button-face
Face used for buttons.
(widget-insert "\nSee also ")
(widget-create 'link
:notify (lambda (&rest ignore)
- (widget-value-set widget-example-repeat
+ (widget-value-set widget-example-repeat
'("En" "To" "Tre"))
(widget-setup))
"other work")
'(item "One") '(item "Another One.") '(item "A Final One."))
(widget-insert "\n")
(widget-create 'push-button
- :notify (lambda (&rest ignore)
+ :notify (lambda (&rest ignore)
(if (= (length (widget-value widget-example-repeat))
3)
(message "Congratulation!")
Delete @var{widget} and remove it from the buffer.
@end defun
-@defun widget-setup
-Setup a buffer to support widgets.
+@defun widget-setup
+Setup a buffer to support widgets.
This should be called after creating all the widgets and before allowing
the user to edit them.
If you want to insert text outside the widgets in the form, the
recommended way to do that is with @code{widget-insert}.
-@defun widget-insert
+@defun widget-insert
Insert the arguments, either strings or characters, at point.
The inserted text will be read only.
@end defun
The text inside will be marked as a button.
By default, the text will be shown in @code{widget-button-face}, and
-surrounded by brackets.
+surrounded by brackets.
@defopt widget-button-prefix
String to prefix buttons.
representation of the value if there is no tag.
@item %%
-Insert a literal @samp{%}.
+Insert a literal @samp{%}.
@end table
@item :button-face
@item :doc
The string inserted by the @samp{%d} or @samp{%h} escape in the format
-string.
+string.
@item :tag
The string inserted by the @samp{%t} escape in the format
-string.
+string.
@item :tag-glyph
Name of image to use instead of the string specified by `:tag' on
@item
Widgets with tabbing order @code{-1} are ignored.
-@item
+@item
(Unimplemented) When on a widget with tabbing order @var{n}, go to the
next widget in the buffer with tabbing order @var{n+1} or @code{nil},
whichever comes first.
@end table
@deffn {User Option} widget-glyph-directory
-Directory where glyphs are found.
+Directory where glyphs are found.
Widget will look here for a file with the same name as specified for the
image, with either a @samp{.xpm} (if supported) or @samp{.xbm} extension.
@end deffn
@menu
-* link::
-* url-link::
-* info-link::
-* push-button::
-* editable-field::
-* text::
-* menu-choice::
-* radio-button-choice::
-* item::
-* choice-item::
-* toggle::
-* checkbox::
-* checklist::
-* editable-list::
-* group::
+* link::
+* url-link::
+* info-link::
+* push-button::
+* editable-field::
+* text::
+* menu-choice::
+* radio-button-choice::
+* item::
+* choice-item::
+* toggle::
+* checkbox::
+* checklist::
+* editable-list::
+* group::
@end menu
@node link, url-link, Basic Types, Basic Types
The @var{value}, if present, is used to initialize the @code{:value}
property. The value should be a string, which will be inserted in the
-buffer.
+buffer.
By default the link will be shown in brackets.
@end example
When this link is invoked, the @sc{www} browser specified by
-@code{browse-url-browser-function} will be called with @var{url}.
+@code{browse-url-browser-function} will be called with @var{url}.
@node info-link, push-button, url-link, Basic Types
@comment node-name, next, previous, up
@end example
When this link is invoked, the built-in info browser is started on
-@var{address}.
+@var{address}.
@node push-button, editable-field, info-link, Basic Types
@comment node-name, next, previous, up
The @var{value}, if present, is used to initialize the @code{:value}
property. The value should be a string, which will be inserted in the
-buffer.
+buffer.
By default the tag will be shown in brackets.
@item :value-face
Face used for highlighting the editable field. Default is
-@code{widget-field-face}.
+@code{widget-field-face}.
@item :secret
Character used to display the value. You can set this to e.g. @code{?*}
Keymap used in the editable field. The default value is
@code{widget-field-keymap}, which allows you to use all the normal
editing commands, even if the buffer's major mode suppress some of them.
-Pressing return invokes the function specified by @code{:action}.
+Pressing return invokes the function specified by @code{:action}.
@end table
@node text, menu-choice, editable-field, Basic Types
arguments.
@table @code
-@item :void
+@item :void
Widget type used as a fallback when the value does not match any of the
specified @var{type} arguments.
@item :children
A list whose car is the widget representing the currently chosen type in
-the buffer.
+the buffer.
@item :choice
The current chosen type
-@item :args
-The list of types.
+@item :args
+The list of types.
@end table
@node radio-button-choice, item, menu-choice, Basic Types
@item %b
Replace with the radio button.
@item %%
-Insert a literal @samp{%}.
+Insert a literal @samp{%}.
@end table
@item button-args
@item :choice
The current chosen type
-@item :args
-The list of types.
+@item :args
+The list of types.
@end table
You can add extra radio button items to a @code{radio-button-choice}
widget after it has been created with the function
-@code{widget-radio-add-item}.
+@code{widget-radio-add-item}.
@defun widget-radio-add-item widget type
Add to @code{radio-button-choice} widget @var{widget} a new radio button item of type
-@var{type}.
+@var{type}.
@end defun
Please note that such items added after the @code{radio-button-choice}
property. The value should be a string, which will be inserted in the
buffer as a button. Activating the button of a @code{choice-item} is
equivalent to activating the parent widget. This widget will only match
-the specified value.
+the specified value.
@node toggle, checkbox, choice-item, Basic Types
@comment node-name, next, previous, up
@table @code
@item :on
String representing the `on' state. By default the string @samp{on}.
-@item :off
+@item :off
String representing the `off' state. By default the string @samp{off}.
@item :on-glyph
Name of a glyph to be used instead of the `:on' text string, on emacsen
@item %b
Replace with the checkbox.
@item %%
-Insert a literal @samp{%}.
+Insert a literal @samp{%}.
@end table
@item :greedy
@item :children
The widgets representing each type.
-@item :args
-The list of types.
+@item :args
+The list of types.
@end table
@node editable-list, group, checklist, Basic Types
@end example
The value is a list, where each member represents one widget of type
-@var{type}.
+@var{type}.
The following extra properties are recognized.
@item %d
Insert the @b{[DEL]} button.
@item %%
-Insert a literal @samp{%}.
+Insert a literal @samp{%}.
@end table
@item :insert-button-args
TYPE ::= (group [KEYWORD ARGUMENT]... TYPE...)
@end example
-The value is a list, with one member for each @var{type}.
+The value is a list, with one member for each @var{type}.
@node Sexp Types, Widget Properties, Basic Types, Top
@comment
available. These basically fall in the following categories.
@menu
-* constants::
-* generic::
-* atoms::
-* composite::
+* constants::
+* generic::
+* atoms::
+* composite::
@end menu
@node constants, generic, Sexp Types, Sexp Types
@deffn Widget const
This will display any valid s-expression in an immutable part of the
-buffer.
+buffer.
@end deffn
There are two variations of the @code{const} widget, namely
@deffn Widget sexp
This will allow you to edit any valid s-expression in an editable buffer
-field.
+field.
The @code{sexp} widget takes the same keyword arguments as the
@code{editable-field} widget.
The atoms are s-expressions that does not consist of other
s-expressions. A string is an atom, while a list is a composite type.
-You can edit the value of an atom with the following widgets.
+You can edit the value of an atom with the following widgets.
The syntax for all the atoms are
@deffn Widget file
Allows you to edit a file name in an editable field. If you invoke
the tag button, you can edit the file name in the mini-buffer with
-completion.
+completion.
Keywords:
@table @code
@deffn Widget cons
The value of a @code{cons} widget is a cons-cell where the car is the
value of the first component and the cdr is the value of the second
-component. There must be exactly two components.
+component. There must be exactly two components.
@end deffn
@deffn Widget list
string string)))
@end example
-The value of a widget of this type will either have the form
+The value of a widget of this type will either have the form
@samp{(file t)} or @code{(file string string)}.
This concept of inline is probably hard to understand. It was certainly
Allows you to specify a type which must be a list whose elements all
belong to given set. The elements of the list is not significant. This
is implemented on top of the @code{checklist} basic widget, and has a
-similar syntax.
+similar syntax.
@end deffn
@deffn Widget repeat
widget again. It is enough to call @code{widget-setup} once if you
modify multiple widgets. This is currently only necessary if the widget
contains an editing field, but may be necessary for other widgets in the
-future.
+future.
If your application needs to associate some information with the widget
objects, for example a reference to the item being edited, it can be
@end defun
Occasionally it can be useful to know which kind of widget you have,
-i.e. the name of the widget type you gave when the widget was created.
+i.e. the name of the widget type you gave when the widget was created.
@defun widget-type widget
Return the name of @var{widget}, a symbol.
all its ancestors.
@lisp
-(while widget
+(while widget
(widget-apply widget :activate)
(setq widget (widget-get widget :parent)))
@end lisp
Define a new widget type named @var{name} from @code{class}.
@var{name} and class should both be symbols, @code{class} should be one
-of the existing widget types.
+of the existing widget types.
The third argument @var{DOC} is a documentation string for the widget.
function.
The following additional keyword arguments are useful when defining new
-widgets:
+widgets:
@table @code
@item :convert-widget
Method to convert type-specific components of a widget type before
Delete all @code{:children} and @code{:buttons} in @var{widget}.
@end defun
-@item :value-get
+@item :value-get
Function to extract the value of a widget, as it is displayed in the
-buffer.
+buffer.
The following predefined function can be used here:
If you want to define a new widget from scratch, use the @code{default}
widget as its base.
-@deffn Widget default
-Widget used as a base for other widgets.
+@deffn Widget default
+Widget used as a base for other widgets.
It provides most of the functionality that is referred to as ``by
-default'' in this text.
+default'' in this text.
@end deffn
In implementing complex hierarchical widgets (@emph{e.g.}, using the
There is a minor mode for manipulating widgets in major modes that
doesn't provide any support for widgets themselves. This is mostly
-intended to be useful for programmers doing experiments.
+intended to be useful for programmers doing experiments.
@deffn Command widget-minor-mode
Toggle minor mode for traversing widgets.
@section Wishlist
@itemize @bullet
-@item
+@item
It should be possible to add or remove items from a list with @kbd{C-k}
and @kbd{C-o} (suggested by @sc{rms}).
-@item
+@item
The @samp{[INS]} and @samp{[DEL]} buttons should be replaced by a single
dash (@samp{-}). The dash should be a button that, when invoked, ask
whether you want to add or delete an item (@sc{rms} wanted to git rid of
@item
Add commands to show overview of object and class hierarchies to the
-browser.
+browser.
-@item
+@item
Find a way to disable mouse highlight for inactive widgets.
@item
Find clean way to implement variable length list.
See @code{TeX-printer-list} for an explanation.
-@item
+@item
@kbd{C-h} in @code{widget-prompt-value} should give type specific help.
-@item
+@item
A mailto widget.
-@item
+@item
@kbd{C-e e} in a fixed size field should go to the end of the text in
-the field, not the end of the field itself.
+the field, not the end of the field itself.
@item
Use an overlay instead of markers to delimit the widget. Create