of the process.) Only one of these modules is actually used; this is
chosen by `configure'.
- crt0.c
+ ecrt0.c
lastfile.c
pre-crt0.c
instead the simpler `assert()' macro is used along with the various
checks provided by the `--error-check-*' configuration options.
- prefix-args.c
-
- This is actually the source for a small, self-contained program used
-during building.
-
universe.h
This is not currently used.
Basic Lisp Modules
==================
- emacsfns.h
lisp-disunion.h
lisp-union.h
lisp.h
=================================
event-Xt.c
+ event-msw.c
event-stream.c
event-tty.c
+ events-mod.h
+ gpmevent.c
+ gpmevent.h
events.c
events.h
"execute" those events; `dispatch-event' looks up events in the
relevant keymaps.)
- keyboard.c
+ cmdloop.c
- `keyboard.c' contains functions that implement the actual editor
+ `cmdloop.c' contains functions that implement the actual editor
command loop--i.e. the event loop that cyclically retrieves and
dispatches events. This code is also rather tricky, just like
`event-stream.c'.
Modules for the Basic Displayable Lisp Objects
==============================================
- device-ns.h
- device-stream.c
- device-stream.h
+ console-msw.c
+ console-msw.h
+ console-stream.c
+ console-stream.h
+ console-tty.c
+ console-tty.h
+ console-x.c
+ console-x.h
+ console.c
+ console.h
+
+ These modules implement the "console" Lisp object type. A console
+contains multiple display devices, but only one keyboard and mouse.
+Most of the time, a console will contain exactly one device.
+
+ Consoles are the top of a lisp object inclusion hierarchy. Consoles
+contain devices, which contain frames, which contain windows.
+
+ device-msw.c
device-tty.c
- device-tty.h
device-x.c
- device-x.h
device.c
device.h
The reason for this is that all of these subsystems have the same
subtypes (X, TTY, NeXTstep, Microsoft Windows, etc.) as devices do.
- frame-ns.h
+ frame-msw.c
frame-tty.c
frame-x.c
- frame-x.h
frame.c
frame.h
faces.h
bitmaps.h
- glyphs-ns.h
+ glyphs-eimage.c
+ glyphs-msw.c
+ glyphs-msw.h
+ glyphs-widget.c
glyphs-x.c
glyphs-x.h
glyphs.c
glyphs.h
- objects-ns.h
+ objects-msw.c
+ objects-msw.h
objects-tty.c
objects-tty.h
objects-x.c
objects.c
objects.h
+ menubar-msw.c
+ menubar-msw.h
menubar-x.c
menubar.c
+ menubar.h
+ scrollbar-msw.c
+ scrollbar-msw.h
scrollbar-x.c
scrollbar-x.h
scrollbar.c
scrollbar.h
+ toolbar-msw.c
toolbar-x.c
toolbar.c
toolbar.h
gifalloc.c
These modules decode GIF-format image files, for use with glyphs.
+These files were removed due to Unisys patent infringement concerns.
\1f
File: internals.info, Node: Modules for the Redisplay Mechanism, Next: Modules for Interfacing with the File System, Prev: Modules for other Display-Related Lisp Objects, Up: A Summary of the Various XEmacs Modules
===================================
redisplay-output.c
+ redisplay-msw.c
redisplay-tty.c
redisplay-x.c
redisplay.c
Similar to other subsystems in XEmacs, lstreams are separated into
generic functions and a set of methods for the different types of
lstreams. `lstream.c' provides implementations of many different types
-of streams; others are provided, e.g., in `mule-coding.c'.
+of streams; others are provided, e.g., in `file-coding.c'.
fileio.c
This module provides some terminal-control code necessary on
versions of AIX prior to 4.1.
- msdos.c
- msdos.h
-
- These modules are used for MS-DOS support, which does not work in
-XEmacs.
-
\1f
File: internals.info, Node: Modules for Interfacing with X Windows, Next: Modules for Internationalization, Prev: Modules for Interfacing with the Operating System, Up: A Summary of the Various XEmacs Modules
(graphics contexts) under the X Window System. This code is junky and
needs to be rewritten.
- xselect.c
+ select-msw.c
+ select-x.c
+ select.c
+ select.h
This module provides an interface to the X Window System's concept of
"selections", the standard way for X applications to communicate with
mule-ccl.c
mule-charset.c
mule-charset.h
- mule-coding.c
- mule-coding.h
+ file-coding.c
+ file-coding.h
mule-mcpath.c
mule-mcpath.h
mule-wnnfns.c
not just Asian languages (although they are generally the most
complicated to support). This code is still in beta.
- `mule-charset.*' and `mule-coding.*' provide the heart of the XEmacs
+ `mule-charset.*' and `file-coding.*' provide the heart of the XEmacs
MULE support. `mule-charset.*' implements the "charset" Lisp object
type, which encapsulates a character set (an ordered one- or
two-dimensional set of characters, such as US ASCII or JISX0208 Japanese
Kanji).
- `mule-coding.*' implements the "coding-system" Lisp object type,
+ `file-coding.*' implements the "coding-system" Lisp object type,
which encapsulates a method of converting between different encodings.
An encoding is a representation of a stream of characters, possibly
from multiple character sets, using a stream of bytes or words, and
`FOOBARP()', etc. macros in a `.h' (or occasionally `.c') file. To
create one of these, copy an existing model and modify as necessary.
+ *Please note:* If you define an lrecord in an external
+dynamically-loaded module, you must use `DECLARE_EXTERNAL_LRECORD',
+`DEFINE_EXTERNAL_LRECORD_IMPLEMENTATION', and
+`DEFINE_EXTERNAL_LRECORD_SEQUENCE_IMPLEMENTATION' instead of the
+non-EXTERNAL forms. These macros will dynamically add new type numbers
+to the global enum that records them, whereas the non-EXTERNAL forms
+assume that the programmer has already inserted the correct type numbers
+into the enum's code at compile-time.
+
The various methods in the lrecord implementation structure are:
1. A "mark" method. This is called during the marking stage and
The DOC file contents should probably end up in the dump file.
-\1f
-File: internals.info, Node: Events and the Event Loop, Next: Evaluation; Stack Frames; Bindings, Prev: Dumping, Up: Top
-
-Events and the Event Loop
-*************************
-
-* Menu:
-
-* Introduction to Events::
-* Main Loop::
-* Specifics of the Event Gathering Mechanism::
-* Specifics About the Emacs Event::
-* The Event Stream Callback Routines::
-* Other Event Loop Functions::
-* Converting Events::
-* Dispatching Events; The Command Builder::
-
Foundation instead of in the original English.
\1f
+File: internals.info, Node: Events and the Event Loop, Next: Evaluation; Stack Frames; Bindings, Prev: Dumping, Up: Top
+
+Events and the Event Loop
+*************************
+
+* Menu:
+
+* Introduction to Events::
+* Main Loop::
+* Specifics of the Event Gathering Mechanism::
+* Specifics About the Emacs Event::
+* The Event Stream Callback Routines::
+* Other Event Loop Functions::
+* Converting Events::
+* Dispatching Events; The Command Builder::
+
+\1f
File: internals.info, Node: Introduction to Events, Next: Main Loop, Prev: Events and the Event Loop, Up: Events and the Event Loop
Introduction to Events
the widget_instance tree recursively.
This has desirable properties such as lw_modify_all_widgets which is
-called from glyphs-x.c and updates all the properties of a widget
+called from `glyphs-x.c' and updates all the properties of a widget
without having to know what the widget is or what toolkit it is from.
Unfortunately this also has hairy properties such as making the lwlib
code quite complex. And of course lwlib has to know at some level what
This command unloads the library that provided feature FEATURE.
It undefines all functions, macros, and variables defined in that
library with `defconst', `defvar', `defun', `defmacro',
- `defsubst', `definf-function' and `defalias'. It then restores
+ `defsubst', `define-function' and `defalias'. It then restores
any autoloads formerly associated with those symbols. (Loading
saves these in the `autoload' property of the symbol.)
;; The user types `minibuffer.t <RET>'.
=> "minibuffer.texi"
- - Function: read-command prompt &optinal default-value
+ - Function: read-command prompt &optional default-value
This function reads the name of a command and returns it as a Lisp
symbol. The argument PROMPT is used as in `read-from-minibuffer'.
Recall that a command is anything for which `commandp' returns
Buffers in Emacs editing are objects that have distinct names and
hold text that can be edited. Buffers appear to Lisp programs as a
special data type. You can think of the contents of a buffer as an
-extendable string; insertions and deletions may occur in any part of
+extendible string; insertions and deletions may occur in any part of
the buffer. *Note Text::.
A Lisp buffer object contains numerous pieces of information. Some
- Function: window-point window
This function returns the current position of point in WINDOW.
- For a nonselected window, this is the value point would have (in
+ For a non-selected window, this is the value point would have (in
that window's buffer) if that window were selected.
When WINDOW is the selected window and its buffer is also the
- Function: valid-device-type-p device-type
This function returns whether DEVICE-TYPE (which should be a
- symbol) species a valid device type.
+ symbol) specifies a valid device type.
- Function: valid-device-class-p device-class
This function returns whether DEVICE-CLASS (which should be a
- symbol) species a valid device class.
+ symbol) specifies a valid device class.
- Variable: terminal-device
This variable holds the initial terminal device object, which
match, it matches the shortest match. `*?' is known as a
"non-greedy" quantifier, a regexp construct borrowed from Perl.
- This construct very useful for when you want to match the text
+ This construct is very useful for when you want to match the text
inside a pair of delimiters. For instance, `/\*.*?\*/' will match
- C comments in a string. This could not be achieved without the
- use of greedy quantifier.
+ C comments in a string. This could not easily be achieved without
+ the use of a non-greedy quantifier.
This construct has not been available prior to XEmacs 20.4. It is
not available in FSF Emacs.
`+?'
- is the `+' analog to `*?'.
+ is the non-greedy version of `+'.
+
+`??'
+ is the non-greedy version of `?'.
`\{n,m\}'
serves as an interval quantifier, analogous to `*' or `+', but
more than M times. This syntax is supported by most Unix regexp
utilities, and has been introduced to XEmacs for the version 20.3.
+ Unfortunately, the non-greedy version of this quantifier does not
+ exist currently, although it does in Perl.
+
`[ ... ]'
`[' begins a "character set", which is terminated by a `]'. In
the simplest case, the characters between the two brackets form
recorded for future reference.
This is useful when you need a lot of grouping `\( ... \)'
- constructs, but only want to remember one or two. Then you can use
- not want to remember them for later use with `match-string'.
+ constructs, but only want to remember one or two - or if you have
+ more than nine groupings and need to use backreferences to refer to
+ the groupings at the end.
Using `\(?: ... \)' rather than `\( ... \)' when you don't need
the captured substrings ought to speed up your programs some,
and specifies the load factor of the hash table which triggers
enlarging.
- Keyword `:weakness' can be `nil' (default), `t', `key' or `value'.
+ Non-standard keyword `:weakness' can be `nil' (default), `t',
+ `key-and-value', `key', `value' or `key-or-value'. `t' is an
+ alias for `key-and-value'.
- A weak hash table is one whose pointers do not count as GC
- referents: for any key-value pair in the hash table, if the only
+ A key-and-value-weak hash table, also known as a fully-weak or
+ simply as a weak hash table, is one whose pointers do not count as
+ GC referents: for any key-value pair in the hash table, if the only
remaining pointer to either the key or the value is in a weak hash
table, then the pair will be removed from the hash table, and the
key and value collected. A non-weak hash table (or any other
remain in the hash table if the value is pointed to by something
other than a weak hash table, even if the key is not.
+ A key-or-value-weak hash table is similar to a fully-weak hash
+ table except that a key-value pair will be removed only if the
+ value and the key remain unmarked outside of weak hash tables.
+ The pair will remain in the hash table if the value or key are
+ pointed to by something other than a weak hash table, even if the
+ other is not.
+
- Function: copy-hash-table hash-table
This function returns a new hash table which contains the same
keys and values as HASH-TABLE. The keys and values will not
This function returns the weakness of HASH-TABLE. This can be one
of `nil', `t', `key' or `value'.
-\1f
-File: lispref.info, Node: Working With Hash Tables, Next: Weak Hash Tables, Prev: Introduction to Hash Tables, Up: Hash Tables
-
-Working With Hash Tables
-========================
-
- - Function: puthash key value hash-table
- This function hashes KEY to VALUE in HASH-TABLE.
-
- - Function: gethash key hash-table &optional default
- This function finds the hash value for KEY in HASH-TABLE. If
- there is no entry for KEY in HASH-TABLE, DEFAULT is returned
- (which in turn defaults to `nil').
-
- - Function: remhash key hash-table
- This function removes the entry for KEY from HASH-TABLE. Does
- nothing if there is no entry for KEY in HASH-TABLE.
-
- - Function: clrhash hash-table
- This function removes all entries from HASH-TABLE, leaving it
- empty.
-
- - Function: maphash function hash-table
- This function maps FUNCTION over entries in HASH-TABLE, calling it
- with two args, each key and value in the hash table.
-
- FUNCTION may not modify HASH-TABLE, with the one exception that
- FUNCTION may remhash or puthash the entry currently being
- processed by FUNCTION.
-
Foundation instead of in the original English.
\1f
+File: lispref.info, Node: Working With Hash Tables, Next: Weak Hash Tables, Prev: Introduction to Hash Tables, Up: Hash Tables
+
+Working With Hash Tables
+========================
+
+ - Function: puthash key value hash-table
+ This function hashes KEY to VALUE in HASH-TABLE.
+
+ - Function: gethash key hash-table &optional default
+ This function finds the hash value for KEY in HASH-TABLE. If
+ there is no entry for KEY in HASH-TABLE, DEFAULT is returned
+ (which in turn defaults to `nil').
+
+ - Function: remhash key hash-table
+ This function removes the entry for KEY from HASH-TABLE. Does
+ nothing if there is no entry for KEY in HASH-TABLE.
+
+ - Function: clrhash hash-table
+ This function removes all entries from HASH-TABLE, leaving it
+ empty.
+
+ - Function: maphash function hash-table
+ This function maps FUNCTION over entries in HASH-TABLE, calling it
+ with two args, each key and value in the hash table.
+
+ FUNCTION may not modify HASH-TABLE, with the one exception that
+ FUNCTION may remhash or puthash the entry currently being
+ processed by FUNCTION.
+
+\1f
File: lispref.info, Node: Weak Hash Tables, Prev: Working With Hash Tables, Up: Hash Tables
Weak Hash Tables
(Otherwise, you'd have to explicitly map over the hash table every so
often and remove unnecessary elements.)
- There are three types of weak hash tables:
+ There are four types of weak hash tables:
-fully weak hash tables
- In these hash tables, a pair disappears if either the key or the
- value is unreferenced outside of the table.
+key-and-value-weak hash tables
+ In these hash tables, also known as fully weak or simply as weak
+ hash tables, a pair disappears if either the key or the value is
+ unreferenced outside of the table.
key-weak hash tables
In these hash tables, a pair disappears if the key is unreferenced
unreferenced outside of the table, regardless of how the key is
referenced.
+key-or-value-weak hash tables
+ In these hash tables, a pair disappears if both the key and the
+ value are unreferenced outside of the table.
+
Also see *Note Weak Lists::.
Weak hash tables are created by specifying the `:weakness' keyword to
can be any combination of `r' `w' and `+', for read, write, and
creation flags.
- TYPE can have the value `'dbm' or `'berkeley_db' to select the
+ TYPE can have the value `'dbm' or `'berkeley-db' to select the
type of database file to use. (Note: XEmacs may not support both
of these types.)
For a TYPE of `'dbm', there are no subtypes, so SUBTYPE should be
`nil'.
- For a TYPE of `'berkeley_db', the following subtypes are
+ For a TYPE of `'berkeley-db', the following subtypes are
available: `'hash', `'btree', and `'recno'. See the manpages for
- the Berkeley DB functions to more information about these types.
+ the Berkeley DB functions for more information about these types.
- Function: close-database obj
This function closes database OBJ.
section. XEmacs also sends signals automatically at certain times:
killing a buffer sends a `SIGHUP' signal to all its associated
processes; killing XEmacs sends a `SIGHUP' signal to all remaining
-processes. (`SIGHUP' is a signal that usually indicates that the user
-hung up the phone.)
+processes. (`SIGHUP' is a signal that indicates that the connection
+between the user and the process is broken, for example if a connection
+via a telephone line is hung up.)
Each of the signal-sending functions takes two optional arguments:
-PROCESS-NAME and CURRENT-GROUP.
+PROCESS and CURRENT-GROUP.
- The argument PROCESS-NAME must be either a process, the name of one,
-or `nil'. If it is `nil', the process defaults to the process
-associated with the current buffer. An error is signaled if
-PROCESS-NAME does not identify a process.
+ The argument PROCESS must be either a process or a buffer, the name
+of one, or `nil'. If it is `nil', the process defaults to the process
+associated with the current buffer. An error is signaled if PROCESS
+does not identify a process.
The argument CURRENT-GROUP is a flag that makes a difference when
you are running a job-control shell as an XEmacs subprocess. If it is
-non-`nil', then the signal is sent to the current process-group of the
-terminal that XEmacs uses to communicate with the subprocess. If the
-process is a job-control shell, this means the shell's current subjob.
-If it is `nil', the signal is sent to the process group of the
-immediate subprocess of XEmacs. If the subprocess is a job-control
-shell, this is the shell itself.
+non-`nil', then the signal is sent to the current foreground process
+group of the terminal that XEmacs uses to communicate with the
+subprocess. If the process is a job-control shell, this means the
+shell's current subjob. If it is `nil', the signal is sent to the
+process group of the immediate subprocess of XEmacs. If the subprocess
+is a job-control shell, this is the shell itself.
The flag CURRENT-GROUP has no effect when a pipe is used to
communicate with the subprocess, because the operating system does not
job-control shells won't work when a pipe is used. See
`process-connection-type' in *Note Asynchronous Processes::.
- - Function: interrupt-process &optional process-name current-group
- This function interrupts the process PROCESS-NAME by sending the
- signal `SIGINT'. Outside of XEmacs, typing the "interrupt
- character" (normally `C-c' on some systems, and `DEL' on others)
- sends this signal. When the argument CURRENT-GROUP is non-`nil',
- you can think of this function as "typing `C-c'" on the terminal
- by which XEmacs talks to the subprocess.
-
- - Function: kill-process &optional process-name current-group
- This function kills the process PROCESS-NAME by sending the signal
+ Some of the functions below take a SIGNAL argument, which identifies
+a signal to be sent. It must be either an integer or a symbol which
+names the signal, like `SIGSEGV'.
+
+ - Function: process-send-signal signal &optional process current-group
+ This function sends the signal SIGNAL to the process PROCESS. The
+ following functions can be implemented in terms of
+ `process-send-signal'.
+
+ - Function: interrupt-process &optional process current-group
+ This function interrupts the process PROCESS by sending the signal
+ `SIGINT'. Outside of XEmacs, typing the "interrupt character"
+ (normally `C-c') sends this signal. When the argument
+ CURRENT-GROUP is non-`nil', you can think of this function as
+ "typing `C-c'" on the terminal by which XEmacs talks to the
+ subprocess.
+
+ - Function: kill-process &optional process current-group
+ This function kills the process PROCESS by sending the signal
`SIGKILL'. This signal kills the subprocess immediately, and
cannot be handled by the subprocess.
- - Function: quit-process &optional process-name current-group
- This function sends the signal `SIGQUIT' to the process
- PROCESS-NAME. This signal is the one sent by the "quit character"
- (usually `C-b' or `C-\') when you are not inside XEmacs.
+ - Function: quit-process &optional process current-group
+ This function sends the signal `SIGQUIT' to the process PROCESS.
+ This signal is the one sent by the "quit character" (usually
+ `C-\') when you are not inside XEmacs.
- - Function: stop-process &optional process-name current-group
- This function stops the process PROCESS-NAME by sending the signal
+ - Function: stop-process &optional process current-group
+ This function stops the process PROCESS by sending the signal
`SIGTSTP'. Use `continue-process' to resume its execution.
On systems with job control, the "stop character" (usually `C-z')
non-`nil', you can think of this function as "typing `C-z'" on the
terminal XEmacs uses to communicate with the subprocess.
- - Function: continue-process &optional process-name current-group
+ - Function: continue-process &optional process current-group
This function resumes execution of the process PROCESS by sending
- it the signal `SIGCONT'. This presumes that PROCESS-NAME was
- stopped previously.
+ it the signal `SIGCONT'. This presumes that PROCESS was stopped
+ previously.
- Function: signal-process pid signal
- This function sends a signal to process PID, which need not be a
- child of XEmacs. The argument SIGNAL specifies which signal to
- send; it should be an integer.
+ This function sends a signal to the process with process id PID,
+ which need not be a child of XEmacs. The argument SIGNAL
+ specifies which signal to send.
\1f
File: lispref.info, Node: Output from Processes, Next: Sentinels, Prev: Signals to Processes, Up: Processes
byte 0x8F.
The advantage of a modal encoding is that it is generally more
-space-efficient, and is easily extendable because there are essentially
+space-efficient, and is easily extendible because there are essentially
an arbitrary number of escape sequences that can be created. The
disadvantage, however, is that it is much more difficult to work with
if it is not being processed in a sequential manner. In the non-modal
* >=: Comparison of Numbers.
* ? in character constant: Character Type.
* ? in regexp: Syntax of Regexps.
+* ?? in regexp: Syntax of Regexps.
* @ in interactive: Using Interactive.
* [ in regexp: Syntax of Regexps.
* [...] (Edebug): Specification List.
* process-name: Process Information.
* process-send-eof: Input to Processes.
* process-send-region: Input to Processes.
+* process-send-signal: Signals to Processes.
* process-send-string: Input to Processes.
* process-sentinel: Sentinels.
* process-status: Process Information.
END-INFO-DIR-ENTRY
\1f
-File: xemacs-faq.info, Node: Q3.0.4, Next: Q3.0.5, Prev: Q3.0.3, Up: Customization
-
-Q3.0.4: How can I add directories to the `load-path'?
------------------------------------------------------
-
- Here are two ways to do that, one that puts your directories at the
-front of the load-path, the other at the end:
-
- ;;; Add things at the beginning of the load-path, do not add
- ;;; duplicate directories:
- (pushnew "bar" load-path :test 'equal)
-
- (pushnew "foo" load-path :test 'equal)
-
- ;;; Add things at the end, unconditionally
- (setq load-path (nconc load-path '("foo" "bar")))
-
- keith (k.p.) hanlan <keithh@nortel.ca> writes:
-
- To add directories using Unix shell metacharacters use
- `expand-file-name' like this:
-
- (push (expand-file-name "~keithh/.emacsdir") load-path)
-
-\1f
-File: xemacs-faq.info, Node: Q3.0.5, Next: Q3.0.6, Prev: Q3.0.4, Up: Customization
-
-Q3.0.5: How to check if a lisp function is defined?
----------------------------------------------------
-
- Use the following elisp:
-
- (fboundp 'foo)
-
- It's almost always a mistake to test `emacs-version' or any similar
-variables.
-
- Instead, use feature-tests, such as `featurep', `boundp', `fboundp',
-or even simple behavioral tests, eg.:
-
- (defvar foo-old-losing-code-p
- (condition-case nil (progn (losing-code t) nil)
- (wrong-number-of-arguments t)))
-
- There is an incredible amount of broken code out there which could
-work much better more often in more places if it did the above instead
-of trying to divine its environment from the value of one variable.
-
-\1f
-File: xemacs-faq.info, Node: Q3.0.6, Next: Q3.0.7, Prev: Q3.0.5, Up: Customization
-
-Q3.0.6: Can I force the output of `(face-list)' to a buffer?
-------------------------------------------------------------
-
- It would be good having it in a buffer, as the output of
-`(face-list)' is too wide to fit to a minibuffer.
-
- Evaluate the expression in the `*scratch*' buffer with point after
-the rightmost paren and typing `C-j'.
-
- If the minibuffer smallness is the only problem you encounter, you
-can simply press `C-h l' to get the former minibuffer contents in a
-buffer.
-
-\1f
-File: xemacs-faq.info, Node: Q3.0.7, Next: Q3.0.8, Prev: Q3.0.6, Up: Customization
-
-Q3.0.7: Font selections in don't get saved after `Save Options'.
-----------------------------------------------------------------
-
- For XEmacs 19.14 and previous:
-
- John Mann <mannj@ll.mit.edu> writes:
-
- You have to go to Options->Frame Appearance and unselect
- `Frame-Local Font Menu'. If this option is selected, font changes
- are only applied to the _current_ frame and do _not_ get saved
- when you save options.
-
- For XEmacs 19.15 and later:
-
- Implement the above as well as set the following in your `.emacs'
-
- (setq options-save-faces t)
-
-\1f
-File: xemacs-faq.info, Node: Q3.0.8, Next: Q3.0.9, Prev: Q3.0.7, Up: Customization
-
-Q3.0.8: How do I get a single minibuffer frame?
------------------------------------------------
-
- Vin Shelton <acs@acm.org> writes:
-
- (setq initial-frame-plist '(minibuffer nil))
- (setq default-frame-plist '(minibuffer nil))
- (setq default-minibuffer-frame
- (make-frame
- '(minibuffer only
- width 86
- height 1
- menubar-visible-p nil
- default-toolbar-visible-p nil
- name "minibuffer"
- top -2
- left -2
- has-modeline-p nil)))
- (frame-notice-user-settings)
-
- *Please note:* The single minibuffer frame may not be to everyone's
-taste, and there any number of other XEmacs options settings that may
-make it difficult or inconvenient to use.
-
-\1f
-File: xemacs-faq.info, Node: Q3.0.9, Next: Q3.1.1, Prev: Q3.0.8, Up: Customization
-
-Q3.0.9: What is `Customize'?
-----------------------------
-
- Starting with XEmacs 20.2 there is new system 'Customize' for
-customizing XEmacs options.
-
- You can access `Customize' from the `Options' menu or invoking one
-of customize commands by typing eg. `M-x customize', `M-x
-customize-face', `M-x customize-variable' or `M-x customize-apropos'.
-
- Starting with XEmacs 20.3 there is also new `browser' mode for
-Customize. Try it out with `M-x customize-browse'
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.1, Next: Q3.1.2, Prev: Q3.0.9, Up: Customization
-
-3.1: X Window System & Resources
-================================
-
-Q3.1.1: Where is a list of X resources?
----------------------------------------
-
- Search through the `NEWS' file for `X Resources'. A fairly
-comprehensive list is given after it.
-
- In addition, an `app-defaults' file is supplied, `etc/Emacs.ad'
-listing the defaults. The file `etc/sample.Xdefaults' gives a set of
-defaults that you might consider. It is essentially the same as
-`etc/Emacs.ad' but some entries are slightly altered. Be careful about
-installing the contents of this file into your `.Xdefaults' or
-`.Xresources' file if you use GNU Emacs under X11 as well.
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.2, Next: Q3.1.3, Prev: Q3.1.1, Up: Customization
-
-Q3.1.2: How can I detect a color display?
------------------------------------------
-
- You can test the return value of the function `(device-class)', as
-in:
-
- (when (eq (device-class) 'color)
- (set-face-foreground 'font-lock-comment-face "Grey")
- (set-face-foreground 'font-lock-string-face "Red")
- ....
- )
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.3, Next: Q3.1.4, Prev: Q3.1.2, Up: Customization
-
-Q3.1.3: [This question intentionally left blank]
-------------------------------------------------
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.4, Next: Q3.1.5, Prev: Q3.1.3, Up: Customization
-
-Q3.1.4: [This question intentionally left blank]
-------------------------------------------------
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.5, Next: Q3.1.6, Prev: Q3.1.4, Up: Customization
-
-Q3.1.5: How can I get the icon to just say `XEmacs'?
-----------------------------------------------------
-
- I'd like the icon to just say `XEmacs', and not include the name of
-the current file in it.
-
- Add the following line to your `.emacs':
-
- (setq frame-icon-title-format "XEmacs")
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.6, Next: Q3.1.7, Prev: Q3.1.5, Up: Customization
-
-Q3.1.6: How can I have the window title area display the full path?
--------------------------------------------------------------------
-
- I'd like to have the window title area display the full
-directory/name of the current buffer file and not just the name.
-
- Add the following line to your `.emacs':
-
- (setq frame-title-format "%S: %f")
-
- A more sophisticated title might be:
-
- (setq frame-title-format
- '("%S: " (buffer-file-name "%f"
- (dired-directory dired-directory "%b"))))
-
- That is, use the file name, or the dired-directory, or the buffer
-name.
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.7, Next: Q3.1.8, Prev: Q3.1.6, Up: Customization
-
-Q3.1.7: `xemacs -name junk' doesn't work?
------------------------------------------
-
- When I run `xterm -name junk', I get an xterm whose class name
-according to xprop, is `junk'. This is the way it's supposed to work,
-I think. When I run `xemacs -name junk' the class name is not set to
-`junk'. It's still `emacs'. What does `xemacs -name' really do? The
-reason I ask is that my window manager (fvwm) will make a window sticky
-and I use XEmacs to read my mail. I want that XEmacs window to be
-sticky, without having to use the window manager's function to set the
-window sticky. What gives?
-
- `xemacs -name' sets the application name for the program (that is,
-the thing which normally comes from `argv[0]'). Using `-name' is the
-same as making a copy of the executable with that new name. The
-`WM_CLASS' property on each frame is set to the frame-name, and the
-application-class. So, if you did `xemacs -name FOO' and then created
-a frame named BAR, you'd get an X window with WM_CLASS = `( "BAR",
-"Emacs")'. However, the resource hierarchy for this widget would be:
-
- Name: FOO .shell .container .BAR
- Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
-
- instead of the default
-
- Name: xemacs.shell .container .emacs
- Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
-
- It is arguable that the first element of WM_CLASS should be set to
-the application-name instead of the frame-name, but I think that's less
-flexible, since it does not give you the ability to have multiple frames
-with different WM_CLASS properties. Another possibility would be for
-the default frame name to come from the application name instead of
-simply being `emacs'. However, at this point, making that change would
-be troublesome: it would mean that many users would have to make yet
-another change to their resource files (since the default frame name
-would suddenly change from `emacs' to `xemacs', or whatever the
-executable happened to be named), so we'd rather avoid it.
-
- To make a frame with a particular name use:
-
- (make-frame '((name . "the-name")))
-
-\1f
-File: xemacs-faq.info, Node: Q3.1.8, Next: Q3.2.1, Prev: Q3.1.7, Up: Customization
-
-Q3.1.8: `-iconic' doesn't work.
--------------------------------
-
- When I start up XEmacs using `-iconic' it doesn't work right. Using
-`-unmapped' on the command line, and setting the `initiallyUnmapped' X
-Resource don't seem to help much either...
-
- Ben Wing <ben@xemacs.org> writes:
-
- Ugh, this stuff is such an incredible mess that I've about given up
- getting it to work. The principal problem is numerous
- window-manager bugs...
-
-\1f
File: xemacs-faq.info, Node: Q3.2.1, Next: Q3.2.2, Prev: Q3.1.8, Up: Customization
3.2: Textual Fonts & Colors
Of course substitute your actual password for MYPASS.
+\1f
+File: xemacs-faq.info, Node: Q4.0.2, Next: Q4.0.3, Prev: Q4.0.1, Up: Subsystems
+
+Q4.0.2: How do I get VM to filter mail for me?
+----------------------------------------------
+
+ One possibility is to use procmail to split your mail before it gets
+to VM. I prefer this personally, since there are many strange and
+wonderful things one can do with procmail. Procmail may be found at
+`ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/'.
+
+ Also see the Mail Filtering FAQ at:
+`ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.3, Next: Q4.0.4, Prev: Q4.0.2, Up: Subsystems
+
+Q4.0.3: How can I get VM to automatically check for new mail?
+-------------------------------------------------------------
+
+ John Turner <turner@lanl.gov> writes:
+
+ Use the following:
+
+ (setq vm-auto-get-new-mail 60)
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.4, Next: Q4.0.5, Prev: Q4.0.3, Up: Subsystems
+
+Q4.0.4: [This question intentionally left blank]
+------------------------------------------------
+
+ Obsolete question, left blank to avoid renumbering.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.5, Next: Q4.0.6, Prev: Q4.0.4, Up: Subsystems
+
+Q4.0.5: How do I get my outgoing mail archived?
+-----------------------------------------------
+
+ (setq mail-archive-file-name "~/outbox")
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.6, Next: Q4.0.7, Prev: Q4.0.5, Up: Subsystems
+
+Q4.0.6: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
+---------------------------------------------------------------------------------------------------------------------
+
+ Set `vm-reply-ignored-addresses' to a list, like
+
+ (setq vm-reply-ignored-addresses
+ '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
+ "wing@netcom.com" "wing@xemacs.org"))
+
+ Note that each string is a regular expression.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.7, Next: Q4.0.8, Prev: Q4.0.6, Up: Subsystems
+
+Q4.0.7: Is there a mailing list or FAQ for VM?
+----------------------------------------------
+
+ A FAQ for VM exists at `http://www.cyberpass.net/~gorkab/vmfaq.htm'.
+
+ VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.8, Next: Q4.0.9, Prev: Q4.0.7, Up: Subsystems
+
+Q4.0.8: Remote mail reading with VM.
+------------------------------------
+
+ My mailbox lives at the office on a big honkin server. My regular
+INBOX lives on my honkin desktop machine. I now can PPP to the office
+from home which is far from honking... I'd like to be able to read
+mail at home without storing it here and I'd like to use xemacs and VM
+at home... Is there a recommended setup?
+
+ Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
+
+ There are several ways to do this.
+
+ 1. Set your display to your home machine and run dxpc or one of
+ the other X compressors.
+
+ 2. NFS mount your desktop machine on your home machine and
+ modify your pop command on your home machine to rsh to your
+ desktop machine and actually do the pop get's.
+
+ 3. Run a POP server on your desktop machine as well and do a
+ sort of two tiered POP get.
+
+ William Perry <wmperry@monolith.spry.com> adds:
+
+ Or you could run a pop script periodically on your desktop
+ machine, and just use ange-ftp or NFS to get to your mailbox. I
+ used to do this all the time back at IU.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.9, Next: Q4.0.10, Prev: Q4.0.8, Up: Subsystems
+
+Q4.0.9: rmail or VM gets an error incorporating new mail.
+---------------------------------------------------------
+
+ Quoting the XEmacs PROBLEMS file:
+
+ rmail and VM get new mail from `/usr/spool/mail/$USER' using a
+ program called `movemail'. This program interlocks with
+ `/bin/mail' using the protocol defined by `/bin/mail'.
+
+ There are two different protocols in general use. One of them
+ uses the `flock' system call. The other involves creating a lock
+ file; `movemail' must be able to write in `/usr/spool/mail' in
+ order to do this. You control which one is used by defining, or
+ not defining, the macro `MAIL_USE_FLOCK' in `config.h' or the m-
+ or s- file it includes.
+
+ *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
+ SYSTEM, YOU CAN LOSE MAIL!*
+
+ If your system uses the lock file protocol, and fascist
+ restrictions prevent ordinary users from writing the lock files in
+ `/usr/spool/mail', you may need to make `movemail' setgid to a
+ suitable group such as `mail'. You can use these commands (as
+ root):
+
+ chgrp mail movemail
+ chmod 2755 movemail
+
+ If your system uses the lock file protocol, and fascist
+ restrictions prevent ordinary users from writing the lock files in
+ `/usr/spool/mail', you may need to make `movemail' setgid to a
+ suitable group such as `mail'. To do this, use the following
+ commands (as root) after doing the make install.
+
+ chgrp mail movemail
+ chmod 2755 movemail
+
+ Installation normally copies movemail from the build directory to
+ an installation directory which is usually under `/usr/local/lib'.
+ The installed copy of `movemail' is usually in the directory
+ `/usr/local/lib/emacs/VERSION/TARGET'. You must change the group
+ and mode of the installed copy; changing the group and mode of the
+ build directory copy is ineffective.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.10, Next: Q4.0.11, Prev: Q4.0.9, Up: Subsystems
+
+Q4.0.10: How do I make VM stay in a single frame?
+-------------------------------------------------
+
+ John.John S Cooper <Cooper@Eng.Sun.COM> writes:
+
+ ; Don't use multiple frames
+ (setq vm-frame-per-composition nil)
+ (setq vm-frame-per-folder nil)
+ (setq vm-frame-per-edit nil)
+ (setq vm-frame-per-summary nil)
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.11, Next: Q4.0.12, Prev: Q4.0.10, Up: Subsystems
+
+Q4.0.11: How do I make VM or mh-e display graphical smilies?
+------------------------------------------------------------
+
+ For mh-e use the following:
+
+ (add-hook 'mh-show-mode-hook '(lambda ()
+ (smiley-region (point-min)
+ (point-max))))
+
+ WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
+ (autoload 'smiley-region "smiley" nil t)
+ (add-hook 'vm-select-message-hook
+ '(lambda ()
+ (smiley-region (point-min)
+ (point-max))))
+
+ For tm use the following:
+ (autoload 'smiley-buffer "smiley" nil t)
+ (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.12, Next: Q4.1.1, Prev: Q4.0.11, Up: Subsystems
+
+Q4.0.12: Customization of VM not covered in the manual, or here.
+----------------------------------------------------------------
+
+ giacomo boffi <boffi@hp735.stru.polimi.it> writes:
+
+ The meta-answer is to look into the file `vm-vars.el', in the vm
+ directory of the lisp library.
+
+ `vm-vars.el' contains, initializes and carefully describes, with
+ examples of usage, the plethora of user options that _fully_
+ control VM's behavior.
+
+ Enter vm-vars, `forward-search' for toolbar, find the variables
+ that control the toolbar placement, appearance, existence, copy to
+ your `.emacs' or `.vm' and modify according to the detailed
+ instructions.
+
+ The above also applies to all the various features of VM: search
+ for some keywords, maybe the first you conjure isn't appropriate,
+ find the appropriate variables, copy and experiment.
+
+\1f
+File: xemacs-faq.info, Node: Q4.1.1, Next: Q4.1.2, Prev: Q4.0.12, Up: Subsystems
+
+4.1: Web browsing with W3
+=========================
+
+Q4.1.1: What is W3?
+-------------------
+
+ W3 is an advanced graphical browser written in Emacs lisp that runs
+on XEmacs. It has full support for cascaded style sheets, and more...
+
+ It has a home web page at
+`http://www.cs.indiana.edu/elisp/w3/docs.html'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.1.2, Next: Q4.1.3, Prev: Q4.1.1, Up: Subsystems
+
+Q4.1.2: How do I run W3 from behind a firewall?
+-----------------------------------------------
+
+ There is a long, well-written, detailed section in the W3 manual that
+describes how to do this. Look in the section entitled "Firewalls".
+
+\1f
+File: xemacs-faq.info, Node: Q4.1.3, Next: Q4.2.1, Prev: Q4.1.2, Up: Subsystems
+
+Q4.1.3: Is it true that W3 supports style sheets and tables?
+------------------------------------------------------------
+
+ Yes, and much more. W3, as distributed with the latest XEmacs is a
+full-featured web browser.
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.1, Next: Q4.2.2, Prev: Q4.1.3, Up: Subsystems
+
+4.2: Reading Netnews and Mail with Gnus
+=======================================
+
+Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+--------------------------------------------------------------------------------
+
+ The Gnus numbering issues are not meant for mere mortals to know
+them. If you feel you _must_ enter the muddy waters of Gnus, visit the
+excellent FAQ, maintained by Justin Sheehy, at:
+
+ `http://www.ccs.neu.edu/software/contrib/gnus/'
+
+ See also Gnus home page
+ `http://www.gnus.org/'
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.2, Next: Q4.2.3, Prev: Q4.2.1, Up: Subsystems
+
+Q4.2.2: This question intentionally left blank.
+-----------------------------------------------
+
+ Obsolete question, left blank to avoid renumbering.
+
END-INFO-DIR-ENTRY
\1f
-File: xemacs-faq.info, Node: Q4.0.2, Next: Q4.0.3, Prev: Q4.0.1, Up: Subsystems
-
-Q4.0.2: How do I get VM to filter mail for me?
-----------------------------------------------
-
- One possibility is to use procmail to split your mail before it gets
-to VM. I prefer this personally, since there are many strange and
-wonderful things one can do with procmail. Procmail may be found at
-`ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/'.
-
- Also see the Mail Filtering FAQ at:
-`ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq'.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.3, Next: Q4.0.4, Prev: Q4.0.2, Up: Subsystems
-
-Q4.0.3: How can I get VM to automatically check for new mail?
--------------------------------------------------------------
-
- John Turner <turner@lanl.gov> writes:
-
- Use the following:
-
- (setq vm-auto-get-new-mail 60)
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.4, Next: Q4.0.5, Prev: Q4.0.3, Up: Subsystems
-
-Q4.0.4: [This question intentionally left blank]
-------------------------------------------------
-
- Obsolete question, left blank to avoid renumbering.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.5, Next: Q4.0.6, Prev: Q4.0.4, Up: Subsystems
-
-Q4.0.5: How do I get my outgoing mail archived?
------------------------------------------------
-
- (setq mail-archive-file-name "~/outbox")
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.6, Next: Q4.0.7, Prev: Q4.0.5, Up: Subsystems
-
-Q4.0.6: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
----------------------------------------------------------------------------------------------------------------------
-
- Set `vm-reply-ignored-addresses' to a list, like
-
- (setq vm-reply-ignored-addresses
- '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
- "wing@netcom.com" "wing@xemacs.org"))
-
- Note that each string is a regular expression.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.7, Next: Q4.0.8, Prev: Q4.0.6, Up: Subsystems
-
-Q4.0.7: Is there a mailing list or FAQ for VM?
-----------------------------------------------
-
- A FAQ for VM exists at `http://www.cyberpass.net/~gorkab/vmfaq.htm'.
-
- VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.8, Next: Q4.0.9, Prev: Q4.0.7, Up: Subsystems
-
-Q4.0.8: Remote mail reading with VM.
-------------------------------------
-
- My mailbox lives at the office on a big honkin server. My regular
-INBOX lives on my honkin desktop machine. I now can PPP to the office
-from home which is far from honking... I'd like to be able to read
-mail at home without storing it here and I'd like to use xemacs and VM
-at home... Is there a recommended setup?
-
- Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
-
- There are several ways to do this.
-
- 1. Set your display to your home machine and run dxpc or one of
- the other X compressors.
-
- 2. NFS mount your desktop machine on your home machine and
- modify your pop command on your home machine to rsh to your
- desktop machine and actually do the pop get's.
-
- 3. Run a POP server on your desktop machine as well and do a
- sort of two tiered POP get.
-
- William Perry <wmperry@monolith.spry.com> adds:
-
- Or you could run a pop script periodically on your desktop
- machine, and just use ange-ftp or NFS to get to your mailbox. I
- used to do this all the time back at IU.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.9, Next: Q4.0.10, Prev: Q4.0.8, Up: Subsystems
-
-Q4.0.9: rmail or VM gets an error incorporating new mail.
----------------------------------------------------------
-
- Quoting the XEmacs PROBLEMS file:
-
- rmail and VM get new mail from `/usr/spool/mail/$USER' using a
- program called `movemail'. This program interlocks with
- `/bin/mail' using the protocol defined by `/bin/mail'.
-
- There are two different protocols in general use. One of them
- uses the `flock' system call. The other involves creating a lock
- file; `movemail' must be able to write in `/usr/spool/mail' in
- order to do this. You control which one is used by defining, or
- not defining, the macro `MAIL_USE_FLOCK' in `config.h' or the m-
- or s- file it includes.
-
- *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
- SYSTEM, YOU CAN LOSE MAIL!*
-
- If your system uses the lock file protocol, and fascist
- restrictions prevent ordinary users from writing the lock files in
- `/usr/spool/mail', you may need to make `movemail' setgid to a
- suitable group such as `mail'. You can use these commands (as
- root):
-
- chgrp mail movemail
- chmod 2755 movemail
-
- If your system uses the lock file protocol, and fascist
- restrictions prevent ordinary users from writing the lock files in
- `/usr/spool/mail', you may need to make `movemail' setgid to a
- suitable group such as `mail'. To do this, use the following
- commands (as root) after doing the make install.
-
- chgrp mail movemail
- chmod 2755 movemail
-
- Installation normally copies movemail from the build directory to
- an installation directory which is usually under `/usr/local/lib'.
- The installed copy of `movemail' is usually in the directory
- `/usr/local/lib/emacs/VERSION/TARGET'. You must change the group
- and mode of the installed copy; changing the group and mode of the
- build directory copy is ineffective.
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.10, Next: Q4.0.11, Prev: Q4.0.9, Up: Subsystems
-
-Q4.0.10: How do I make VM stay in a single frame?
--------------------------------------------------
-
- John.John S Cooper <Cooper@Eng.Sun.COM> writes:
-
- ; Don't use multiple frames
- (setq vm-frame-per-composition nil)
- (setq vm-frame-per-folder nil)
- (setq vm-frame-per-edit nil)
- (setq vm-frame-per-summary nil)
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.11, Next: Q4.0.12, Prev: Q4.0.10, Up: Subsystems
-
-Q4.0.11: How do I make VM or mh-e display graphical smilies?
-------------------------------------------------------------
-
- For mh-e use the following:
-
- (add-hook 'mh-show-mode-hook '(lambda ()
- (smiley-region (point-min)
- (point-max))))
-
- WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
- (autoload 'smiley-region "smiley" nil t)
- (add-hook 'vm-select-message-hook
- '(lambda ()
- (smiley-region (point-min)
- (point-max))))
-
- For tm use the following:
- (autoload 'smiley-buffer "smiley" nil t)
- (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
-
-\1f
-File: xemacs-faq.info, Node: Q4.0.12, Next: Q4.1.1, Prev: Q4.0.11, Up: Subsystems
-
-Q4.0.12: Customization of VM not covered in the manual, or here.
-----------------------------------------------------------------
-
- giacomo boffi <boffi@hp735.stru.polimi.it> writes:
-
- The meta-answer is to look into the file `vm-vars.el', in the vm
- directory of the lisp library.
-
- `vm-vars.el' contains, initializes and carefully describes, with
- examples of usage, the plethora of user options that _fully_
- control VM's behavior.
-
- Enter vm-vars, `forward-search' for toolbar, find the variables
- that control the toolbar placement, appearance, existence, copy to
- your `.emacs' or `.vm' and modify according to the detailed
- instructions.
-
- The above also applies to all the various features of VM: search
- for some keywords, maybe the first you conjure isn't appropriate,
- find the appropriate variables, copy and experiment.
-
-\1f
-File: xemacs-faq.info, Node: Q4.1.1, Next: Q4.1.2, Prev: Q4.0.12, Up: Subsystems
-
-4.1: Web browsing with W3
-=========================
-
-Q4.1.1: What is W3?
--------------------
-
- W3 is an advanced graphical browser written in Emacs lisp that runs
-on XEmacs. It has full support for cascaded style sheets, and more...
-
- It has a home web page at
-`http://www.cs.indiana.edu/elisp/w3/docs.html'.
-
-\1f
-File: xemacs-faq.info, Node: Q4.1.2, Next: Q4.1.3, Prev: Q4.1.1, Up: Subsystems
-
-Q4.1.2: How do I run W3 from behind a firewall?
------------------------------------------------
-
- There is a long, well-written, detailed section in the W3 manual that
-describes how to do this. Look in the section entitled "Firewalls".
-
-\1f
-File: xemacs-faq.info, Node: Q4.1.3, Next: Q4.2.1, Prev: Q4.1.2, Up: Subsystems
-
-Q4.1.3: Is it true that W3 supports style sheets and tables?
-------------------------------------------------------------
-
- Yes, and much more. W3, as distributed with the latest XEmacs is a
-full-featured web browser.
-
-\1f
-File: xemacs-faq.info, Node: Q4.2.1, Next: Q4.2.2, Prev: Q4.1.3, Up: Subsystems
-
-4.2: Reading Netnews and Mail with Gnus
-=======================================
-
-Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
---------------------------------------------------------------------------------
-
- The Gnus numbering issues are not meant for mere mortals to know
-them. If you feel you _must_ enter the muddy waters of Gnus, visit the
-excellent FAQ, maintained by Justin Sheehy, at:
-
- `http://www.ccs.neu.edu/software/contrib/gnus/'
-
- See also Gnus home page
- `http://www.gnus.org/'
-
-\1f
-File: xemacs-faq.info, Node: Q4.2.2, Next: Q4.2.3, Prev: Q4.2.1, Up: Subsystems
-
-Q4.2.2: This question intentionally left blank.
------------------------------------------------
-
- Obsolete question, left blank to avoid renumbering.
-
-\1f
File: xemacs-faq.info, Node: Q4.2.3, Next: Q4.2.4, Prev: Q4.2.2, Up: Subsystems
Q4.2.3: How do I make Gnus stay within a single frame?
* Q5.1.4:: What is the performance hit of `let'?
* Q5.1.5:: What is the recommended use of `setq'?
* Q5.1.6:: What is the typical misuse of `setq'?
-* Q5.1.7:: I like the the `do' form of cl, does it slow things down?
+* Q5.1.7:: I like the `do' form of cl, does it slow things down?
* Q5.1.8:: I like recursion, does it slow things down?
* Q5.1.9:: How do I put a glyph as annotation in a buffer?
* Q5.1.10:: `map-extents' won't traverse all of my extents!
(global-set-key [unknown_keysym_0x4]
(lambda () (interactive) (cg--generate-char-event 4)))
+\1f
+File: xemacs-faq.info, Node: Q5.1.3, Next: Q5.1.4, Prev: Q5.1.2, Up: Miscellaneous
+
+Q5.1.3: Could you explain `read-kbd-macro' in more detail?
+----------------------------------------------------------
+
+ The `read-kbd-macro' function returns the internal Emacs
+representation of a human-readable string (which is its argument).
+Thus:
+
+ (read-kbd-macro "C-c C-a")
+ => [(control ?c) (control ?a)]
+
+ (read-kbd-macro "C-c C-. <up>")
+ => [(control ?c) (control ?.) up]
+
+ In GNU Emacs the same forms will be evaluated to what GNU Emacs
+understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
+up]', respectively.
+
+ The exact "human-readable" syntax is defined in the docstring of
+`edmacro-mode'. I'll repeat it here, for completeness.
+
+ Format of keyboard macros during editing:
+
+ Text is divided into "words" separated by whitespace. Except for
+ the words described below, the characters of each word go directly
+ as characters of the macro. The whitespace that separates words is
+ ignored. Whitespace in the macro must be written explicitly, as in
+ `foo <SPC> bar <RET>'.
+
+ * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
+ and `NUL' represent special control characters. The words
+ must be written in uppercase.
+
+ * A word in angle brackets, e.g., `<return>', `<down>', or
+ `<f1>', represents a function key. (Note that in the standard
+ configuration, the function key `<return>' and the control key
+ <RET> are synonymous.) You can use angle brackets on the
+ words <RET>, <SPC>, etc., but they are not required there.
+
+ * Keys can be written by their ASCII code, using a backslash
+ followed by up to six octal digits. This is the only way to
+ represent keys with codes above \377.
+
+ * One or more prefixes `M-' (meta), `C-' (control), `S-'
+ (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
+ precede a character or key notation. For function keys, the
+ prefixes may go inside or outside of the brackets: `C-<down>'
+ == `<C-down>'. The prefixes may be written in any order:
+ `M-C-x' == `C-M-x'.
+
+ Prefixes are not allowed on multi-key words, e.g., `C-abc',
+ except that the Meta prefix is allowed on a sequence of
+ digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
+
+ * The `^' notation for control characters also works: `^M' ==
+ `C-m'.
+
+ * Double angle brackets enclose command names: `<<next-line>>'
+ is shorthand for `M-x next-line <RET>'.
+
+ * Finally, `REM' or `;;' causes the rest of the line to be
+ ignored as a comment.
+
+ Any word may be prefixed by a multiplier in the form of a decimal
+ number and `*': `3*<right>' == `<right> <right> <right>', and
+ `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
+
+ Multiple text keys can normally be strung together to form a word,
+ but you may need to add whitespace if the word would look like one
+ of the above notations: `; ; ;' is a keyboard macro with three
+ semicolons, but `;;;' is a comment. Likewise, `\ 1 2 3' is four
+ keys but `\123' is a single key written in octal, and `< right >'
+ is seven keys but `<right>' is a single function key. When in
+ doubt, use whitespace.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.4, Next: Q5.1.5, Prev: Q5.1.3, Up: Miscellaneous
+
+Q5.1.4: What is the performance hit of `let'?
+---------------------------------------------
+
+ In most cases, not noticeable. Besides, there's no avoiding
+`let'--you have to bind your local variables, after all. Some pose a
+question whether to nest `let's, or use one `let' per function. I
+think because of clarity and maintenance (and possible future
+implementation), `let'-s should be used (nested) in a way to provide
+the clearest code.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.5, Next: Q5.1.6, Prev: Q5.1.4, Up: Miscellaneous
+
+Q5.1.5: What is the recommended use of `setq'?
+----------------------------------------------
+
+ * Global variables
+
+ You will typically `defvar' your global variable to a default
+ value, and use `setq' to set it later.
+
+ It is never a good practice to `setq' user variables (like
+ `case-fold-search', etc.), as it ignores the user's choice
+ unconditionally. Note that `defvar' doesn't change the value of a
+ variable if it was bound previously. If you wish to change a
+ user-variable temporarily, use `let':
+
+ (let ((case-fold-search nil))
+ ... ; code with searches that must be case-sensitive
+ ...)
+
+ You will notice the user-variables by their docstrings beginning
+ with an asterisk (a convention).
+
+ * Local variables
+
+ Bind them with `let', which will unbind them (or restore their
+ previous value, if they were bound) after exiting from the `let'
+ form. Change the value of local variables with `setq' or whatever
+ you like (e.g. `incf', `setf' and such). The `let' form can even
+ return one of its local variables.
+
+ Typical usage:
+
+ ;; iterate through the elements of the list returned by
+ ;; `hairy-function-that-returns-list'
+ (let ((l (hairy-function-that-returns-list)))
+ (while l
+ ... do something with (car l) ...
+ (setq l (cdr l))))
+
+ Another typical usage includes building a value simply to work
+ with it.
+
+ ;; Build the mode keymap out of the key-translation-alist
+ (let ((inbox (file-truename (expand-file-name box)))
+ (i 0))
+ ... code dealing with inbox ...
+ inbox)
+
+ This piece of code uses the local variable `inbox', which becomes
+ unbound (or regains old value) after exiting the form. The form
+ also returns the value of `inbox', which can be reused, for
+ instance:
+
+ (setq foo-processed-inbox
+ (let .....))
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.6, Next: Q5.1.7, Prev: Q5.1.5, Up: Miscellaneous
+
+Q5.1.6: What is the typical misuse of `setq' ?
+----------------------------------------------
+
+ A typical misuse is probably `setq'ing a variable that was meant to
+be local. Such a variable will remain bound forever, never to be
+garbage-collected. For example, the code doing:
+
+ (defun my-function (whatever)
+ (setq a nil)
+ ... build a large list ...
+ ... and exit ...)
+
+ does a bad thing, as `a' will keep consuming memory, never to be
+unbound. The correct thing is to do it like this:
+
+ (defun my-function (whatever)
+ (let (a) ; default initialization is to nil
+ ... build a large list ...
+ ... and exit, unbinding `a' in the process ...)
+
+ Not only is this prettier syntactically, but it makes it possible for
+Emacs to garbage-collect the objects which `a' used to reference.
+
+ Note that even global variables should not be `setq'ed without
+`defvar'ing them first, because the byte-compiler issues warnings. The
+reason for the warning is the following:
+
+ (defun flurgoze nil) ; ok, global internal variable
+ ...
+
+ (setq flurghoze t) ; ops! a typo, but semantically correct.
+ ; however, the byte-compiler warns.
+
+ While compiling toplevel forms:
+ ** assignment to free variable flurghoze
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.7, Next: Q5.1.8, Prev: Q5.1.6, Up: Miscellaneous
+
+Q5.1.7: I like the `do' form of cl, does it slow things down?
+-------------------------------------------------------------
+
+ It shouldn't. Here is what Dave Gillespie has to say about cl.el
+performance:
+
+ Many of the advanced features of this package, such as `defun*',
+ `loop', and `setf', are implemented as Lisp macros. In
+ byte-compiled code, these complex notations will be expanded into
+ equivalent Lisp code which is simple and efficient. For example,
+ the forms
+
+ (incf i n)
+ (push x (car p))
+
+ are expanded at compile-time to the Lisp forms
+
+ (setq i (+ i n))
+ (setcar p (cons x (car p)))
+
+ which are the most efficient ways of doing these respective
+ operations in Lisp. Thus, there is no performance penalty for
+ using the more readable `incf' and `push' forms in your compiled
+ code.
+
+ _Interpreted_ code, on the other hand, must expand these macros
+ every time they are executed. For this reason it is strongly
+ recommended that code making heavy use of macros be compiled. (The
+ features labelled "Special Form" instead of "Function" in this
+ manual are macros.) A loop using `incf' a hundred times will
+ execute considerably faster if compiled, and will also
+ garbage-collect less because the macro expansion will not have to
+ be generated, used, and thrown away a hundred times.
+
+ You can find out how a macro expands by using the `cl-prettyexpand'
+ function.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.8, Next: Q5.1.9, Prev: Q5.1.7, Up: Miscellaneous
+
+Q5.1.8: I like recursion, does it slow things down?
+---------------------------------------------------
+
+ Yes. Emacs byte-compiler cannot do much to optimize recursion. But
+think well whether this is a real concern in Emacs. Much of the Emacs
+slowness comes from internal mechanisms such as redisplay, or from the
+fact that it is an interpreter.
+
+ Please try not to make your code much uglier to gain a very small
+speed gain. It's not usually worth it.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.9, Next: Q5.1.10, Prev: Q5.1.8, Up: Miscellaneous
+
+Q5.1.9: How do I put a glyph as annotation in a buffer?
+-------------------------------------------------------
+
+ Here is a solution that will insert the glyph annotation at the
+beginning of buffer:
+
+ (make-annotation (make-glyph '([FORMAT :file FILE]
+ [string :data "fallback-text"]))
+ (point-min)
+ 'text
+ (current-buffer))
+
+ Replace `FORMAT' with an unquoted symbol representing the format of
+the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.) Instead of `FILE',
+use the image file name (e.g.
+`/usr/local/lib/xemacs-20.2/etc/recycle.xpm').
+
+ You can turn this to a function (that optionally prompts you for a
+file name), and inserts the glyph at `(point)' instead of `(point-min)'.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.10, Next: Q5.1.11, Prev: Q5.1.9, Up: Miscellaneous
+
+Q5.1.10: `map-extents' won't traverse all of my extents!
+--------------------------------------------------------
+
+ I tried to use `map-extents' to do an operation on all the extents
+in a region. However, it seems to quit after processing a random number
+of extents. Is it buggy?
+
+ No. The documentation of `map-extents' states that it will iterate
+across the extents as long as FUNCTION returns `nil'. Unexperienced
+programmers often forget to return `nil' explicitly, which results in
+buggy code. For instance, the following code is supposed to delete all
+the extents in a buffer, and issue as many `fubar!' messages.
+
+ (map-extents (lambda (ext ignore)
+ (delete-extent ext)
+ (message "fubar!")))
+
+ Instead, it will delete only the first extent, and stop right there -
+because `message' will return a non-nil value. The correct code is:
+
+ (map-extents (lambda (ext ignore)
+ (delete-extent ext)
+ (message "fubar!")
+ nil))
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.11, Next: Q5.2.1, Prev: Q5.1.10, Up: Miscellaneous
+
+Q5.1.11: My elisp program is horribly slow. Is there
+-----------------------------------------------------
+
+ an easy way to find out where it spends time?
+
+ zHrvoje Niksic <hniksic@xemacs.org> writes:
+ Under XEmacs 20.4 and later you can use `M-x
+ profile-key-sequence', press a key (say <RET> in the Gnus Group
+ buffer), and get the results using `M-x profile-results'. It
+ should give you an idea of where the time is being spent.
+
END-INFO-DIR-ENTRY
\1f
-File: xemacs-faq.info, Node: Q5.1.3, Next: Q5.1.4, Prev: Q5.1.2, Up: Miscellaneous
-
-Q5.1.3: Could you explain `read-kbd-macro' in more detail?
-----------------------------------------------------------
-
- The `read-kbd-macro' function returns the internal Emacs
-representation of a human-readable string (which is its argument).
-Thus:
-
- (read-kbd-macro "C-c C-a")
- => [(control ?c) (control ?a)]
-
- (read-kbd-macro "C-c C-. <up>")
- => [(control ?c) (control ?.) up]
-
- In GNU Emacs the same forms will be evaluated to what GNU Emacs
-understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
-up]', respectively.
-
- The exact "human-readable" syntax is defined in the docstring of
-`edmacro-mode'. I'll repeat it here, for completeness.
-
- Format of keyboard macros during editing:
-
- Text is divided into "words" separated by whitespace. Except for
- the words described below, the characters of each word go directly
- as characters of the macro. The whitespace that separates words is
- ignored. Whitespace in the macro must be written explicitly, as in
- `foo <SPC> bar <RET>'.
-
- * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
- and `NUL' represent special control characters. The words
- must be written in uppercase.
-
- * A word in angle brackets, e.g., `<return>', `<down>', or
- `<f1>', represents a function key. (Note that in the standard
- configuration, the function key `<return>' and the control key
- <RET> are synonymous.) You can use angle brackets on the
- words <RET>, <SPC>, etc., but they are not required there.
-
- * Keys can be written by their ASCII code, using a backslash
- followed by up to six octal digits. This is the only way to
- represent keys with codes above \377.
-
- * One or more prefixes `M-' (meta), `C-' (control), `S-'
- (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
- precede a character or key notation. For function keys, the
- prefixes may go inside or outside of the brackets: `C-<down>'
- == `<C-down>'. The prefixes may be written in any order:
- `M-C-x' == `C-M-x'.
-
- Prefixes are not allowed on multi-key words, e.g., `C-abc',
- except that the Meta prefix is allowed on a sequence of
- digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
-
- * The `^' notation for control characters also works: `^M' ==
- `C-m'.
-
- * Double angle brackets enclose command names: `<<next-line>>'
- is shorthand for `M-x next-line <RET>'.
-
- * Finally, `REM' or `;;' causes the rest of the line to be
- ignored as a comment.
-
- Any word may be prefixed by a multiplier in the form of a decimal
- number and `*': `3*<right>' == `<right> <right> <right>', and
- `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
-
- Multiple text keys can normally be strung together to form a word,
- but you may need to add whitespace if the word would look like one
- of the above notations: `; ; ;' is a keyboard macro with three
- semicolons, but `;;;' is a comment. Likewise, `\ 1 2 3' is four
- keys but `\123' is a single key written in octal, and `< right >'
- is seven keys but `<right>' is a single function key. When in
- doubt, use whitespace.
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.4, Next: Q5.1.5, Prev: Q5.1.3, Up: Miscellaneous
-
-Q5.1.4: What is the performance hit of `let'?
----------------------------------------------
-
- In most cases, not noticeable. Besides, there's no avoiding
-`let'--you have to bind your local variables, after all. Some pose a
-question whether to nest `let's, or use one `let' per function. I
-think because of clarity and maintenance (and possible future
-implementation), `let'-s should be used (nested) in a way to provide
-the clearest code.
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.5, Next: Q5.1.6, Prev: Q5.1.4, Up: Miscellaneous
-
-Q5.1.5: What is the recommended use of `setq'?
-----------------------------------------------
-
- * Global variables
-
- You will typically `defvar' your global variable to a default
- value, and use `setq' to set it later.
-
- It is never a good practice to `setq' user variables (like
- `case-fold-search', etc.), as it ignores the user's choice
- unconditionally. Note that `defvar' doesn't change the value of a
- variable if it was bound previously. If you wish to change a
- user-variable temporarily, use `let':
-
- (let ((case-fold-search nil))
- ... ; code with searches that must be case-sensitive
- ...)
-
- You will notice the user-variables by their docstrings beginning
- with an asterisk (a convention).
-
- * Local variables
-
- Bind them with `let', which will unbind them (or restore their
- previous value, if they were bound) after exiting from the `let'
- form. Change the value of local variables with `setq' or whatever
- you like (e.g. `incf', `setf' and such). The `let' form can even
- return one of its local variables.
-
- Typical usage:
-
- ;; iterate through the elements of the list returned by
- ;; `hairy-function-that-returns-list'
- (let ((l (hairy-function-that-returns-list)))
- (while l
- ... do something with (car l) ...
- (setq l (cdr l))))
-
- Another typical usage includes building a value simply to work
- with it.
-
- ;; Build the mode keymap out of the key-translation-alist
- (let ((inbox (file-truename (expand-file-name box)))
- (i 0))
- ... code dealing with inbox ...
- inbox)
-
- This piece of code uses the local variable `inbox', which becomes
- unbound (or regains old value) after exiting the form. The form
- also returns the value of `inbox', which can be reused, for
- instance:
-
- (setq foo-processed-inbox
- (let .....))
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.6, Next: Q5.1.7, Prev: Q5.1.5, Up: Miscellaneous
-
-Q5.1.6: What is the typical misuse of `setq' ?
-----------------------------------------------
-
- A typical misuse is probably `setq'ing a variable that was meant to
-be local. Such a variable will remain bound forever, never to be
-garbage-collected. For example, the code doing:
-
- (defun my-function (whatever)
- (setq a nil)
- ... build a large list ...
- ... and exit ...)
-
- does a bad thing, as `a' will keep consuming memory, never to be
-unbound. The correct thing is to do it like this:
-
- (defun my-function (whatever)
- (let (a) ; default initialization is to nil
- ... build a large list ...
- ... and exit, unbinding `a' in the process ...)
-
- Not only is this prettier syntactically, but it makes it possible for
-Emacs to garbage-collect the objects which `a' used to reference.
-
- Note that even global variables should not be `setq'ed without
-`defvar'ing them first, because the byte-compiler issues warnings. The
-reason for the warning is the following:
-
- (defun flurgoze nil) ; ok, global internal variable
- ...
-
- (setq flurghoze t) ; ops! a typo, but semantically correct.
- ; however, the byte-compiler warns.
-
- While compiling toplevel forms:
- ** assignment to free variable flurghoze
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.7, Next: Q5.1.8, Prev: Q5.1.6, Up: Miscellaneous
-
-Q5.1.7: I like the the `do' form of cl, does it slow things down?
------------------------------------------------------------------
-
- It shouldn't. Here is what Dave Gillespie has to say about cl.el
-performance:
-
- Many of the advanced features of this package, such as `defun*',
- `loop', and `setf', are implemented as Lisp macros. In
- byte-compiled code, these complex notations will be expanded into
- equivalent Lisp code which is simple and efficient. For example,
- the forms
-
- (incf i n)
- (push x (car p))
-
- are expanded at compile-time to the Lisp forms
-
- (setq i (+ i n))
- (setcar p (cons x (car p)))
-
- which are the most efficient ways of doing these respective
- operations in Lisp. Thus, there is no performance penalty for
- using the more readable `incf' and `push' forms in your compiled
- code.
-
- _Interpreted_ code, on the other hand, must expand these macros
- every time they are executed. For this reason it is strongly
- recommended that code making heavy use of macros be compiled. (The
- features labelled "Special Form" instead of "Function" in this
- manual are macros.) A loop using `incf' a hundred times will
- execute considerably faster if compiled, and will also
- garbage-collect less because the macro expansion will not have to
- be generated, used, and thrown away a hundred times.
-
- You can find out how a macro expands by using the `cl-prettyexpand'
- function.
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.8, Next: Q5.1.9, Prev: Q5.1.7, Up: Miscellaneous
-
-Q5.1.8: I like recursion, does it slow things down?
----------------------------------------------------
-
- Yes. Emacs byte-compiler cannot do much to optimize recursion. But
-think well whether this is a real concern in Emacs. Much of the Emacs
-slowness comes from internal mechanisms such as redisplay, or from the
-fact that it is an interpreter.
-
- Please try not to make your code much uglier to gain a very small
-speed gain. It's not usually worth it.
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.9, Next: Q5.1.10, Prev: Q5.1.8, Up: Miscellaneous
-
-Q5.1.9: How do I put a glyph as annotation in a buffer?
--------------------------------------------------------
-
- Here is a solution that will insert the glyph annotation at the
-beginning of buffer:
-
- (make-annotation (make-glyph '([FORMAT :file FILE]
- [string :data "fallback-text"]))
- (point-min)
- 'text
- (current-buffer))
-
- Replace `FORMAT' with an unquoted symbol representing the format of
-the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.) Instead of `FILE',
-use the image file name (e.g.
-`/usr/local/lib/xemacs-20.2/etc/recycle.xpm').
-
- You can turn this to a function (that optionally prompts you for a
-file name), and inserts the glyph at `(point)' instead of `(point-min)'.
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.10, Next: Q5.1.11, Prev: Q5.1.9, Up: Miscellaneous
-
-Q5.1.10: `map-extents' won't traverse all of my extents!
---------------------------------------------------------
-
- I tried to use `map-extents' to do an operation on all the extents
-in a region. However, it seems to quit after processing a random number
-of extents. Is it buggy?
-
- No. The documentation of `map-extents' states that it will iterate
-across the extents as long as FUNCTION returns `nil'. Unexperienced
-programmers often forget to return `nil' explicitly, which results in
-buggy code. For instance, the following code is supposed to delete all
-the extents in a buffer, and issue as many `fubar!' messages.
-
- (map-extents (lambda (ext ignore)
- (delete-extent ext)
- (message "fubar!")))
-
- Instead, it will delete only the first extent, and stop right there -
-because `message' will return a non-nil value. The correct code is:
-
- (map-extents (lambda (ext ignore)
- (delete-extent ext)
- (message "fubar!")
- nil))
-
-\1f
-File: xemacs-faq.info, Node: Q5.1.11, Next: Q5.2.1, Prev: Q5.1.10, Up: Miscellaneous
-
-Q5.1.11: My elisp program is horribly slow. Is there
------------------------------------------------------
-
- an easy way to find out where it spends time?
-
- zHrvoje Niksic <hniksic@xemacs.org> writes:
- Under XEmacs 20.4 and later you can use `M-x
- profile-key-sequence', press a key (say <RET> in the Gnus Group
- buffer), and get the results using `M-x profile-results'. It
- should give you an idea of where the time is being spent.
-
-\1f
File: xemacs-faq.info, Node: Q5.2.1, Next: Q5.2.2, Prev: Q5.1.11, Up: Miscellaneous
Q5.2.1: How do I turn off the sound?
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: TeX Editing, Next: TeX Print, Prev: TeX Mode, Up: TeX Mode
+
+TeX Editing Commands
+....................
+
+ Here are the special commands provided in TeX mode for editing the
+text of the file.
+
+`"'
+ Insert, according to context, either ```' or `"' or `'''
+ (`TeX-insert-quote').
+
+`<LFD>'
+ Insert a paragraph break (two newlines) and check the previous
+ paragraph for unbalanced braces or dollar signs (`tex-terminate-
+ paragraph').
+
+`M-x validate-tex-buffer'
+ Check each paragraph in the buffer for unbalanced braces or dollar
+ signs.
+
+`C-c {'
+ Insert `{}' and position point between them (`tex-insert-braces').
+
+`C-c }'
+ Move forward past the next unmatched close brace (`up-list').
+
+`C-c C-e'
+ Close a block for LaTeX (`tex-close-latex-block').
+
+ In TeX, the character `"' is not normally used; you use ```' to
+start a quotation and `''' to end one. TeX mode defines the key `"' to
+insert ```' after whitespace or an open brace, `"' after a backslash,
+or `''' otherwise. This is done by the command `tex-insert-quote'. If
+you need the character `"' itself in unusual contexts, use `C-q' to
+insert it. Also, `"' with a numeric argument always inserts that
+number of `"' characters.
+
+ In TeX mode, `$' has a special syntax code which attempts to
+understand the way TeX math mode delimiters match. When you insert a
+`$' that is meant to exit math mode, the position of the matching `$'
+that entered math mode is displayed for a second. This is the same
+feature that displays the open brace that matches a close brace that is
+inserted. However, there is no way to tell whether a `$' enters math
+mode or leaves it; so when you insert a `$' that enters math mode, the
+previous `$' position is shown as if it were a match, even though they
+are actually unrelated.
+
+ If you prefer to keep braces balanced at all times, you can use `C-c
+{' (`tex-insert-braces') to insert a pair of braces. It leaves point
+between the two braces so you can insert the text that belongs inside.
+Afterward, use the command `C-c }' (`up-list') to move forward past the
+close brace.
+
+ There are two commands for checking the matching of braces. <LFD>
+(`tex-terminate-paragraph') checks the paragraph before point, and
+inserts two newlines to start a new paragraph. It prints a message in
+the echo area if any mismatch is found. `M-x validate-tex-buffer'
+checks the entire buffer, paragraph by paragraph. When it finds a
+paragraph that contains a mismatch, it displays point at the beginning
+of the paragraph for a few seconds and pushes a mark at that spot.
+Scanning continues until the whole buffer has been checked or until you
+type another key. The positions of the last several paragraphs with
+mismatches can be found in the mark ring (*note Mark Ring::).
+
+ Note that square brackets and parentheses, not just braces, are
+matched in TeX mode. This is wrong if you want to check TeX syntax.
+However, parentheses and square brackets are likely to be used in text
+as matching delimiters and it is useful for the various motion commands
+and automatic match display to work with them.
+
+ In LaTeX input, `\begin' and `\end' commands must balance. After
+you insert a `\begin', use `C-c C-f' (`tex-close-latex-block') to
+insert automatically a matching `\end' (on a new line following the
+`\begin'). A blank line is inserted between the two, and point is left
+there.
+
+\1f
File: xemacs.info, Node: TeX Print, Prev: TeX Editing, Up: TeX Mode
TeX Printing Commands
* Lisp Indent:: Specifying how each Lisp function should be indented.
* C Indent:: Choosing an indentation style for C code.
-\1f
-File: xemacs.info, Node: Basic Indent, Next: Multi-line Indent, Prev: Grinding, Up: Grinding
-
-Basic Program Indentation Commands
-----------------------------------
-
-`<TAB>'
- Adjust indentation of current line.
-
-`<LFD>'
- Equivalent to <RET> followed by <TAB> (`newline-and-indent').
-
- The basic indentation command is <TAB>, which gives the current line
-the correct indentation as determined from the previous lines. The
-function that <TAB> runs depends on the major mode; it is
-`lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc. These
-functions understand different syntaxes for different languages, but
-they all do about the same thing. <TAB> in any programming language
-major mode inserts or deletes whitespace at the beginning of the
-current line, independent of where point is in the line. If point is
-inside the whitespace at the beginning of the line, <TAB> leaves it at
-the end of that whitespace; otherwise, <TAB> leaves point fixed with
-respect to the characters around it.
-
- Use `C-q <TAB>' to insert a tab at point.
-
- When entering a large amount of new code, use <LFD>
-(`newline-and-indent'), which is equivalent to a <RET> followed by a
-<TAB>. <LFD> creates a blank line, then gives it the appropriate
-indentation.
-
- <TAB> indents the second and following lines of the body of a
-parenthetical grouping each under the preceding one; therefore, if you
-alter one line's indentation to be nonstandard, the lines below tend to
-follow it. This is the right behavior in cases where the standard
-result of <TAB> does not look good.
-
- Remember that Emacs assumes that an open-parenthesis, open-brace, or
-other opening delimiter at the left margin (including the indentation
-routines) is the start of a function. You should therefore never have
-an opening delimiter in column zero that is not the beginning of a
-function, not even inside a string. This restriction is vital for
-making the indentation commands fast. *Note Defuns::, for more
-information on this behavior.
-
-\1f
-File: xemacs.info, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Grinding
-
-Indenting Several Lines
------------------------
-
- Several commands are available to re-indent several lines of code
-which have been altered or moved to a different level in a list
-structure.
-
-`C-M-q'
- Re-indent all the lines within one list (`indent-sexp').
-
-`C-u <TAB>'
- Shift an entire list rigidly sideways so that its first line is
- properly indented.
-
-`C-M-\'
- Re-indent all lines in the region (`indent-region').
-
- To re-indent the contents of a single list, position point before the
-beginning of it and type `C-M-q'. This key is bound to `indent-sexp' in
-Lisp mode, `indent-c-exp' in C mode, and bound to other suitable
-functions in other modes. The indentation of the line the sexp starts
-on is not changed; therefore, only the relative indentation within the
-list, and not its position, is changed. To correct the position as
-well, type a <TAB> before `C-M-q'.
-
- If the relative indentation within a list is correct but the
-indentation of its beginning is not, go to the line on which the list
-begins and type `C-u <TAB>'. When you give <TAB> a numeric argument,
-it moves all the lines in the group, starting on the current line,
-sideways the same amount that the current line moves. The command does
-not move lines that start inside strings, or C preprocessor lines when
-in C mode.
-
- Another way to specify a range to be re-indented is with point and
-mark. The command `C-M-\' (`indent-region') applies <TAB> to every
-line whose first character is between point and mark.
-
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: Basic Indent, Next: Multi-line Indent, Prev: Grinding, Up: Grinding
+
+Basic Program Indentation Commands
+----------------------------------
+
+`<TAB>'
+ Adjust indentation of current line.
+
+`<LFD>'
+ Equivalent to <RET> followed by <TAB> (`newline-and-indent').
+
+ The basic indentation command is <TAB>, which gives the current line
+the correct indentation as determined from the previous lines. The
+function that <TAB> runs depends on the major mode; it is
+`lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc. These
+functions understand different syntaxes for different languages, but
+they all do about the same thing. <TAB> in any programming language
+major mode inserts or deletes whitespace at the beginning of the
+current line, independent of where point is in the line. If point is
+inside the whitespace at the beginning of the line, <TAB> leaves it at
+the end of that whitespace; otherwise, <TAB> leaves point fixed with
+respect to the characters around it.
+
+ Use `C-q <TAB>' to insert a tab at point.
+
+ When entering a large amount of new code, use <LFD>
+(`newline-and-indent'), which is equivalent to a <RET> followed by a
+<TAB>. <LFD> creates a blank line, then gives it the appropriate
+indentation.
+
+ <TAB> indents the second and following lines of the body of a
+parenthetical grouping each under the preceding one; therefore, if you
+alter one line's indentation to be nonstandard, the lines below tend to
+follow it. This is the right behavior in cases where the standard
+result of <TAB> does not look good.
+
+ Remember that Emacs assumes that an open-parenthesis, open-brace, or
+other opening delimiter at the left margin (including the indentation
+routines) is the start of a function. You should therefore never have
+an opening delimiter in column zero that is not the beginning of a
+function, not even inside a string. This restriction is vital for
+making the indentation commands fast. *Note Defuns::, for more
+information on this behavior.
+
+\1f
+File: xemacs.info, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Grinding
+
+Indenting Several Lines
+-----------------------
+
+ Several commands are available to re-indent several lines of code
+which have been altered or moved to a different level in a list
+structure.
+
+`C-M-q'
+ Re-indent all the lines within one list (`indent-sexp').
+
+`C-u <TAB>'
+ Shift an entire list rigidly sideways so that its first line is
+ properly indented.
+
+`C-M-\'
+ Re-indent all lines in the region (`indent-region').
+
+ To re-indent the contents of a single list, position point before the
+beginning of it and type `C-M-q'. This key is bound to `indent-sexp' in
+Lisp mode, `indent-c-exp' in C mode, and bound to other suitable
+functions in other modes. The indentation of the line the sexp starts
+on is not changed; therefore, only the relative indentation within the
+list, and not its position, is changed. To correct the position as
+well, type a <TAB> before `C-M-q'.
+
+ If the relative indentation within a list is correct but the
+indentation of its beginning is not, go to the line on which the list
+begins and type `C-u <TAB>'. When you give <TAB> a numeric argument,
+it moves all the lines in the group, starting on the current line,
+sideways the same amount that the current line moves. The command does
+not move lines that start inside strings, or C preprocessor lines when
+in C mode.
+
+ Another way to specify a range to be re-indented is with point and
+mark. The command `C-M-\' (`indent-region') applies <TAB> to every
+line whose first character is between point and mark.
+
+\1f
File: xemacs.info, Node: Lisp Indent, Next: C Indent, Prev: Multi-line Indent, Up: Grinding
Customizing Lisp Indentation
and then using `M-.' you can quickly look at the source of any Emacs
function.
-\1f
-File: xemacs.info, Node: Tags Search, Next: List Tags, Prev: Find Tag, Up: Tags
-
-Searching and Replacing with Tags Tables
-----------------------------------------
-
- The commands in this section visit and search all the files listed
-in the selected tags table, one by one. For these commands, the tags
-table serves only to specify a sequence of files to search. A related
-command is `M-x grep' (*note Compilation::).
-
-`M-x tags-search <RET> REGEXP <RET>'
- Search for REGEXP through the files in the selected tags table.
-
-`M-x tags-query-replace <RET> REGEXP <RET> REPLACEMENT <RET>'
- Perform a `query-replace-regexp' on each file in the selected tags
- table.
-
-`M-,'
- Restart one of the commands above, from the current location of
- point (`tags-loop-continue').
-
- `M-x tags-search' reads a regexp using the minibuffer, then searches
-for matches in all the files in the selected tags table, one file at a
-time. It displays the name of the file being searched so you can
-follow its progress. As soon as it finds an occurrence, `tags-search'
-returns.
-
- Having found one match, you probably want to find all the rest. To
-find one more match, type `M-,' (`tags-loop-continue') to resume the
-`tags-search'. This searches the rest of the current buffer, followed
-by the remaining files of the tags table.
-
- `M-x tags-query-replace' performs a single `query-replace-regexp'
-through all the files in the tags table. It reads a regexp to search
-for and a string to replace with, just like ordinary `M-x
-query-replace-regexp'. It searches much like `M-x tags-search', but
-repeatedly, processing matches according to your input. *Note
-Replace::, for more information on query replace.
-
- It is possible to get through all the files in the tags table with a
-single invocation of `M-x tags-query-replace'. But often it is useful
-to exit temporarily, which you can do with any input event that has no
-special query replace meaning. You can resume the query replace
-subsequently by typing `M-,'; this command resumes the last tags search
-or replace command that you did.
-
- The commands in this section carry out much broader searches than the
-`find-tag' family. The `find-tag' commands search only for definitions
-of tags that match your substring or regexp. The commands
-`tags-search' and `tags-query-replace' find every occurrence of the
-regexp, as ordinary search commands and replace commands do in the
-current buffer.
-
- These commands create buffers only temporarily for the files that
-they have to search (those which are not already visited in Emacs
-buffers). Buffers in which no match is found are quickly killed; the
-others continue to exist.
-
- It may have struck you that `tags-search' is a lot like `grep'. You
-can also run `grep' itself as an inferior of Emacs and have Emacs show
-you the matching lines one by one. This works much like running a
-compilation; finding the source locations of the `grep' matches works
-like finding the compilation errors. *Note Compilation::.
-
- If you wish to process all the files in a selected tags table, but
-`M-x tags-search' and `M-x tags-query-replace' are not giving you the
-desired result, you can use `M-x next-file'.
-
-`C-u M-x next-file'
- With a numeric argument, regardless of its value, visit the first
- file in the tags table and prepare to advance sequentially by
- files.
-
-`M-x next-file'
- Visit the next file in the selected tags table.
-
-\1f
-File: xemacs.info, Node: List Tags, Prev: Tags Search, Up: Tags
-
-Tags Table Inquiries
---------------------
-
-`M-x list-tags'
- Display a list of the tags defined in a specific program file.
-
-`M-x tags-apropos'
- Display a list of all tags matching a specified regexp.
-
- `M-x list-tags' reads the name of one of the files described by the
-selected tags table, and displays a list of all the tags defined in that
-file. The "file name" argument is really just a string to compare
-against the names recorded in the tags table; it is read as a string
-rather than a file name. Therefore, completion and defaulting are not
-available, and you must enter the string the same way it appears in the
-tag table. Do not include a directory as part of the file name unless
-the file name recorded in the tags table contains that directory.
-
- `M-x tags-apropos' is like `apropos' for tags. It reads a regexp,
-then finds all the tags in the selected tags table whose entries match
-that regexp, and displays the tag names found.
-
-\1f
-File: xemacs.info, Node: Fortran, Next: Asm Mode, Prev: Tags, Up: Programs
-
-Fortran Mode
-============
-
- Fortran mode provides special motion commands for Fortran statements
-and subprograms, and indentation commands that understand Fortran
-conventions of nesting, line numbers, and continuation statements.
-
- Special commands for comments are provided because Fortran comments
-are unlike those of other languages.
-
- Built-in abbrevs optionally save typing when you insert Fortran
-keywords.
-
- Use `M-x fortran-mode' to switch to this major mode. Doing so calls
-the value of `fortran-mode-hook' as a function of no arguments if that
-variable has a non-`nil' value.
-
-* Menu:
-
-* Motion: Fortran Motion. Moving point by statements or subprograms.
-* Indent: Fortran Indent. Indentation commands for Fortran.
-* Comments: Fortran Comments. Inserting and aligning comments.
-* Columns: Fortran Columns. Measuring columns for valid Fortran.
-* Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
-
- Fortran mode was contributed by Michael Prange.
-
-\1f
-File: xemacs.info, Node: Fortran Motion, Next: Fortran Indent, Prev: Fortran, Up: Fortran
-
-Motion Commands
----------------
-
- Fortran mode provides special commands to move by subprograms
-(functions and subroutines) and by statements. There is also a command
-to put the region around one subprogram, which is convenient for
-killing it or moving it.
-
-`C-M-a'
- Move to beginning of subprogram
- (`beginning-of-fortran-subprogram').
-
-`C-M-e'
- Move to end of subprogram (`end-of-fortran-subprogram').
-
-`C-M-h'
- Put point at beginning of subprogram and mark at end
- (`mark-fortran-subprogram').
-
-`C-c C-n'
- Move to beginning of current or next statement (`fortran-next-
- statement').
-
-`C-c C-p'
- Move to beginning of current or previous statement (`fortran-
- previous-statement').
-
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: Tags Search, Next: List Tags, Prev: Find Tag, Up: Tags
+
+Searching and Replacing with Tags Tables
+----------------------------------------
+
+ The commands in this section visit and search all the files listed
+in the selected tags table, one by one. For these commands, the tags
+table serves only to specify a sequence of files to search. A related
+command is `M-x grep' (*note Compilation::).
+
+`M-x tags-search <RET> REGEXP <RET>'
+ Search for REGEXP through the files in the selected tags table.
+
+`M-x tags-query-replace <RET> REGEXP <RET> REPLACEMENT <RET>'
+ Perform a `query-replace-regexp' on each file in the selected tags
+ table.
+
+`M-,'
+ Restart one of the commands above, from the current location of
+ point (`tags-loop-continue').
+
+ `M-x tags-search' reads a regexp using the minibuffer, then searches
+for matches in all the files in the selected tags table, one file at a
+time. It displays the name of the file being searched so you can
+follow its progress. As soon as it finds an occurrence, `tags-search'
+returns.
+
+ Having found one match, you probably want to find all the rest. To
+find one more match, type `M-,' (`tags-loop-continue') to resume the
+`tags-search'. This searches the rest of the current buffer, followed
+by the remaining files of the tags table.
+
+ `M-x tags-query-replace' performs a single `query-replace-regexp'
+through all the files in the tags table. It reads a regexp to search
+for and a string to replace with, just like ordinary `M-x
+query-replace-regexp'. It searches much like `M-x tags-search', but
+repeatedly, processing matches according to your input. *Note
+Replace::, for more information on query replace.
+
+ It is possible to get through all the files in the tags table with a
+single invocation of `M-x tags-query-replace'. But often it is useful
+to exit temporarily, which you can do with any input event that has no
+special query replace meaning. You can resume the query replace
+subsequently by typing `M-,'; this command resumes the last tags search
+or replace command that you did.
+
+ The commands in this section carry out much broader searches than the
+`find-tag' family. The `find-tag' commands search only for definitions
+of tags that match your substring or regexp. The commands
+`tags-search' and `tags-query-replace' find every occurrence of the
+regexp, as ordinary search commands and replace commands do in the
+current buffer.
+
+ These commands create buffers only temporarily for the files that
+they have to search (those which are not already visited in Emacs
+buffers). Buffers in which no match is found are quickly killed; the
+others continue to exist.
+
+ It may have struck you that `tags-search' is a lot like `grep'. You
+can also run `grep' itself as an inferior of Emacs and have Emacs show
+you the matching lines one by one. This works much like running a
+compilation; finding the source locations of the `grep' matches works
+like finding the compilation errors. *Note Compilation::.
+
+ If you wish to process all the files in a selected tags table, but
+`M-x tags-search' and `M-x tags-query-replace' are not giving you the
+desired result, you can use `M-x next-file'.
+
+`C-u M-x next-file'
+ With a numeric argument, regardless of its value, visit the first
+ file in the tags table and prepare to advance sequentially by
+ files.
+
+`M-x next-file'
+ Visit the next file in the selected tags table.
+
+\1f
+File: xemacs.info, Node: List Tags, Prev: Tags Search, Up: Tags
+
+Tags Table Inquiries
+--------------------
+
+`M-x list-tags'
+ Display a list of the tags defined in a specific program file.
+
+`M-x tags-apropos'
+ Display a list of all tags matching a specified regexp.
+
+ `M-x list-tags' reads the name of one of the files described by the
+selected tags table, and displays a list of all the tags defined in that
+file. The "file name" argument is really just a string to compare
+against the names recorded in the tags table; it is read as a string
+rather than a file name. Therefore, completion and defaulting are not
+available, and you must enter the string the same way it appears in the
+tag table. Do not include a directory as part of the file name unless
+the file name recorded in the tags table contains that directory.
+
+ `M-x tags-apropos' is like `apropos' for tags. It reads a regexp,
+then finds all the tags in the selected tags table whose entries match
+that regexp, and displays the tag names found.
+
+\1f
+File: xemacs.info, Node: Fortran, Next: Asm Mode, Prev: Tags, Up: Programs
+
+Fortran Mode
+============
+
+ Fortran mode provides special motion commands for Fortran statements
+and subprograms, and indentation commands that understand Fortran
+conventions of nesting, line numbers, and continuation statements.
+
+ Special commands for comments are provided because Fortran comments
+are unlike those of other languages.
+
+ Built-in abbrevs optionally save typing when you insert Fortran
+keywords.
+
+ Use `M-x fortran-mode' to switch to this major mode. Doing so calls
+the value of `fortran-mode-hook' as a function of no arguments if that
+variable has a non-`nil' value.
+
+* Menu:
+
+* Motion: Fortran Motion. Moving point by statements or subprograms.
+* Indent: Fortran Indent. Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns. Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
+
+ Fortran mode was contributed by Michael Prange.
+
+\1f
+File: xemacs.info, Node: Fortran Motion, Next: Fortran Indent, Prev: Fortran, Up: Fortran
+
+Motion Commands
+---------------
+
+ Fortran mode provides special commands to move by subprograms
+(functions and subroutines) and by statements. There is also a command
+to put the region around one subprogram, which is convenient for
+killing it or moving it.
+
+`C-M-a'
+ Move to beginning of subprogram
+ (`beginning-of-fortran-subprogram').
+
+`C-M-e'
+ Move to end of subprogram (`end-of-fortran-subprogram').
+
+`C-M-h'
+ Put point at beginning of subprogram and mark at end
+ (`mark-fortran-subprogram').
+
+`C-c C-n'
+ Move to beginning of current or next statement (`fortran-next-
+ statement').
+
+`C-c C-p'
+ Move to beginning of current or previous statement (`fortran-
+ previous-statement').
+
+\1f
File: xemacs.info, Node: Fortran Indent, Next: Fortran Comments, Prev: Fortran Motion, Up: Fortran
Fortran Indentation
list. That is inappropriate. Whether you use Auto Fill mode or not is
a matter of personal taste, not a matter of the contents of particular
files. If you want to use Auto Fill, set up major mode hooks with your
-file file to turn it on (when appropriate) for you alone (*note Init
+init file to turn it on (when appropriate) for you alone (*note Init
File::). Don't try to use a local variable list that would impose your
taste on everyone working with the file.
and colors: It uses whatever resources are appropriate to the type of
widget which is used to implement it.
- If Emacs was compiled to use only the Motif-lookalike menu widgets,
-then one way to specify the font of the menubar would be
+ If Emacs was compiled to use only the Lucid Motif-lookalike menu
+widgets, then one way to specify the font of the menubar would be
Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
+ If both the Lucid Motif-lookalike menu widgets and X Font Sets are
+configured to allow multilingual menubars, then one uses
+
+ *menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
+ -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
+
+ That would specify fonts for a Japanese menubar. Specifying only one
+XLFD is acceptable; specifying more than one for a given registry
+(language) is also allowed. When X Font Sets are configured, some .font
+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
Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
Scrolling
Scrolling means shifting the text in the Emacs window to make a
- different part ot the buffer visible. *Note Scrolling: Display.
+ different part of the buffer visible. *Note Scrolling: Display.
Searching
Searching means moving point to the next occurrence of a specified
* M-a (Calendar mode): Move to Beginning or End.
* M-b: Words.
* M-c: Case.
+* M-C-r: Regexp Search.
* M-C-s: Regexp Search.
* M-d <1>: Words.
* M-d: Killing.
* Menu:
+* $ in regexp: Regexps.
+* ( in regexp: Regexps.
+* ) in regexp: Regexps.
+* * in regexp: Regexps.
+* *? in regexp: Regexps.
+* + in regexp: Regexps.
+* +? in regexp: Regexps.
+* . in regexp: Regexps.
* .mailrc file: Mail Headers.
* // in file name: Minibuffer File.
+* ? in regexp: Regexps.
+* ?? in regexp: Regexps.
+* [ in regexp: Regexps.
+* \ in regexp: Regexps.
+* \' in regexp: Regexps.
+* \(?: in regexp: Regexps.
+* \< in regexp: Regexps.
+* \= in regexp: Regexps.
+* \> in regexp: Regexps.
+* \` in regexp: Regexps.
+* \B in regexp: Regexps.
+* \b in regexp: Regexps.
+* \S in regexp: Regexps.
+* \s in regexp: Regexps.
+* \W in regexp: Regexps.
+* \w in regexp: Regexps.
+* \{n,m\} in regexp: Regexps.
+* ] in regexp: Regexps.
+* ^ in regexp: Regexps.
* Abbrev mode: Minor Modes.
* abbrevs: Abbrevs.
* aborting: Quitting.
* autoload: Loading.
* backup file: Backup.
* batch mode: Command Switches.
+* beginning of line in regexp: Regexps.
* bell, changing: Audible Bell.
* binary packages: Package Terminology.
* binding: Commands.
* changing buffers: Select Buffer.
* changing menu items: Menu Customization.
* character set: Intro to Keystrokes.
+* character set (in regexp): Regexps.
* checking in files: Concepts of VC.
* checking out files: Concepts of VC.
* Chinese: Mule.
* recursive editing level: Recursive Edit.
* redefining keys: Key Bindings Using Strings.
* regexp: Regexp Search.
+* regexp alternative: Regexps.
+* regexp grouping: Regexps.
* region <1>: Case.
* region: Mark.
* registered file: Concepts of VC.
* yahrzeits <1>: Sexp Diary Entries.
* yahrzeits: From Other Calendar.
* yanking: Yanking.
+* | in regexp: Regexps.
within searches (`C-q', `C-w', `C-r', `C-s', or `C-y').
Sometimes you search for `FOO' and find it, but were actually
-looking for a different occurence of it. To move to the next occurrence
-of the search string, type another `C-s'. Do this as often as
-necessary. If you overshoot, you can cancel some `C-s' characters with
-<DEL>.
+looking for a different occurrence of it. To move to the next
+occurrence of the search string, type another `C-s'. Do this as often
+as necessary. If you overshoot, you can cancel some `C-s' characters
+with <DEL>.
After you exit a search, you can search for the same string again by
typing just `C-s C-s': the first `C-s' is the key that invokes
=========================
A "regular expression" ("regexp", for short) is a pattern that
-denotes a set of strings, possibly an infinite set. Searching for
-matches for a regexp is a powerful operation that editors on Unix
-systems have traditionally offered. In XEmacs, you can search for the
-next match for a regexp either incrementally or not.
+denotes a (possibly infinite) set of strings. Searching for matches
+for a regexp is a powerful operation that editors on Unix systems have
+traditionally offered.
+
+ To gain a thorough understanding of regular expressions and how to
+use them to best advantage, we recommend that you study `Mastering
+Regular Expressions, by Jeffrey E.F. Friedl, O'Reilly and Associates,
+1997'. (It's known as the "Hip Owls" book, because of the picture on its
+cover.) You might also read the manuals to *Note (gawk)Top::, *Note
+(ed)Top::, `sed', `grep', *Note (perl)Top::, *Note (regex)Top::, *Note
+(rx)Top::, `pcre', and *Note (flex)Top::, which also make good use of
+regular expressions.
+
+ The XEmacs regular expression syntax most closely resembles that of
+`ed', or `grep', the GNU versions of which all utilize the GNU `regex'
+library. XEmacs' version of `regex' has recently been extended with
+some Perl-like capabilities, described in the next section.
+
+ In XEmacs, you can search for the next match for a regexp either
+incrementally or not.
Incremental search for a regexp is done by typing `M-C-s'
(`isearch-forward-regexp'). This command reads a search string
regexp rather than looking for an exact match against the text in the
buffer. Each time you add text to the search string, you make the
regexp longer, and the new regexp is searched for. A reverse regexp
-search command `isearch-backward-regexp' also exists, but no key runs
-it.
+search command `isearch-backward-regexp' also exists, bound to `M-C-r'.
All of the control characters that do special things within an
ordinary incremental search have the same functionality in incremental
Non-incremental search for a regexp is done by the functions
`re-search-forward' and `re-search-backward'. You can invoke them with
`M-x' or bind them to keys. You can also call `re-search-forward' by
-way of incremental regexp search with `M-C-s <RET>'.
+way of incremental regexp search with `M-C-s <RET>'; similarly for
+`re-search-backward' with `M-C-r <RET>'.
\1f
File: xemacs.info, Node: Regexps, Next: Search Case, Prev: Regexp Search, Up: Search
Regular expressions have a syntax in which a few characters are
special constructs and the rest are "ordinary". An ordinary character
-is a simple regular expression which matches that character and nothing
-else. The special characters are `$', `^', `.', `*', `+', `?', `[',
-`]' and `\'; no new special characters will be defined. Any other
-character appearing in a regular expression is ordinary, unless a `\'
-precedes it.
+is a simple regular expression that matches that character and nothing
+else. The special characters are `.', `*', `+', `?', `[', `]', `^',
+`$', and `\'; no new special characters will be defined in the future.
+Any other character appearing in a regular expression is ordinary,
+unless a `\' precedes it.
For example, `f' is not a special character, so it is ordinary, and
therefore `f' is a regular expression that matches the string `f' and
-no other string. (It does not match the string `ff'.) Likewise, `o'
+no other string. (It does _not_ match the string `ff'.) Likewise, `o'
is a regular expression that matches only `o'.
Any two regular expressions A and B can be concatenated. The result
-is a regular expression which matches a string if A matches some amount
+is a regular expression that matches a string if A matches some amount
of the beginning of that string and B matches the rest of the string.
- As a simple example, you can concatenate the regular expressions `f'
+ As a simple example, we can concatenate the regular expressions `f'
and `o' to get the regular expression `fo', which matches only the
-string `fo'. To do something nontrivial, you need to use one of the
-following special characters:
+string `fo'. Still trivial. To do something more powerful, you need
+to use one of the special characters. Here is a list of them:
`. (Period)'
is a special character that matches any single character except a
- newline. Using concatenation, you can make regular expressions
- like `a.b', which matches any three-character string which begins
+ newline. Using concatenation, we can make regular expressions
+ like `a.b', which matches any three-character string that begins
with `a' and ends with `b'.
`*'
- is not a construct by itself; it is a suffix, which means the
- preceding regular expression is to be repeated as many times as
- possible. In `fo*', the `*' applies to the `o', so `fo*' matches
- one `f' followed by any number of `o's. The case of zero `o's is
- allowed: `fo*' does match `f'.
-
- `*' always applies to the smallest possible preceding expression.
- Thus, `fo*' has a repeating `o', not a repeating `fo'.
-
- The matcher processes a `*' construct by immediately matching as
- many repetitions as it can find. Then it continues with the rest
- of the pattern. If that fails, backtracking occurs, discarding
- some of the matches of the `*'-modified construct in case that
- makes it possible to match the rest of the pattern. For example,
- matching `ca*ar' against the string `caaar', the `a*' first tries
- to match all three `a's; but the rest of the pattern is `ar' and
- there is only `r' left to match, so this try fails. The next
- alternative is for `a*' to match only two `a's. With this choice,
- the rest of the regexp matches successfully.
+ is not a construct by itself; it is a quantifying suffix operator
+ that means to repeat the preceding regular expression as many
+ times as possible. In `fo*', the `*' applies to the `o', so `fo*'
+ matches one `f' followed by any number of `o's. The case of zero
+ `o's is allowed: `fo*' does match `f'.
+
+ `*' always applies to the _smallest_ possible preceding
+ expression. Thus, `fo*' has a repeating `o', not a repeating `fo'.
+
+ The matcher processes a `*' construct by matching, immediately, as
+ many repetitions as can be found; it is "greedy". Then it
+ continues with the rest of the pattern. If that fails,
+ backtracking occurs, discarding some of the matches of the
+ `*'-modified construct in case that makes it possible to match the
+ rest of the pattern. For example, in matching `ca*ar' against the
+ string `caaar', the `a*' first tries to match all three `a's; but
+ the rest of the pattern is `ar' and there is only `r' left to
+ match, so this try fails. The next alternative is for `a*' to
+ match only two `a's. With this choice, the rest of the regexp
+ matches successfully.
+
+ Nested repetition operators can be extremely slow if they specify
+ backtracking loops. For example, it could take hours for the
+ regular expression `\(x+y*\)*a' to match the sequence
+ `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz'. The slowness is because
+ Emacs must try each imaginable way of grouping the 35 `x''s before
+ concluding that none of them can work. To make sure your regular
+ expressions run fast, check nested repetitions carefully.
`+'
- is a suffix character similar to `*' except that it requires that
- the preceding expression be matched at least once. For example,
- `ca+r' will match the strings `car' and `caaaar' but not the
- string `cr', whereas `ca*r' would match all three strings.
+ is a quantifying suffix operator similar to `*' except that the
+ preceding expression must match at least once. It is also
+ "greedy". So, for example, `ca+r' matches the strings `car' and
+ `caaaar' but not the string `cr', whereas `ca*r' matches all three
+ strings.
`?'
- is a suffix character similar to `*' except that it can match the
- preceding expression either once or not at all. For example,
- `ca?r' will match `car' or `cr'; nothing else.
+ is a quantifying suffix operator similar to `*', except that the
+ preceding expression can match either once or not at all. For
+ example, `ca?r' matches `car' or `cr', but does not match anything
+ else.
+
+`*?'
+ works just like `*', except that rather than matching the longest
+ match, it matches the shortest match. `*?' is known as a
+ "non-greedy" quantifier, a regexp construct borrowed from Perl.
+
+ This construct is very useful for when you want to match the text
+ inside a pair of delimiters. For instance, `/\*.*?\*/' will match
+ C comments in a string. This could not easily be achieved without
+ the use of a non-greedy quantifier.
+
+ This construct has not been available prior to XEmacs 20.4. It is
+ not available in FSF Emacs.
+
+`+?'
+ is the non-greedy version of `+'.
+
+`??'
+ is the non-greedy version of `?'.
+
+`\{n,m\}'
+ serves as an interval quantifier, analogous to `*' or `+', but
+ specifies that the expression must match at least N times, but no
+ more than M times. This syntax is supported by most Unix regexp
+ utilities, and has been introduced to XEmacs for the version 20.3.
+
+ Unfortunately, the non-greedy version of this quantifier does not
+ exist currently, although it does in Perl.
`[ ... ]'
`[' begins a "character set", which is terminated by a `]'. In
- the simplest case, the characters between the two form the set.
- Thus, `[ad]' matches either one `a' or one `d', and `[ad]*'
- matches any string composed of just `a's and `d's (including the
- empty string), from which it follows that `c[ad]*r' matches `cr',
- `car', `cdr', `caddaar', etc.
+ the simplest case, the characters between the two brackets form
+ the set. Thus, `[ad]' matches either one `a' or one `d', and
+ `[ad]*' matches any string composed of just `a's and `d's
+ (including the empty string), from which it follows that `c[ad]*r'
+ matches `cr', `car', `cdr', `caddaar', etc.
+
+ The usual regular expression special characters are not special
+ inside a character set. A completely different set of special
+ characters exists inside character sets: `]', `-' and `^'.
- You can include character ranges in a character set by writing two
+ `-' is used for ranges of characters. To write a range, write two
characters with a `-' between them. Thus, `[a-z]' matches any
- lower-case letter. Ranges may be intermixed freely with individual
- characters, as in `[a-z$%.]', which matches any lower-case letter
- or `$', `%', or period.
+ lower case letter. Ranges may be intermixed freely with individual
+ characters, as in `[a-z$%.]', which matches any lower case letter
+ or `$', `%', or a period.
- Note that inside a character set the usual special characters are
- not special any more. A completely different set of special
- characters exists inside character sets: `]', `-', and `^'.
+ To include a `]' in a character set, make it the first character.
+ For example, `[]a]' matches `]' or `a'. To include a `-', write
+ `-' as the first character in the set, or put it immediately after
+ a range. (You can replace one individual character C with the
+ range `C-C' to make a place to put the `-'.) There is no way to
+ write a set containing just `-' and `]'.
- To include a `]' in a character set, you must make it the first
- character. For example, `[]a]' matches `]' or `a'. To include a
- `-', write `---', which is a range containing only `-'. To
- include `^', make it other than the first character in the set.
+ To include `^' in a set, put it anywhere but at the beginning of
+ the set.
`[^ ... ]'
`[^' begins a "complement character set", which matches any
character except the ones specified. Thus, `[^a-z0-9A-Z]' matches
- all characters except letters and digits.
+ all characters _except_ letters and digits.
`^' is not special in a character set unless it is the first
character. The character following the `^' is treated as if it
- were first (`-' and `]' are not special there).
+ were first (thus, `-' and `]' are not special there).
Note that a complement character set can match a newline, unless
newline is mentioned as one of the characters not to match.
`^'
- is a special character that matches the empty string, but only if
- at the beginning of a line in the text being matched. Otherwise,
- it fails to match anything. Thus, `^foo' matches a `foo' that
- occurs at the beginning of a line.
+ is a special character that matches the empty string, but only at
+ the beginning of a line in the text being matched. Otherwise it
+ fails to match anything. Thus, `^foo' matches a `foo' that occurs
+ at the beginning of a line.
+
+ When matching a string instead of a buffer, `^' matches at the
+ beginning of the string or after a newline character `\n'.
`$'
is similar to `^' but matches only at the end of a line. Thus,
- `xx*$' matches a string of one `x' or more at the end of a line.
+ `x+$' matches a string of one `x' or more at the end of a line.
+
+ When matching a string instead of a buffer, `$' matches at the end
+ of the string or before a newline character `\n'.
`\'
- does two things: it quotes the special characters (including `\'),
- and it introduces additional special constructs.
+ has two functions: it quotes the special characters (including
+ `\'), and it introduces additional special constructs.
Because `\' quotes special characters, `\$' is a regular
expression that matches only `$', and `\[' is a regular expression
that matches only `[', and so on.
- Note: for historical compatibility, special characters are treated as
-ordinary ones if they are in contexts where their special meanings make
-no sense. For example, `*foo' treats `*' as ordinary since there is no
-preceding expression on which the `*' can act. It is poor practice to
-depend on this behavior; better to quote the special character anyway,
-regardless of where is appears.
+ *Please note:* For historical compatibility, special characters are
+treated as ordinary ones if they are in contexts where their special
+meanings make no sense. For example, `*foo' treats `*' as ordinary
+since there is no preceding expression on which the `*' can act. It is
+poor practice to depend on this behavior; quote the special character
+anyway, regardless of where it appears.
- Usually, `\' followed by any character matches only that character.
-However, there are several exceptions: characters which, when preceded
-by `\', are special constructs. Such characters are always ordinary
-when encountered on their own. Here is a table of `\' constructs.
+ For the most part, `\' followed by any character matches only that
+character. However, there are several exceptions: characters that,
+when preceded by `\', are special constructs. Such characters are
+always ordinary when encountered on their own. Here is a table of `\'
+constructs:
`\|'
specifies an alternative. Two regular expressions A and B with
- `\|' in between form an expression that matches anything A or B
- matches.
+ `\|' in between form an expression that matches anything that
+ either A or B matches.
Thus, `foo\|bar' matches either `foo' or `bar' but no other string.
1. To enclose a set of `\|' alternatives for other operations.
Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
- 2. To enclose a complicated expression for the postfix `*' to
- operate on. Thus, `ba\(na\)*' matches `bananana', etc., with
- any (zero or more) number of `na' strings.
-
- 3. To mark a matched substring for future reference.
+ 2. To enclose an expression for a suffix operator such as `*' to
+ act on. Thus, `ba\(na\)*' matches `bananana', etc., with any
+ (zero or more) number of `na' strings.
+ 3. To record a matched substring for future reference.
This last application is not a consequence of the idea of a
- parenthetical grouping; it is a separate feature which happens to
- be assigned as a second meaning to the same `\( ... \)' construct
- because in practice there is no conflict between the two meanings.
- Here is an explanation:
+ parenthetical grouping; it is a separate feature that happens to be
+ assigned as a second meaning to the same `\( ... \)' construct
+ because there is no conflict in practice between the two meanings.
+ Here is an explanation of this feature:
`\DIGIT'
- after the end of a `\( ... \)' construct, the matcher remembers the
- beginning and end of the text matched by that construct. Then,
- later on in the regular expression, you can use `\' followed by
- DIGIT to mean "match the same text matched the DIGIT'th time by the
- `\( ... \)' construct."
+ matches the same text that matched the DIGITth occurrence of a `\(
+ ... \)' construct.
+
+ In other words, after the end of a `\( ... \)' construct. the
+ matcher remembers the beginning and end of the text matched by that
+ construct. Then, later on in the regular expression, you can use
+ `\' followed by DIGIT to match that same text, whatever it may
+ have been.
The strings matching the first nine `\( ... \)' constructs
appearing in a regular expression are assigned numbers 1 through 9
- in order that the open-parentheses appear in the regular
- expression. `\1' through `\9' may be used to refer to the text
- matched by the corresponding `\( ... \)' construct.
+ in the order that the open parentheses appear in the regular
+ expression. So you can use `\1' through `\9' to refer to the text
+ matched by the corresponding `\( ... \)' constructs.
For example, `\(.*\)\1' matches any newline-free string that is
composed of two identical halves. The `\(.*\)' matches the first
half, which may be anything, but the `\1' that follows must match
the same exact text.
-`\`'
- matches the empty string, provided it is at the beginning of the
- buffer.
+`\(?: ... \)'
+ is called a "shy" grouping operator, and it is used just like `\(
+ ... \)', except that it does not cause the matched substring to be
+ recorded for future reference.
-`\''
- matches the empty string, provided it is at the end of the buffer.
+ This is useful when you need a lot of grouping `\( ... \)'
+ constructs, but only want to remember one or two - or if you have
+ more than nine groupings and need to use backreferences to refer to
+ the groupings at the end.
-`\b'
- matches the empty string, provided it is at the beginning or end
- of a word. Thus, `\bfoo\b' matches any occurrence of `foo' as a
- separate word. `\bballs?\b' matches `ball' or `balls' as a
- separate word.
-
-`\B'
- matches the empty string, provided it is not at the beginning or
- end of a word.
-
-`\<'
- matches the empty string, provided it is at the beginning of a
- word.
+ Using `\(?: ... \)' rather than `\( ... \)' when you don't need
+ the captured substrings ought to speed up your programs some,
+ since it shortens the code path followed by the regular expression
+ engine, as well as the amount of memory allocation and string
+ copying it must do. The actual performance gain to be observed
+ has not been measured or quantified as of this writing.
-`\>'
- matches the empty string, provided it is at the end of a word.
+ The shy grouping operator has been borrowed from Perl, and has not
+ been available prior to XEmacs 20.3, nor is it available in FSF
+ Emacs.
`\w'
matches any word-constituent character. The editor syntax table
- determines which characters these are.
+ determines which characters these are. *Note Syntax::.
`\W'
- matches any character that is not a word-constituent.
+ matches any character that is not a word constituent.
`\sCODE'
- matches any character whose syntax is CODE. CODE is a character
- which represents a syntax code: thus, `w' for word constituent,
- `-' for whitespace, `(' for open-parenthesis, etc. *Note Syntax::.
+ matches any character whose syntax is CODE. Here CODE is a
+ character that represents a syntax code: thus, `w' for word
+ constituent, `-' for whitespace, `(' for open parenthesis, etc.
+ *Note Syntax::, for a list of syntax codes and the characters that
+ stand for them.
`\SCODE'
matches any character whose syntax is not CODE.
+ The following regular expression constructs match the empty
+string--that is, they don't use up any characters--but whether they
+match depends on the context.
+
+`\`'
+ matches the empty string, but only at the beginning of the buffer
+ or string being matched against.
+
+`\''
+ matches the empty string, but only at the end of the buffer or
+ string being matched against.
+
+`\='
+ matches the empty string, but only at point. (This construct is
+ not defined when matching against a string.)
+
+`\b'
+ matches the empty string, but only at the beginning or end of a
+ word. Thus, `\bfoo\b' matches any occurrence of `foo' as a
+ separate word. `\bballs?\b' matches `ball' or `balls' as a
+ separate word.
+
+`\B'
+ matches the empty string, but _not_ at the beginning or end of a
+ word.
+
+`\<'
+ matches the empty string, but only at the beginning of a word.
+
+`\>'
+ matches the empty string, but only at the end of a word.
+
Here is a complicated regexp used by Emacs to recognize the end of a
sentence together with any whitespace that follows. It is given in Lisp
syntax to enable you to distinguish the spaces from the tab characters.
<DEL> except by looking at the screen to see what you did. It requires
less thought to kill the whole word and start over.
-\1f
-File: xemacs.info, Node: Transpose, Next: Fixing Case, Prev: Kill Errors, Up: Fixit
-
-Transposing Text
-================
-
-`C-t'
- Transpose two characters (`transpose-chars').
-
-`M-t'
- Transpose two words (`transpose-words').
-
-`C-M-t'
- Transpose two balanced expressions (`transpose-sexps').
-
-`C-x C-t'
- Transpose two lines (`transpose-lines').
-
- The common error of transposing two adjacent characters can be fixed
-with the `C-t' command (`transpose-chars'). Normally, `C-t' transposes
-the two characters on either side of point. When given at the end of a
-line, `C-t' transposes the last two characters on the line, rather than
-transposing the last character of the line with the newline, which
-would be useless. If you catch a transposition error right away, you
-can fix it with just `C-t'. If you catch the error later, move the
-cursor back to between the two transposed characters. If you
-transposed a space with the last character of the word before it, the
-word motion commands are a good way of getting there. Otherwise, a
-reverse search (`C-r') is often the best way. *Note Search::.
-
- `Meta-t' (`transpose-words') transposes the word before point with
-the word after point. It moves point forward over a word, dragging the
-word preceding or containing point forward as well. The punctuation
-characters between the words do not move. For example, `FOO, BAR'
-transposes into `BAR, FOO' rather than `BAR FOO,'.
-
- `C-M-t' (`transpose-sexps') is a similar command for transposing two
-expressions (*note Lists::), and `C-x C-t' (`transpose-lines')
-exchanges lines. It works like `M-t' but in determines the division of
-the text into syntactic units differently.
-
- A numeric argument to a transpose command serves as a repeat count:
-it tells the transpose command to move the character (word, sexp, line)
-before or containing point across several other characters (words,
-sexps, lines). For example, `C-u 3 C-t' moves the character before
-point forward across three other characters. This is equivalent to
-repeating `C-t' three times. `C-u - 4 M-t' moves the word before point
-backward across four words. `C-u - C-M-t' would cancel the effect of
-plain `C-M-t'.
-
- A numeric argument of zero transposes the character (word, sexp,
-line) ending after point with the one ending after the mark (otherwise a
-command with a repeat count of zero would do nothing).
-
-\1f
-File: xemacs.info, Node: Fixing Case, Next: Spelling, Prev: Transpose, Up: Fixit
-
-Case Conversion
-===============
-
-`M-- M-l'
- Convert last word to lower case. Note that `Meta--' is
- "Meta-minus."
-
-`M-- M-u'
- Convert last word to all upper case.
-
-`M-- M-c'
- Convert last word to lower case with capital initial.
-
- A common error is to type words in the wrong case. Because of this,
-the word case-conversion commands `M-l', `M-u', and `M-c' do not move
-the cursor when used with a negative argument. As soon as you see you
-have mistyped the last word, you can simply case-convert it and
-continue typing. *Note Case::.
-
-\1f
-File: xemacs.info, Node: Spelling, Prev: Fixing Case, Up: Fixit
-
-Checking and Correcting Spelling
-================================
-
-`M-$'
- Check and correct spelling of word (`spell-word').
-
-`M-x spell-buffer'
- Check and correct spelling of each word in the buffer.
-
-`M-x spell-region'
- Check and correct spelling of each word in the region.
-
-`M-x spell-string'
- Check spelling of specified word.
-
- To check the spelling of the word before point, and optionally
-correct it, use the command `M-$' (`spell-word'). This command runs an
-inferior process containing the `spell' program to see whether the word
-is correct English. If it is not, it asks you to edit the word (in the
-minibuffer) into a corrected spelling, and then performs a
-`query-replace' to substitute the corrected spelling for the old one
-throughout the buffer.
-
- If you exit the minibuffer without altering the original spelling, it
-means you do not want to do anything to that word. In that case, the
-`query-replace' is not done.
-
- `M-x spell-buffer' checks each word in the buffer the same way that
-`spell-word' does, doing a `query-replace' for every incorrect word if
-appropriate.
-
- `M-x spell-region' is similar to `spell-buffer' but operates only on
-the region, not the entire buffer.
-
- `M-x spell-string' reads a string as an argument and checks whether
-that is a correctly spelled English word. It prints a message giving
-the answer in the echo area.
-
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: Transpose, Next: Fixing Case, Prev: Kill Errors, Up: Fixit
+
+Transposing Text
+================
+
+`C-t'
+ Transpose two characters (`transpose-chars').
+
+`M-t'
+ Transpose two words (`transpose-words').
+
+`C-M-t'
+ Transpose two balanced expressions (`transpose-sexps').
+
+`C-x C-t'
+ Transpose two lines (`transpose-lines').
+
+ The common error of transposing two adjacent characters can be fixed
+with the `C-t' command (`transpose-chars'). Normally, `C-t' transposes
+the two characters on either side of point. When given at the end of a
+line, `C-t' transposes the last two characters on the line, rather than
+transposing the last character of the line with the newline, which
+would be useless. If you catch a transposition error right away, you
+can fix it with just `C-t'. If you catch the error later, move the
+cursor back to between the two transposed characters. If you
+transposed a space with the last character of the word before it, the
+word motion commands are a good way of getting there. Otherwise, a
+reverse search (`C-r') is often the best way. *Note Search::.
+
+ `Meta-t' (`transpose-words') transposes the word before point with
+the word after point. It moves point forward over a word, dragging the
+word preceding or containing point forward as well. The punctuation
+characters between the words do not move. For example, `FOO, BAR'
+transposes into `BAR, FOO' rather than `BAR FOO,'.
+
+ `C-M-t' (`transpose-sexps') is a similar command for transposing two
+expressions (*note Lists::), and `C-x C-t' (`transpose-lines')
+exchanges lines. It works like `M-t' but in determines the division of
+the text into syntactic units differently.
+
+ A numeric argument to a transpose command serves as a repeat count:
+it tells the transpose command to move the character (word, sexp, line)
+before or containing point across several other characters (words,
+sexps, lines). For example, `C-u 3 C-t' moves the character before
+point forward across three other characters. This is equivalent to
+repeating `C-t' three times. `C-u - 4 M-t' moves the word before point
+backward across four words. `C-u - C-M-t' would cancel the effect of
+plain `C-M-t'.
+
+ A numeric argument of zero transposes the character (word, sexp,
+line) ending after point with the one ending after the mark (otherwise a
+command with a repeat count of zero would do nothing).
+
+\1f
+File: xemacs.info, Node: Fixing Case, Next: Spelling, Prev: Transpose, Up: Fixit
+
+Case Conversion
+===============
+
+`M-- M-l'
+ Convert last word to lower case. Note that `Meta--' is
+ "Meta-minus."
+
+`M-- M-u'
+ Convert last word to all upper case.
+
+`M-- M-c'
+ Convert last word to lower case with capital initial.
+
+ A common error is to type words in the wrong case. Because of this,
+the word case-conversion commands `M-l', `M-u', and `M-c' do not move
+the cursor when used with a negative argument. As soon as you see you
+have mistyped the last word, you can simply case-convert it and
+continue typing. *Note Case::.
+
+\1f
+File: xemacs.info, Node: Spelling, Prev: Fixing Case, Up: Fixit
+
+Checking and Correcting Spelling
+================================
+
+`M-$'
+ Check and correct spelling of word (`spell-word').
+
+`M-x spell-buffer'
+ Check and correct spelling of each word in the buffer.
+
+`M-x spell-region'
+ Check and correct spelling of each word in the region.
+
+`M-x spell-string'
+ Check spelling of specified word.
+
+ To check the spelling of the word before point, and optionally
+correct it, use the command `M-$' (`spell-word'). This command runs an
+inferior process containing the `spell' program to see whether the word
+is correct English. If it is not, it asks you to edit the word (in the
+minibuffer) into a corrected spelling, and then performs a
+`query-replace' to substitute the corrected spelling for the old one
+throughout the buffer.
+
+ If you exit the minibuffer without altering the original spelling, it
+means you do not want to do anything to that word. In that case, the
+`query-replace' is not done.
+
+ `M-x spell-buffer' checks each word in the buffer the same way that
+`spell-word' does, doing a `query-replace' for every incorrect word if
+appropriate.
+
+ `M-x spell-region' is similar to `spell-buffer' but operates only on
+the region, not the entire buffer.
+
+ `M-x spell-string' reads a string as an argument and checks whether
+that is a correctly spelled English word. It prints a message giving
+the answer in the echo area.
+
+\1f
File: xemacs.info, Node: Files, Next: Buffers, Prev: Fixit, Up: Top
File Handling
version control. When used for checkin, and given a prefix argument,
it reads the version number with the minibuffer.
-\1f
-File: xemacs.info, Node: Variables for Check-in/out, Next: Log Entries, Prev: Editing with VC, Up: Version Control
-
-Variables Affecting Check-in and Check-out
-------------------------------------------
-
- If `vc-suppress-confirm' is non-`nil', then `C-x C-q' and `C-x v i'
-can save the current buffer without asking, and `C-x v u' also operates
-without asking for confirmation. (This variable does not affect `C-x v
-c'; that is so drastic that it should always ask for confirmation.)
-
- VC mode does much of its work by running the shell commands for RCS
-and SCCS. If `vc-command-messages' is non-`nil', VC displays messages
-to indicate which shell commands it runs, and additional messages when
-the commands finish.
-
- Normally, VC assumes that it can deduce the locked/unlocked state of
-files by looking at the file permissions of the work file; this is
-fast. However, if the `RCS' or `SCCS' subdirectory is actually a
-symbolic link, then VC does not trust the file permissions to reflect
-this status.
-
- You can specify the criterion for whether to trust the file
-permissions by setting the variable `vc-mistrust-permissions'. Its
-value may be `t' (always mistrust the file permissions and check the
-master file), `nil' (always trust the file permissions), or a function
-of one argument which makes the decision. The argument is the directory
-name of the `RCS' or `SCCS' subdirectory. A non-`nil' value from the
-function says to mistrust the file permissions.
-
- If you find that the file permissions of work files are changed
-erroneously, set `vc-mistrust-permissions' to `t'. Then VC always
-checks the master file to determine the file's status.
-
- You can specify additional directories to search for version control
-programs by setting the variable `vc-path'. These directories are
-searched before the usual search path. The proper result usually
-happens automatically.
-
-\1f
-File: xemacs.info, Node: Log Entries, Next: Change Logs and VC, Prev: Variables for Check-in/out, Up: Version Control
-
-Log Entries
------------
-
- When you're editing an initial comment or log entry for inclusion in
-a master file, finish your entry by typing `C-c C-c'.
-
-`C-c C-c'
- Finish the comment edit normally (`vc-finish-logentry'). This
- finishes check-in.
-
- To abort check-in, just don't type `C-c C-c' in that buffer. You
-can switch buffers and do other editing. As long as you don't try to
-check in another file, the entry you were editing remains in its
-buffer, and you can go back to that buffer at any time to complete the
-check-in.
-
- If you change several source files for the same reason, it is often
-convenient to specify the same log entry for many of the files. To do
-this, use the history of previous log entries. The commands `M-n',
-`M-p', `M-s' and `M-r' for doing this work just like the minibuffer
-history commands (except that these versions are used outside the
-minibuffer).
-
- Each time you check in a file, the log entry buffer is put into VC
-Log mode, which involves running two hooks: `text-mode-hook' and
-`vc-log-mode-hook'.
-
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: Variables for Check-in/out, Next: Log Entries, Prev: Editing with VC, Up: Version Control
+
+Variables Affecting Check-in and Check-out
+------------------------------------------
+
+ If `vc-suppress-confirm' is non-`nil', then `C-x C-q' and `C-x v i'
+can save the current buffer without asking, and `C-x v u' also operates
+without asking for confirmation. (This variable does not affect `C-x v
+c'; that is so drastic that it should always ask for confirmation.)
+
+ VC mode does much of its work by running the shell commands for RCS
+and SCCS. If `vc-command-messages' is non-`nil', VC displays messages
+to indicate which shell commands it runs, and additional messages when
+the commands finish.
+
+ Normally, VC assumes that it can deduce the locked/unlocked state of
+files by looking at the file permissions of the work file; this is
+fast. However, if the `RCS' or `SCCS' subdirectory is actually a
+symbolic link, then VC does not trust the file permissions to reflect
+this status.
+
+ You can specify the criterion for whether to trust the file
+permissions by setting the variable `vc-mistrust-permissions'. Its
+value may be `t' (always mistrust the file permissions and check the
+master file), `nil' (always trust the file permissions), or a function
+of one argument which makes the decision. The argument is the directory
+name of the `RCS' or `SCCS' subdirectory. A non-`nil' value from the
+function says to mistrust the file permissions.
+
+ If you find that the file permissions of work files are changed
+erroneously, set `vc-mistrust-permissions' to `t'. Then VC always
+checks the master file to determine the file's status.
+
+ You can specify additional directories to search for version control
+programs by setting the variable `vc-path'. These directories are
+searched before the usual search path. The proper result usually
+happens automatically.
+
+\1f
+File: xemacs.info, Node: Log Entries, Next: Change Logs and VC, Prev: Variables for Check-in/out, Up: Version Control
+
+Log Entries
+-----------
+
+ When you're editing an initial comment or log entry for inclusion in
+a master file, finish your entry by typing `C-c C-c'.
+
+`C-c C-c'
+ Finish the comment edit normally (`vc-finish-logentry'). This
+ finishes check-in.
+
+ To abort check-in, just don't type `C-c C-c' in that buffer. You
+can switch buffers and do other editing. As long as you don't try to
+check in another file, the entry you were editing remains in its
+buffer, and you can go back to that buffer at any time to complete the
+check-in.
+
+ If you change several source files for the same reason, it is often
+convenient to specify the same log entry for many of the files. To do
+this, use the history of previous log entries. The commands `M-n',
+`M-p', `M-s' and `M-r' for doing this work just like the minibuffer
+history commands (except that these versions are used outside the
+minibuffer).
+
+ Each time you check in a file, the log entry buffer is put into VC
+Log mode, which involves running two hooks: `text-mode-hook' and
+`vc-log-mode-hook'.
+
+\1f
File: xemacs.info, Node: Change Logs and VC, Next: Old Versions, Prev: Log Entries, Up: Version Control
Change Logs and VC
(`C-x 6'). To return to the window configuration established with
`window-configuration-to-register', use `jump-to-register' (`C-x j').
-\1f
-File: xemacs.info, Node: Other Window, Next: Pop Up Window, Prev: Split Window, Up: Windows
-
-Using Other Windows
-===================
-
-`C-x o'
- Select another window (`other-window'). That is the letter `o',
- not zero.
-
-`M-C-v'
- Scroll the next window (`scroll-other-window').
-
-`M-x compare-windows'
- Find the next place where the text in the selected window does not
- match the text in the next window.
-
-`M-x other-window-any-frame N'
- Select the Nth different window on any frame.
-
- To select a different window, use `C-x o' (`other-window'). That is
-an `o', for `other', not a zero. When there are more than two windows,
-the command moves through all the windows in a cyclic order, generally
-top to bottom and left to right. From the rightmost and bottommost
-window, it goes back to the one at the upper left corner. A numeric
-argument, N, moves several steps in the cyclic order of windows. A
-negative numeric argument moves around the cycle in the opposite order.
-If the optional second argument ALL-FRAMES is non-`nil', the function
-cycles through all frames. When the minibuffer is active, the
-minibuffer is the last window in the cycle; you can switch from the
-minibuffer window to one of the other windows, and later switch back
-and finish supplying the minibuffer argument that is requested. *Note
-Minibuffer Edit::.
-
- The command `M-x other-window-any-frame' also selects the window N
-steps away in the cyclic order. However, unlike `other-window', this
-command selects a window on the next or previous frame instead of
-wrapping around to the top or bottom of the current frame, when there
-are no more windows.
-
- The usual scrolling commands (*note Display::) apply to the selected
-window only. `M-C-v' (`scroll-other-window') scrolls the window that
-`C-x o' would select. Like `C-v', it takes positive and negative
-arguments.
-
- The command `M-x compare-windows' compares the text in the current
-window with the text in the next window. Comparison starts at point in
-each window. Point moves forward in each window, a character at a time,
-until the next set of characters in the two windows are different.
-Then the command is finished.
-
- A prefix argument IGNORE-WHITESPACE means ignore changes in
-whitespace. The variable `compare-windows-whitespace' controls how
-whitespace is skipped.
-
- If `compare-ignore-case' is non-`nil', changes in case are also
-ignored.
-
-\1f
-File: xemacs.info, Node: Pop Up Window, Next: Change Window, Prev: Other Window, Up: Windows
-
-Displaying in Another Window
-============================
-
- `C-x 4' is a prefix key for commands that select another window
-(splitting the window if there is only one) and select a buffer in that
-window. Different `C-x 4' commands have different ways of finding the
-buffer to select.
-
-`C-x 4 b BUFNAME <RET>'
- Select buffer BUFNAME in another window. This runs
- `switch-to-buffer-other-window'.
-
-`C-x 4 f FILENAME <RET>'
- Visit file FILENAME and select its buffer in another window. This
- runs `find-file-other-window'. *Note Visiting::.
-
-`C-x 4 d DIRECTORY <RET>'
- Select a Dired buffer for directory DIRECTORY in another window.
- This runs `dired-other-window'. *Note Dired::.
-
-`C-x 4 m'
- Start composing a mail message in another window. This runs
- `mail-other-window', and its same-window version is `C-x m' (*note
- Sending Mail::).
-
-`C-x 4 .'
- Find a tag in the current tag table in another window. This runs
- `find-tag-other-window', the multiple-window variant of `M-.'
- (*note Tags::).
-
- If the variable `display-buffer-function' is non-`nil', its value is
-the function to call to handle `display-buffer'. It receives two
-arguments, the buffer and a flag that if non-`nil' means that the
-currently selected window is not acceptable. Commands such as
-`switch-to-buffer-other-window' and `find-file-other-window' work using
-this function.
-
translation approved by the author instead of in the original English.
\1f
+File: xemacs.info, Node: Other Window, Next: Pop Up Window, Prev: Split Window, Up: Windows
+
+Using Other Windows
+===================
+
+`C-x o'
+ Select another window (`other-window'). That is the letter `o',
+ not zero.
+
+`M-C-v'
+ Scroll the next window (`scroll-other-window').
+
+`M-x compare-windows'
+ Find the next place where the text in the selected window does not
+ match the text in the next window.
+
+`M-x other-window-any-frame N'
+ Select the Nth different window on any frame.
+
+ To select a different window, use `C-x o' (`other-window'). That is
+an `o', for `other', not a zero. When there are more than two windows,
+the command moves through all the windows in a cyclic order, generally
+top to bottom and left to right. From the rightmost and bottommost
+window, it goes back to the one at the upper left corner. A numeric
+argument, N, moves several steps in the cyclic order of windows. A
+negative numeric argument moves around the cycle in the opposite order.
+If the optional second argument ALL-FRAMES is non-`nil', the function
+cycles through all frames. When the minibuffer is active, the
+minibuffer is the last window in the cycle; you can switch from the
+minibuffer window to one of the other windows, and later switch back
+and finish supplying the minibuffer argument that is requested. *Note
+Minibuffer Edit::.
+
+ The command `M-x other-window-any-frame' also selects the window N
+steps away in the cyclic order. However, unlike `other-window', this
+command selects a window on the next or previous frame instead of
+wrapping around to the top or bottom of the current frame, when there
+are no more windows.
+
+ The usual scrolling commands (*note Display::) apply to the selected
+window only. `M-C-v' (`scroll-other-window') scrolls the window that
+`C-x o' would select. Like `C-v', it takes positive and negative
+arguments.
+
+ The command `M-x compare-windows' compares the text in the current
+window with the text in the next window. Comparison starts at point in
+each window. Point moves forward in each window, a character at a time,
+until the next set of characters in the two windows are different.
+Then the command is finished.
+
+ A prefix argument IGNORE-WHITESPACE means ignore changes in
+whitespace. The variable `compare-windows-whitespace' controls how
+whitespace is skipped.
+
+ If `compare-ignore-case' is non-`nil', changes in case are also
+ignored.
+
+\1f
+File: xemacs.info, Node: Pop Up Window, Next: Change Window, Prev: Other Window, Up: Windows
+
+Displaying in Another Window
+============================
+
+ `C-x 4' is a prefix key for commands that select another window
+(splitting the window if there is only one) and select a buffer in that
+window. Different `C-x 4' commands have different ways of finding the
+buffer to select.
+
+`C-x 4 b BUFNAME <RET>'
+ Select buffer BUFNAME in another window. This runs
+ `switch-to-buffer-other-window'.
+
+`C-x 4 f FILENAME <RET>'
+ Visit file FILENAME and select its buffer in another window. This
+ runs `find-file-other-window'. *Note Visiting::.
+
+`C-x 4 d DIRECTORY <RET>'
+ Select a Dired buffer for directory DIRECTORY in another window.
+ This runs `dired-other-window'. *Note Dired::.
+
+`C-x 4 m'
+ Start composing a mail message in another window. This runs
+ `mail-other-window', and its same-window version is `C-x m' (*note
+ Sending Mail::).
+
+`C-x 4 .'
+ Find a tag in the current tag table in another window. This runs
+ `find-tag-other-window', the multiple-window variant of `M-.'
+ (*note Tags::).
+
+ If the variable `display-buffer-function' is non-`nil', its value is
+the function to call to handle `display-buffer'. It receives two
+arguments, the buffer and a flag that if non-`nil' means that the
+currently selected window is not acceptable. Commands such as
+`switch-to-buffer-other-window' and `find-file-other-window' work using
+this function.
+
+\1f
File: xemacs.info, Node: Change Window, Prev: Pop Up Window, Up: Windows
Deleting and Rearranging Windows
Simplified Chinese script (for mainland of China), Traditional Chinese
script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA
symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts
-(Hangul and Hanja) and Cyrillic script (for Beylorussian, Bulgarian,
+(Hangul and Hanja) and Cyrillic script (for Byelorussian, Bulgarian,
Russian, Serbian and Ukrainian). These features have been merged from
the modified version of Emacs known as MULE (for "MULti-lingual
Enhancement to GNU Emacs").
serpentine recording for the SUN. Also, SystemV tapes can be written
in cpio format, blocked 5120 bytes, ASCII headers.
-\1f
-File: xemacs.info, Node: TeX Editing, Next: TeX Print, Prev: TeX Mode, Up: TeX Mode
-
-TeX Editing Commands
-....................
-
- Here are the special commands provided in TeX mode for editing the
-text of the file.
-
-`"'
- Insert, according to context, either ```' or `"' or `'''
- (`TeX-insert-quote').
-
-`<LFD>'
- Insert a paragraph break (two newlines) and check the previous
- paragraph for unbalanced braces or dollar signs (`tex-terminate-
- paragraph').
-
-`M-x validate-tex-buffer'
- Check each paragraph in the buffer for unbalanced braces or dollar
- signs.
-
-`C-c {'
- Insert `{}' and position point between them (`tex-insert-braces').
-
-`C-c }'
- Move forward past the next unmatched close brace (`up-list').
-
-`C-c C-e'
- Close a block for LaTeX (`tex-close-latex-block').
-
- In TeX, the character `"' is not normally used; you use ```' to
-start a quotation and `''' to end one. TeX mode defines the key `"' to
-insert ```' after whitespace or an open brace, `"' after a backslash,
-or `''' otherwise. This is done by the command `tex-insert-quote'. If
-you need the character `"' itself in unusual contexts, use `C-q' to
-insert it. Also, `"' with a numeric argument always inserts that
-number of `"' characters.
-
- In TeX mode, `$' has a special syntax code which attempts to
-understand the way TeX math mode delimiters match. When you insert a
-`$' that is meant to exit math mode, the position of the matching `$'
-that entered math mode is displayed for a second. This is the same
-feature that displays the open brace that matches a close brace that is
-inserted. However, there is no way to tell whether a `$' enters math
-mode or leaves it; so when you insert a `$' that enters math mode, the
-previous `$' position is shown as if it were a match, even though they
-are actually unrelated.
-
- If you prefer to keep braces balanced at all times, you can use `C-c
-{' (`tex-insert-braces') to insert a pair of braces. It leaves point
-between the two braces so you can insert the text that belongs inside.
-Afterward, use the command `C-c }' (`up-list') to move forward past the
-close brace.
-
- There are two commands for checking the matching of braces. <LFD>
-(`tex-terminate-paragraph') checks the paragraph before point, and
-inserts two newlines to start a new paragraph. It prints a message in
-the echo area if any mismatch is found. `M-x validate-tex-buffer'
-checks the entire buffer, paragraph by paragraph. When it finds a
-paragraph that contains a mismatch, it displays point at the beginning
-of the paragraph for a few seconds and pushes a mark at that spot.
-Scanning continues until the whole buffer has been checked or until you
-type another key. The positions of the last several paragraphs with
-mismatches can be found in the mark ring (*note Mark Ring::).
-
- Note that square brackets and parentheses, not just braces, are
-matched in TeX mode. This is wrong if you want to check TeX syntax.
-However, parentheses and square brackets are likely to be used in text
-as matching delimiters and it is useful for the various motion commands
-and automatic match display to work with them.
-
- In LaTeX input, `\begin' and `\end' commands must balance. After
-you insert a `\begin', use `C-c C-f' (`tex-close-latex-block') to
-insert automatically a matching `\end' (on a new line following the
-`\begin'). A blank line is inserted between the two, and point is left
-there.
-