Reformatted.
[chise/xemacs-chise.git] / info / lispref.info-23
index 82b8556..fa1b689 100644 (file)
@@ -1,5 +1,5 @@
-This is Info file ../info/lispref.info, produced by Makeinfo version
-1.68 from the input file lispref/lispref.texi.
+This is ../info/lispref.info, produced by makeinfo version 4.0 from
+lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -50,6 +50,496 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Saving Buffers,  Next: Reading from Files,  Prev: Visiting Files,  Up: Files
+
+Saving Buffers
+==============
+
+   When you edit a file in XEmacs, you are actually working on a buffer
+that is visiting that file--that is, the contents of the file are
+copied into the buffer and the copy is what you edit.  Changes to the
+buffer do not change the file until you "save" the buffer, which means
+copying the contents of the buffer into the file.
+
+ - Command: save-buffer &optional backup-option
+     This function saves the contents of the current buffer in its
+     visited file if the buffer has been modified since it was last
+     visited or saved.  Otherwise it does nothing.
+
+     `save-buffer' is responsible for making backup files.  Normally,
+     BACKUP-OPTION is `nil', and `save-buffer' makes a backup file only
+     if this is the first save since visiting the file.  Other values
+     for BACKUP-OPTION request the making of backup files in other
+     circumstances:
+
+        * With an argument of 4 or 64, reflecting 1 or 3 `C-u''s, the
+          `save-buffer' function marks this version of the file to be
+          backed up when the buffer is next saved.
+
+        * With an argument of 16 or 64, reflecting 2 or 3 `C-u''s, the
+          `save-buffer' function unconditionally backs up the previous
+          version of the file before saving it.
+
+ - Command: save-some-buffers &optional save-silently-p exiting
+     This command saves some modified file-visiting buffers.  Normally
+     it asks the user about each buffer.  But if SAVE-SILENTLY-P is
+     non-`nil', it saves all the file-visiting buffers without querying
+     the user.
+
+     The optional EXITING argument, if non-`nil', requests this
+     function to offer also to save certain other buffers that are not
+     visiting files.  These are buffers that have a non-`nil' local
+     value of `buffer-offer-save'.  (A user who says yes to saving one
+     of these is asked to specify a file name to use.)  The
+     `save-buffers-kill-emacs' function passes a non-`nil' value for
+     this argument.
+
+ - Variable: buffer-offer-save
+     When this variable is non-`nil' in a buffer, XEmacs offers to save
+     the buffer on exit even if the buffer is not visiting a file.  The
+     variable is automatically local in all buffers.  Normally, Mail
+     mode (used for editing outgoing mail) sets this to `t'.
+
+ - Command: write-file filename
+     This function writes the current buffer into file FILENAME, makes
+     the buffer visit that file, and marks it not modified.  Then it
+     renames the buffer based on FILENAME, appending a string like `<2>'
+     if necessary to make a unique buffer name.  It does most of this
+     work by calling `set-visited-file-name' and `save-buffer'.
+
+ - Variable: write-file-hooks
+     The value of this variable is a list of functions to be called
+     before writing out a buffer to its visited file.  If one of them
+     returns non-`nil', the file is considered already written and the
+     rest of the functions are not called, nor is the usual code for
+     writing the file executed.
+
+     If a function in `write-file-hooks' returns non-`nil', it is
+     responsible for making a backup file (if that is appropriate).  To
+     do so, execute the following code:
+
+          (or buffer-backed-up (backup-buffer))
+
+     You might wish to save the file modes value returned by
+     `backup-buffer' and use that to set the mode bits of the file that
+     you write.  This is what `save-buffer' normally does.
+
+     Even though this is not a normal hook, you can use `add-hook' and
+     `remove-hook' to manipulate the list.  *Note Hooks::.
+
+ - Variable: local-write-file-hooks
+     This works just like `write-file-hooks', but it is intended to be
+     made local to particular buffers.  It's not a good idea to make
+     `write-file-hooks' local to a buffer--use this variable instead.
+
+     The variable is marked as a permanent local, so that changing the
+     major mode does not alter a buffer-local value.  This is
+     convenient for packages that read "file" contents in special ways,
+     and set up hooks to save the data in a corresponding way.
+
+ - Variable: write-contents-hooks
+     This works just like `write-file-hooks', but it is intended for
+     hooks that pertain to the contents of the file, as opposed to
+     hooks that pertain to where the file came from.  Such hooks are
+     usually set up by major modes, as buffer-local bindings for this
+     variable.  Switching to a new major mode always resets this
+     variable.
+
+ - Variable: after-save-hook
+     This normal hook runs after a buffer has been saved in its visited
+     file.
+
+ - Variable: file-precious-flag
+     If this variable is non-`nil', then `save-buffer' protects against
+     I/O errors while saving by writing the new file to a temporary
+     name instead of the name it is supposed to have, and then renaming
+     it to the intended name after it is clear there are no errors.
+     This procedure prevents problems such as a lack of disk space from
+     resulting in an invalid file.
+
+     As a side effect, backups are necessarily made by copying.  *Note
+     Rename or Copy::.  Yet, at the same time, saving a precious file
+     always breaks all hard links between the file you save and other
+     file names.
+
+     Some modes set this variable non-`nil' locally in particular
+     buffers.
+
+ - User Option: require-final-newline
+     This variable determines whether files may be written out that do
+     _not_ end with a newline.  If the value of the variable is `t',
+     then `save-buffer' silently adds a newline at the end of the file
+     whenever the buffer being saved does not already end in one.  If
+     the value of the variable is non-`nil', but not `t', then
+     `save-buffer' asks the user whether to add a newline each time the
+     case arises.
+
+     If the value of the variable is `nil', then `save-buffer' doesn't
+     add newlines at all.  `nil' is the default value, but a few major
+     modes set it to `t' in particular buffers.
+
+\1f
+File: lispref.info,  Node: Reading from Files,  Next: Writing to Files,  Prev: Saving Buffers,  Up: Files
+
+Reading from Files
+==================
+
+   You can copy a file from the disk and insert it into a buffer using
+the `insert-file-contents' function.  Don't use the user-level command
+`insert-file' in a Lisp program, as that sets the mark.
+
+ - Function: insert-file-contents filename &optional visit beg end
+          replace
+     This function inserts the contents of file FILENAME into the
+     current buffer after point.  It returns a list of the absolute
+     file name and the length of the data inserted.  An error is
+     signaled if FILENAME is not the name of a file that can be read.
+
+     The function `insert-file-contents' checks the file contents
+     against the defined file formats, and converts the file contents if
+     appropriate.  *Note Format Conversion::.  It also calls the
+     functions in the list `after-insert-file-functions'; see *Note
+     Saving Properties::.
+
+     If VISIT is non-`nil', this function additionally marks the buffer
+     as unmodified and sets up various fields in the buffer so that it
+     is visiting the file FILENAME: these include the buffer's visited
+     file name and its last save file modtime.  This feature is used by
+     `find-file-noselect' and you probably should not use it yourself.
+
+     If BEG and END are non-`nil', they should be integers specifying
+     the portion of the file to insert.  In this case, VISIT must be
+     `nil'.  For example,
+
+          (insert-file-contents filename nil 0 500)
+
+     inserts the first 500 characters of a file.
+
+     If the argument REPLACE is non-`nil', it means to replace the
+     contents of the buffer (actually, just the accessible portion)
+     with the contents of the file.  This is better than simply
+     deleting the buffer contents and inserting the whole file, because
+     (1) it preserves some marker positions and (2) it puts less data
+     in the undo list.
+
+   If you want to pass a file name to another process so that another
+program can read the file, use the function `file-local-copy'; see
+*Note Magic File Names::.
+
+\1f
+File: lispref.info,  Node: Writing to Files,  Next: File Locks,  Prev: Reading from Files,  Up: Files
+
+Writing to Files
+================
+
+   You can write the contents of a buffer, or part of a buffer, directly
+to a file on disk using the `append-to-file' and `write-region'
+functions.  Don't use these functions to write to files that are being
+visited; that could cause confusion in the mechanisms for visiting.
+
+ - Command: append-to-file start end filename
+     This function appends the contents of the region delimited by
+     START and END in the current buffer to the end of file FILENAME.
+     If that file does not exist, it is created.  If that file exists
+     it is overwritten.  This function returns `nil'.
+
+     An error is signaled if FILENAME specifies a nonwritable file, or
+     a nonexistent file in a directory where files cannot be created.
+
+ - Command: write-region start end filename &optional append visit
+     This function writes the region delimited by START and END in the
+     current buffer into the file specified by FILENAME.
+
+     If START is a string, then `write-region' writes or appends that
+     string, rather than text from the buffer.
+
+     If APPEND is non-`nil', then the specified text is appended to the
+     existing file contents (if any).
+
+     If VISIT is `t', then XEmacs establishes an association between
+     the buffer and the file: the buffer is then visiting that file.
+     It also sets the last file modification time for the current
+     buffer to FILENAME's modtime, and marks the buffer as not
+     modified.  This feature is used by `save-buffer', but you probably
+     should not use it yourself.
+
+     If VISIT is a string, it specifies the file name to visit.  This
+     way, you can write the data to one file (FILENAME) while recording
+     the buffer as visiting another file (VISIT).  The argument VISIT
+     is used in the echo area message and also for file locking; VISIT
+     is stored in `buffer-file-name'.  This feature is used to
+     implement `file-precious-flag'; don't use it yourself unless you
+     really know what you're doing.
+
+     The function `write-region' converts the data which it writes to
+     the appropriate file formats specified by `buffer-file-format'.
+     *Note Format Conversion::.  It also calls the functions in the list
+     `write-region-annotate-functions'; see *Note Saving Properties::.
+
+     Normally, `write-region' displays a message `Wrote file FILENAME'
+     in the echo area.  If VISIT is neither `t' nor `nil' nor a string,
+     then this message is inhibited.  This feature is useful for
+     programs that use files for internal purposes, files that the user
+     does not need to know about.
+
+\1f
+File: lispref.info,  Node: File Locks,  Next: Information about Files,  Prev: Writing to Files,  Up: Files
+
+File Locks
+==========
+
+   When two users edit the same file at the same time, they are likely
+to interfere with each other.  XEmacs tries to prevent this situation
+from arising by recording a "file lock" when a file is being modified.
+XEmacs can then detect the first attempt to modify a buffer visiting a
+file that is locked by another XEmacs process, and ask the user what to
+do.
+
+   File locks do not work properly when multiple machines can share
+file systems, such as with NFS.  Perhaps a better file locking system
+will be implemented in the future.  When file locks do not work, it is
+possible for two users to make changes simultaneously, but XEmacs can
+still warn the user who saves second.  Also, the detection of
+modification of a buffer visiting a file changed on disk catches some
+cases of simultaneous editing; see *Note Modification Time::.
+
+ - Function: file-locked-p &optional filename
+     This function returns `nil' if the file FILENAME is not locked by
+     this XEmacs process.  It returns `t' if it is locked by this
+     XEmacs, and it returns the name of the user who has locked it if it
+     is locked by someone else.
+
+          (file-locked-p "foo")
+               => nil
+
+ - Function: lock-buffer &optional filename
+     This function locks the file FILENAME, if the current buffer is
+     modified.  The argument FILENAME defaults to the current buffer's
+     visited file.  Nothing is done if the current buffer is not
+     visiting a file, or is not modified.
+
+ - Function: unlock-buffer
+     This function unlocks the file being visited in the current buffer,
+     if the buffer is modified.  If the buffer is not modified, then
+     the file should not be locked, so this function does nothing.  It
+     also does nothing if the current buffer is not visiting a file.
+
+ - Function: ask-user-about-lock file other-user
+     This function is called when the user tries to modify FILE, but it
+     is locked by another user named OTHER-USER.  The value it returns
+     determines what happens next:
+
+        * A value of `t' says to grab the lock on the file.  Then this
+          user may edit the file and OTHER-USER loses the lock.
+
+        * A value of `nil' says to ignore the lock and let this user
+          edit the file anyway.
+
+        * This function may instead signal a `file-locked' error, in
+          which case the change that the user was about to make does
+          not take place.
+
+          The error message for this error looks like this:
+
+               error--> File is locked: FILE OTHER-USER
+
+          where `file' is the name of the file and OTHER-USER is the
+          name of the user who has locked the file.
+
+     The default definition of this function asks the user to choose
+     what to do.  If you wish, you can replace the `ask-user-about-lock'
+     function with your own version that decides in another way.  The
+     code for its usual definition is in `userlock.el'.
+
+\1f
+File: lispref.info,  Node: Information about Files,  Next: Changing File Attributes,  Prev: File Locks,  Up: Files
+
+Information about Files
+=======================
+
+   The functions described in this section all operate on strings that
+designate file names.  All the functions have names that begin with the
+word `file'.  These functions all return information about actual files
+or directories, so their arguments must all exist as actual files or
+directories unless otherwise noted.
+
+* Menu:
+
+* Testing Accessibility::   Is a given file readable?  Writable?
+* Kinds of Files::          Is it a directory?  A symbolic link?
+* Truenames::              Eliminating symbolic links from a file name.
+* File Attributes::         How large is it?  Any other names?  Etc.
+
+\1f
+File: lispref.info,  Node: Testing Accessibility,  Next: Kinds of Files,  Up: Information about Files
+
+Testing Accessibility
+---------------------
+
+   These functions test for permission to access a file in specific
+ways.
+
+ - Function: file-exists-p filename
+     This function returns `t' if a file named FILENAME appears to
+     exist.  This does not mean you can necessarily read the file, only
+     that you can find out its attributes.  (On Unix, this is true if
+     the file exists and you have execute permission on the containing
+     directories, regardless of the protection of the file itself.)
+
+     If the file does not exist, or if fascist access control policies
+     prevent you from finding the attributes of the file, this function
+     returns `nil'.
+
+ - Function: file-readable-p filename
+     This function returns `t' if a file named FILENAME exists and you
+     can read it.  It returns `nil' otherwise.
+
+          (file-readable-p "files.texi")
+               => t
+          (file-exists-p "/usr/spool/mqueue")
+               => t
+          (file-readable-p "/usr/spool/mqueue")
+               => nil
+
+ - Function: file-executable-p filename
+     This function returns `t' if a file named FILENAME exists and you
+     can execute it.  It returns `nil' otherwise.  If the file is a
+     directory, execute permission means you can check the existence and
+     attributes of files inside the directory, and open those files if
+     their modes permit.
+
+ - Function: file-writable-p filename
+     This function returns `t' if the file FILENAME can be written or
+     created by you, and `nil' otherwise.  A file is writable if the
+     file exists and you can write it.  It is creatable if it does not
+     exist, but the specified directory does exist and you can write in
+     that directory.
+
+     In the third example below, `foo' is not writable because the
+     parent directory does not exist, even though the user could create
+     such a directory.
+
+          (file-writable-p "~/foo")
+               => t
+          (file-writable-p "/foo")
+               => nil
+          (file-writable-p "~/no-such-dir/foo")
+               => nil
+
+ - Function: file-accessible-directory-p dirname
+     This function returns `t' if you have permission to open existing
+     files in the directory whose name as a file is DIRNAME; otherwise
+     (or if there is no such directory), it returns `nil'.  The value
+     of DIRNAME may be either a directory name or the file name of a
+     directory.
+
+     Example: after the following,
+
+          (file-accessible-directory-p "/foo")
+               => nil
+
+     we can deduce that any attempt to read a file in `/foo/' will give
+     an error.
+
+ - Function: file-ownership-preserved-p filename
+     This function returns `t' if deleting the file FILENAME and then
+     creating it anew would keep the file's owner unchanged.
+
+ - Function: file-newer-than-file-p filename1 filename2
+     This function returns `t' if the file FILENAME1 is newer than file
+     FILENAME2.  If FILENAME1 does not exist, it returns `nil'.  If
+     FILENAME2 does not exist, it returns `t'.
+
+     In the following example, assume that the file `aug-19' was written
+     on the 19th, `aug-20' was written on the 20th, and the file
+     `no-file' doesn't exist at all.
+
+          (file-newer-than-file-p "aug-19" "aug-20")
+               => nil
+          (file-newer-than-file-p "aug-20" "aug-19")
+               => t
+          (file-newer-than-file-p "aug-19" "no-file")
+               => t
+          (file-newer-than-file-p "no-file" "aug-19")
+               => nil
+
+     You can use `file-attributes' to get a file's last modification
+     time as a list of two numbers.  *Note File Attributes::.
+
+\1f
+File: lispref.info,  Node: Kinds of Files,  Next: Truenames,  Prev: Testing Accessibility,  Up: Information about Files
+
+Distinguishing Kinds of Files
+-----------------------------
+
+   This section describes how to distinguish various kinds of files,
+such as directories, symbolic links, and ordinary files.
+
+ - Function: file-symlink-p filename
+     If the file FILENAME is a symbolic link, the `file-symlink-p'
+     function returns the file name to which it is linked.  This may be
+     the name of a text file, a directory, or even another symbolic
+     link, or it may be a nonexistent file name.
+
+     If the file FILENAME is not a symbolic link (or there is no such
+     file), `file-symlink-p' returns `nil'.
+
+          (file-symlink-p "foo")
+               => nil
+          (file-symlink-p "sym-link")
+               => "foo"
+          (file-symlink-p "sym-link2")
+               => "sym-link"
+          (file-symlink-p "/bin")
+               => "/pub/bin"
+
+
+ - Function: file-directory-p filename
+     This function returns `t' if FILENAME is the name of an existing
+     directory, `nil' otherwise.
+
+          (file-directory-p "~rms")
+               => t
+          (file-directory-p "~rms/lewis/files.texi")
+               => nil
+          (file-directory-p "~rms/lewis/no-such-file")
+               => nil
+          (file-directory-p "$HOME")
+               => nil
+          (file-directory-p
+           (substitute-in-file-name "$HOME"))
+               => t
+
+ - Function: file-regular-p filename
+     This function returns `t' if the file FILENAME exists and is a
+     regular file (not a directory, symbolic link, named pipe,
+     terminal, or other I/O device).
+
+\1f
+File: lispref.info,  Node: Truenames,  Next: File Attributes,  Prev: Kinds of Files,  Up: Information about Files
+
+Truenames
+---------
+
+   The "truename" of a file is the name that you get by following
+symbolic links until none remain, then expanding to get rid of `.' and
+`..' as components.  Strictly speaking, a file need not have a unique
+truename; the number of distinct truenames a file has is equal to the
+number of hard links to the file.  However, truenames are useful
+because they eliminate symbolic links as a cause of name variation.
+
+ - Function: file-truename filename &optional default
+     The function `file-truename' returns the true name of the file
+     FILENAME.  This is the name that you get by following symbolic
+     links until none remain.
+
+     If the filename is relative, DEFAULT is the directory to start
+     with.  If DEFAULT is `nil' or missing, the current buffer's value
+     of `default-directory' is used.
+
+   *Note Buffer File Name::, for related information.
+
+\1f
 File: lispref.info,  Node: File Attributes,  Prev: Truenames,  Up: Information about Files
 
 Other Information about Files
@@ -61,7 +551,7 @@ mode bits that control access permission, the owner and group numbers,
 the number of names, the inode number, the size, and the times of access
 and modification.
 
- - Function: file-modes FILENAME
+ - Function: file-modes filename
      This function returns the mode bits of FILENAME, as an integer.
      The mode bits are also called the file permissions, and they
      specify access control in the usual Unix fashion.  If the
@@ -87,7 +577,7 @@ and modification.
           % ls -l diffs
             -rw-rw-rw-  1 lewis 0 3063 Oct 30 16:00 diffs
 
- - Function: file-nlinks FILENAME
+ - Function: file-nlinks filename
      This functions returns the number of names (i.e., hard links) that
      file FILENAME has.  If the file does not exist, then this function
      returns `nil'.  Note that symbolic links have no effect on this
@@ -103,7 +593,7 @@ and modification.
           (file-nlinks "doesnt-exist")
                => nil
 
- - Function: file-attributes FILENAME
+ - Function: file-attributes filename
      This function returns a list of attributes of file FILENAME.  If
      the specified file cannot be opened, it returns `nil'.
 
@@ -115,7 +605,7 @@ and modification.
        1. The number of names the file has.  Alternate names, also
           known as hard links, can be created by using the
           `add-name-to-file' function (*note Changing File
-          Attributes::.).
+          Attributes::).
 
        2. The file's UID.
 
@@ -227,8 +717,8 @@ of the argument OK-IF-ALREADY-EXISTS:
    * Replace the old file without confirmation if OK-IF-ALREADY-EXISTS
      is any other value.
 
- - Command: add-name-to-file OLDNAME NEWNAME &optional
-          OK-IF-ALREADY-EXISTS
+ - Command: add-name-to-file oldname newname &optional
+          ok-if-already-exists
      This function gives the file named OLDNAME the additional name
      NEWNAME.  This means that NEWNAME becomes a new "hard link" to
      OLDNAME.
@@ -272,7 +762,7 @@ of the argument OK-IF-ALREADY-EXISTS:
 
      See also `file-nlinks' in *Note File Attributes::.
 
- - Command: rename-file FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS
+ - Command: rename-file filename newname &optional ok-if-already-exists
      This command renames the file FILENAME as NEWNAME.
 
      If FILENAME has additional names aside from FILENAME, it continues
@@ -284,7 +774,7 @@ of the argument OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Command: copy-file OLDNAME NEWNAME &optional OK-IF-EXISTS TIME
+ - Command: copy-file oldname newname &optional ok-if-exists time
      This command copies the file OLDNAME to NEWNAME.  An error is
      signaled if OLDNAME does not exist.
 
@@ -296,7 +786,7 @@ of the argument OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Command: delete-file FILENAME
+ - Command: delete-file filename
      This command deletes the file FILENAME, like the shell command `rm
      FILENAME'.  If the file has multiple names, it continues to exist
      under the other names.
@@ -307,7 +797,7 @@ of the argument OK-IF-ALREADY-EXISTS:
 
      See also `delete-directory' in *Note Create/Delete Dirs::.
 
- - Command: make-symbolic-link FILENAME NEWNAME &optional OK-IF-EXISTS
+ - Command: make-symbolic-link filename newname &optional ok-if-exists
      This command makes a symbolic link to FILENAME, named NEWNAME.
      This is like the shell command `ln -s FILENAME NEWNAME'.
 
@@ -315,15 +805,15 @@ of the argument OK-IF-ALREADY-EXISTS:
      NEWNAME in the minibuffer; also, it requests confirmation if
      NEWNAME already exists.
 
- - Function: define-logical-name VARNAME STRING
+ - Function: define-logical-name varname string
      This function defines the logical name NAME to have the value
      STRING.  It is available only on VMS.
 
- - Function: set-file-modes FILENAME MODE
+ - Function: set-file-modes filename mode
      This function sets mode bits of FILENAME to MODE (which must be an
      integer).  Only the low 12 bits of MODE are used.
 
- - Function: set-default-file-modes MODE
+ - Function: set-default-file-modes mode
      This function sets the default file protection for new files
      created by XEmacs and its subprocesses.  Every file created with
      XEmacs initially has this protection.  On Unix, the default
@@ -404,7 +894,7 @@ number, but most of the time the file name actually used in XEmacs
 omits the version number.  Version numbers are found mostly in
 directory lists.
 
- - Function: file-name-directory FILENAME
+ - Function: file-name-directory filename
      This function returns the directory part of FILENAME (or `nil' if
      FILENAME does not include a directory part).  On Unix, the
      function returns a string ending in a slash.  On VMS, it returns a
@@ -417,7 +907,7 @@ directory lists.
           (file-name-directory "[X]FOO.TMP") ; VMS example
                => "[X]"
 
- - Function: file-name-nondirectory FILENAME
+ - Function: file-name-nondirectory filename
      This function returns the nondirectory part of FILENAME.
 
           (file-name-nondirectory "lewis/foo")
@@ -428,8 +918,8 @@ directory lists.
           (file-name-nondirectory "[X]FOO.TMP")
                => "FOO.TMP"
 
- - Function: file-name-sans-versions FILENAME &optional
-          KEEP-BACKUP-VERSION
+ - Function: file-name-sans-versions filename &optional
+          keep-backup-version
      This function returns FILENAME without any file version numbers,
      backup version numbers, or trailing tildes.
 
@@ -446,7 +936,7 @@ directory lists.
           (file-name-sans-versions "foo;23")
                => "foo"
 
- - Function: file-name-sans-extension FILENAME
+ - Function: file-name-sans-extension filename
      This function returns FILENAME minus its "extension," if any.  The
      extension, in a file name, is the part that starts with the last
      `.' in the last name component.  For example,
@@ -479,7 +969,7 @@ acceptable.
 names.  They do nothing special with environment variable substitutions
 such as `$HOME', and the constructs `~', and `..'.
 
- - Function: file-name-as-directory FILENAME
+ - Function: file-name-as-directory filename
      This function returns a string representing FILENAME in a form
      that the operating system will interpret as the name of a
      directory.  In Unix, this means appending a slash to the string.
@@ -489,7 +979,7 @@ such as `$HOME', and the constructs `~', and `..'.
           (file-name-as-directory "~rms/lewis")
                => "~rms/lewis/"
 
- - Function: directory-file-name DIRNAME
+ - Function: directory-file-name dirname
      This function returns a string representing DIRNAME in a form that
      the operating system will interpret as the name of a file.  On
      Unix, this means removing a final slash from the string.  On VMS,
@@ -508,7 +998,7 @@ abbreviation instead.
    If you wish to convert a directory name to its abbreviation, use this
 function:
 
- - Function: abbreviate-file-name DIRNAME &optional HACK-HOMEDIR
+ - Function: abbreviate-file-name dirname &optional hack-homedir
      This function applies abbreviations from `directory-abbrev-alist'
      to its argument, and substitutes `~' for the user's home directory.
 
@@ -549,7 +1039,7 @@ relative to a default directory; then it is called a "relative" file
 name.  On Unix, an absolute file name starts with a slash or a tilde
 (`~'), and a relative one does not.  The rules on VMS are complicated.
 
- - Function: file-name-absolute-p FILENAME
+ - Function: file-name-absolute-p filename
      This function returns `t' if file FILENAME is an absolute file
      name, `nil' otherwise.  On VMS, this function understands both
      Unix syntax and VMS syntax.
@@ -573,7 +1063,7 @@ you must specify the default directory name as well as the file name to
 be expanded.  Expansion also simplifies file names by eliminating
 redundancies such as `./' and `NAME/../'.
 
- - Function: expand-file-name FILENAME &optional DIRECTORY
+ - Function: expand-file-name filename &optional directory
      This function converts FILENAME to an absolute file name.  If
      DIRECTORY is supplied, it is the directory to start with if
      FILENAME is relative.  (The value of DIRECTORY should itself be an
@@ -599,10 +1089,10 @@ redundancies such as `./' and `NAME/../'.
      `~/' at the beginning is expanded into the user's home directory.
      A `/' or `~' following a `/'.
 
-     Note that `expand-file-name' does *not* expand environment
+     Note that `expand-file-name' does _not_ expand environment
      variables; only `substitute-in-file-name' does that.
 
- - Function: file-relative-name FILENAME &optional DIRECTORY
+ - Function: file-relative-name filename &optional directory
      This function does the inverse of expansion--it tries to return a
      relative name that is equivalent to FILENAME when interpreted
      relative to DIRECTORY.
@@ -628,7 +1118,7 @@ redundancies such as `./' and `NAME/../'.
           default-directory
                => "/user/lewis/manual/"
 
- - Function: substitute-in-file-name FILENAME
+ - Function: substitute-in-file-name filename
      This function replaces environment variable references in FILENAME
      with the environment variable values.  Following standard Unix
      shell syntax, `$' is the prefix to substitute an environment
@@ -683,7 +1173,7 @@ processes from trying to use the same name.
      Note that the `temp-directory' function does not exist under FSF
      Emacs.
 
- - Function: make-temp-name PREFIX
+ - Function: make-temp-name prefix
      This function generates a temporary file name starting with
      PREFIX.  The Emacs process number forms part of the result, so
      there is no danger of generating a name being used by another
@@ -708,7 +1198,7 @@ File Name Completion
    This section describes low-level subroutines for completing a file
 name.  For other completion functions, see *Note Completion::.
 
- - Function: file-name-all-completions PARTIAL-FILENAME DIRECTORY
+ - Function: file-name-all-completions partial-filename directory
      This function returns a list of all possible completions for a file
      whose name starts with PARTIAL-FILENAME in directory DIRECTORY.
      The order of the completions is the order of the files in the
@@ -730,7 +1220,7 @@ name.  For other completion functions, see *Note Completion::.
           (file-name-all-completions "fo" "")
                => ("foo")
 
- - Function: file-name-completion FILENAME DIRECTORY
+ - Function: file-name-completion filename directory
      This function completes the file name FILENAME in directory
      DIRECTORY.  It returns the longest prefix common to all file names
      in directory DIRECTORY that start with FILENAME.
@@ -766,493 +1256,3 @@ name.  For other completion functions, see *Note Completion::.
           completion-ignored-extensions
                => (".o" ".elc" "~" ".dvi")
 
-\1f
-File: lispref.info,  Node: User Name Completion,  Prev: File Name Completion,  Up: File Names
-
-User Name Completion
---------------------
-
-   This section describes low-level subroutines for completing a user
-name.  For other completion functions, see *Note Completion::.
-
- - Function: user-name-all-completions PARTIAL-USERNAME
-     This function returns a list of all possible completions for a user
-     whose name starts with PARTIAL-USERNAME.  The order of the
-     completions is unpredictable and conveys no useful information.
-
-     The argument PARTIAL-USERNAME must be a partial user name
-     containing no tilde character and no slash.
-
- - Function: user-name-completion USERNAME
-     This function completes the user name USERNAME.  It returns the
-     longest prefix common to all user names that start with USERNAME.
-
-     If only one match exists and USERNAME matches it exactly, the
-     function returns `t'.  The function returns `nil' if no user name
-     starting with USERNAME exists.
-
- - Function: user-name-completion-1 USERNAME
-     This function completes the user name USERNAME, like
-     `user-name-completion', differing only in the return value.  This
-     function returns the cons of the completion returned by
-     `user-name-completion', and a boolean indicating whether that
-     completion was unique.
-
-\1f
-File: lispref.info,  Node: Contents of Directories,  Next: Create/Delete Dirs,  Prev: File Names,  Up: Files
-
-Contents of Directories
-=======================
-
-   A directory is a kind of file that contains other files entered under
-various names.  Directories are a feature of the file system.
-
-   XEmacs can list the names of the files in a directory as a Lisp list,
-or display the names in a buffer using the `ls' shell command.  In the
-latter case, it can optionally display information about each file,
-depending on the value of switches passed to the `ls' command.
-
- - Function: directory-files DIRECTORY &optional FULL-NAME MATCH-REGEXP
-          NOSORT FILES-ONLY
-     This function returns a list of the names of the files in the
-     directory DIRECTORY.  By default, the list is in alphabetical
-     order.
-
-     If FULL-NAME is non-`nil', the function returns the files'
-     absolute file names.  Otherwise, it returns just the names
-     relative to the specified directory.
-
-     If MATCH-REGEXP is non-`nil', this function returns only those
-     file names that contain that regular expression--the other file
-     names are discarded from the list.
-
-     If NOSORT is non-`nil', `directory-files' does not sort the list,
-     so you get the file names in no particular order.  Use this if you
-     want the utmost possible speed and don't care what order the files
-     are processed in.  If the order of processing is visible to the
-     user, then the user will probably be happier if you do sort the
-     names.
-
-     If FILES-ONLY is the symbol `t', then only the "files" in the
-     directory will be returned; subdirectories will be excluded.  If
-     FILES-ONLY is not `nil' and not `t', then only the subdirectories
-     will be returned.  Otherwise, if FILES-ONLY is `nil' (the default)
-     then both files and subdirectories will be returned.
-
-          (directory-files "~lewis")
-               => ("#foo#" "#foo.el#" "." ".."
-                   "dired-mods.el" "files.texi"
-                   "files.texi.~1~")
-
-     An error is signaled if DIRECTORY is not the name of a directory
-     that can be read.
-
- - Function: insert-directory FILE SWITCHES &optional WILDCARD
-          FULL-DIRECTORY-P
-     This function inserts (in the current buffer) a directory listing
-     for directory FILE, formatted with `ls' according to SWITCHES.  It
-     leaves point after the inserted text.
-
-     The argument FILE may be either a directory name or a file
-     specification including wildcard characters.  If WILDCARD is
-     non-`nil', that means treat FILE as a file specification with
-     wildcards.
-
-     If FULL-DIRECTORY-P is non-`nil', that means FILE is a directory
-     and switches do not contain `-d', so that the listing should show
-     the full contents of the directory.  (The `-d' option to `ls' says
-     to describe a directory itself rather than its contents.)
-
-     This function works by running a directory listing program whose
-     name is in the variable `insert-directory-program'.  If WILDCARD is
-     non-`nil', it also runs the shell specified by `shell-file-name',
-     to expand the wildcards.
-
- - Variable: insert-directory-program
-     This variable's value is the program to run to generate a
-     directory listing for the function `insert-directory'.
-
-\1f
-File: lispref.info,  Node: Create/Delete Dirs,  Next: Magic File Names,  Prev: Contents of Directories,  Up: Files
-
-Creating and Deleting Directories
-=================================
-
-   Most XEmacs Lisp file-manipulation functions get errors when used on
-files that are directories.  For example, you cannot delete a directory
-with `delete-file'.  These special functions exist to create and delete
-directories.
-
- - Command: make-directory DIRNAME &optional PARENTS
-     This function creates a directory named DIRNAME.  Interactively,
-     the default choice of directory to create is the current default
-     directory for file names.  That is useful when you have visited a
-     file in a nonexistent directory.
-
-     Non-interactively, optional argument PARENTS says whether to
-     create parent directories if they don't exist. (Interactively, this
-     always happens.)
-
- - Command: delete-directory DIRNAME
-     This function deletes the directory named DIRNAME.  The function
-     `delete-file' does not work for files that are directories; you
-     must use `delete-directory' in that case.
-
-\1f
-File: lispref.info,  Node: Magic File Names,  Next: Partial Files,  Prev: Create/Delete Dirs,  Up: Files
-
-Making Certain File Names "Magic"
-=================================
-
-   You can implement special handling for certain file names.  This is
-called making those names "magic".  You must supply a regular
-expression to define the class of names (all those that match the
-regular expression), plus a handler that implements all the primitive
-XEmacs file operations for file names that do match.
-
-   The variable `file-name-handler-alist' holds a list of handlers,
-together with regular expressions that determine when to apply each
-handler.  Each element has this form:
-
-     (REGEXP . HANDLER)
-
-All the XEmacs primitives for file access and file name transformation
-check the given file name against `file-name-handler-alist'.  If the
-file name matches REGEXP, the primitives handle that file by calling
-HANDLER.
-
-   The first argument given to HANDLER is the name of the primitive;
-the remaining arguments are the arguments that were passed to that
-operation.  (The first of these arguments is typically the file name
-itself.)  For example, if you do this:
-
-     (file-exists-p FILENAME)
-
-and FILENAME has handler HANDLER, then HANDLER is called like this:
-
-     (funcall HANDLER 'file-exists-p FILENAME)
-
-   Here are the operations that a magic file name handler gets to
-handle:
-
-`add-name-to-file', `copy-file', `delete-directory', `delete-file',
-`diff-latest-backup-file', `directory-file-name', `directory-files',
-`dired-compress-file', `dired-uncache', `expand-file-name',
-`file-accessible-directory-p', `file-attributes', `file-directory-p',
-`file-executable-p', `file-exists-p', `file-local-copy', `file-modes',
-`file-name-all-completions', `file-name-as-directory',
-`file-name-completion', `file-name-directory', `file-name-nondirectory',
-`file-name-sans-versions', `file-newer-than-file-p', `file-readable-p',
-`file-regular-p', `file-symlink-p', `file-truename', `file-writable-p',
-`get-file-buffer', `insert-directory', `insert-file-contents', `load',
-`make-directory', `make-symbolic-link', `rename-file', `set-file-modes',
-`set-visited-file-modtime', `unhandled-file-name-directory',
-`verify-visited-file-modtime', `write-region'.
-
-   Handlers for `insert-file-contents' typically need to clear the
-buffer's modified flag, with `(set-buffer-modified-p nil)', if the
-VISIT argument is non-`nil'.  This also has the effect of unlocking the
-buffer if it is locked.
-
-   The handler function must handle all of the above operations, and
-possibly others to be added in the future.  It need not implement all
-these operations itself--when it has nothing special to do for a
-certain operation, it can reinvoke the primitive, to handle the
-operation "in the usual way".  It should always reinvoke the primitive
-for an operation it does not recognize.  Here's one way to do this:
-
-     (defun my-file-handler (operation &rest args)
-       ;; First check for the specific operations
-       ;; that we have special handling for.
-       (cond ((eq operation 'insert-file-contents) ...)
-             ((eq operation 'write-region) ...)
-             ...
-             ;; Handle any operation we don't know about.
-             (t (let ((inhibit-file-name-handlers
-                      (cons 'my-file-handler
-                            (and (eq inhibit-file-name-operation operation)
-                                 inhibit-file-name-handlers)))
-                     (inhibit-file-name-operation operation))
-                  (apply operation args)))))
-
-   When a handler function decides to call the ordinary Emacs primitive
-for the operation at hand, it needs to prevent the primitive from
-calling the same handler once again, thus leading to an infinite
-recursion.  The example above shows how to do this, with the variables
-`inhibit-file-name-handlers' and `inhibit-file-name-operation'.  Be
-careful to use them exactly as shown above; the details are crucial for
-proper behavior in the case of multiple handlers, and for operations
-that have two file names that may each have handlers.
-
- - Variable: inhibit-file-name-handlers
-     This variable holds a list of handlers whose use is presently
-     inhibited for a certain operation.
-
- - Variable: inhibit-file-name-operation
-     The operation for which certain handlers are presently inhibited.
-
- - Function: find-file-name-handler FILE OPERATION
-     This function returns the handler function for file name FILE, or
-     `nil' if there is none.  The argument OPERATION should be the
-     operation to be performed on the file--the value you will pass to
-     the handler as its first argument when you call it.  The operation
-     is needed for comparison with `inhibit-file-name-operation'.
-
- - Function: file-local-copy FILENAME
-     This function copies file FILENAME to an ordinary non-magic file,
-     if it isn't one already.
-
-     If FILENAME specifies a "magic" file name, which programs outside
-     Emacs cannot directly read or write, this copies the contents to
-     an ordinary file and returns that file's name.
-
-     If FILENAME is an ordinary file name, not magic, then this function
-     does nothing and returns `nil'.
-
- - Function: unhandled-file-name-directory FILENAME
-     This function returns the name of a directory that is not magic.
-     It uses the directory part of FILENAME if that is not magic.
-     Otherwise, it asks the handler what to do.
-
-     This is useful for running a subprocess; every subprocess must
-     have a non-magic directory to serve as its current directory, and
-     this function is a good way to come up with one.
-
-\1f
-File: lispref.info,  Node: Partial Files,  Next: Format Conversion,  Prev: Magic File Names,  Up: Files
-
-Partial Files
-=============
-
-* Menu:
-
-* Intro to Partial Files::
-* Creating a Partial File::
-* Detached Partial Files::
-
-\1f
-File: lispref.info,  Node: Intro to Partial Files,  Next: Creating a Partial File,  Up: Partial Files
-
-Intro to Partial Files
-----------------------
-
-   A "partial file" is a section of a buffer (called the "master
-buffer") that is placed in its own buffer and treated as its own file.
-Changes made to the partial file are not reflected in the master buffer
-until the partial file is "saved" using the standard buffer save
-commands.  Partial files can be "reverted" (from the master buffer)
-just like normal files.  When a file part is active on a master buffer,
-that section of the master buffer is marked as read-only.  Two file
-parts on the same master buffer are not allowed to overlap.  Partial
-file buffers are indicated by the words `File Part' in the modeline.
-
-   The master buffer knows about all the partial files that are active
-on it, and thus killing or reverting the master buffer will be handled
-properly.  When the master buffer is saved, if there are any unsaved
-partial files active on it then the user will be given the opportunity
-to first save these files.
-
-   When a partial file buffer is first modified, the master buffer is
-automatically marked as modified so that saving the master buffer will
-work correctly.
-
-\1f
-File: lispref.info,  Node: Creating a Partial File,  Next: Detached Partial Files,  Prev: Intro to Partial Files,  Up: Partial Files
-
-Creating a Partial File
------------------------
-
- - Function: make-file-part &optional START END NAME BUFFER
-     Make a file part on buffer BUFFER out of the region.  Call it
-     NAME.  This command creates a new buffer containing the contents
-     of the region and marks the buffer as referring to the specified
-     buffer, called the "master buffer".  When the file-part buffer is
-     saved, its changes are integrated back into the master buffer.
-     When the master buffer is deleted, all file parts are deleted with
-     it.
-
-     When called from a function, expects four arguments, START, END,
-     NAME, and BUFFER, all of which are optional and default to the
-     beginning of BUFFER, the end of BUFFER, a name generated from
-     BUFFER name, and the current buffer, respectively.
-
-\1f
-File: lispref.info,  Node: Detached Partial Files,  Prev: Creating a Partial File,  Up: Partial Files
-
-Detached Partial Files
-----------------------
-
-   Every partial file has an extent in the master buffer associated
-with it (called the "master extent"), marking where in the master
-buffer the partial file begins and ends.  If the text in master buffer
-that is contained by the extent is deleted, then the extent becomes
-"detached", meaning that it no longer refers to a specific region of
-the master buffer.  This can happen either when the text is deleted
-directly or when the master buffer is reverted.  Neither of these should
-happen in normal usage because the master buffer should generally not be
-edited directly.
-
-   Before doing any operation that references a partial file's master
-extent, XEmacs checks to make sure that the extent is not detached.  If
-this is the case, XEmacs warns the user of this and the master extent is
-deleted out of the master buffer, disconnecting the file part.  The file
-part's filename is cleared and thus must be explicitly specified if the
-detached file part is to be saved.
-
-\1f
-File: lispref.info,  Node: Format Conversion,  Next: Files and MS-DOS,  Prev: Partial Files,  Up: Files
-
-File Format Conversion
-======================
-
-   The variable `format-alist' defines a list of "file formats", which
-describe textual representations used in files for the data (text,
-text-properties, and possibly other information) in an Emacs buffer.
-Emacs performs format conversion if appropriate when reading and writing
-files.
-
- - Variable: format-alist
-     This list contains one format definition for each defined file
-     format.
-
-   Each format definition is a list of this form:
-
-     (NAME DOC-STRING REGEXP FROM-FN TO-FN MODIFY MODE-FN)
-
-   Here is what the elements in a format definition mean:
-
-NAME
-     The name of this format.
-
-DOC-STRING
-     A documentation string for the format.
-
-REGEXP
-     A regular expression which is used to recognize files represented
-     in this format.
-
-FROM-FN
-     A function to call to decode data in this format (to convert file
-     data into the usual Emacs data representation).
-
-     The FROM-FN is called with two args, BEGIN and END, which specify
-     the part of the buffer it should convert.  It should convert the
-     text by editing it in place.  Since this can change the length of
-     the text, FROM-FN should return the modified end position.
-
-     One responsibility of FROM-FN is to make sure that the beginning
-     of the file no longer matches REGEXP.  Otherwise it is likely to
-     get called again.
-
-TO-FN
-     A function to call to encode data in this format (to convert the
-     usual Emacs data representation into this format).
-
-     The TO-FN is called with two args, BEGIN and END, which specify
-     the part of the buffer it should convert.  There are two ways it
-     can do the conversion:
-
-        * By editing the buffer in place.  In this case, TO-FN should
-          return the end-position of the range of text, as modified.
-
-        * By returning a list of annotations.  This is a list of
-          elements of the form `(POSITION . STRING)', where POSITION is
-          an integer specifying the relative position in the text to be
-          written, and STRING is the annotation to add there.  The list
-          must be sorted in order of position when TO-FN returns it.
-
-          When `write-region' actually writes the text from the buffer
-          to the file, it intermixes the specified annotations at the
-          corresponding positions.  All this takes place without
-          modifying the buffer.
-
-MODIFY
-     A flag, `t' if the encoding function modifies the buffer, and
-     `nil' if it works by returning a list of annotations.
-
-MODE
-     A mode function to call after visiting a file converted from this
-     format.
-
-   The function `insert-file-contents' automatically recognizes file
-formats when it reads the specified file.  It checks the text of the
-beginning of the file against the regular expressions of the format
-definitions, and if it finds a match, it calls the decoding function for
-that format.  Then it checks all the known formats over again.  It
-keeps checking them until none of them is applicable.
-
-   Visiting a file, with `find-file-noselect' or the commands that use
-it, performs conversion likewise (because it calls
-`insert-file-contents'); it also calls the mode function for each
-format that it decodes.  It stores a list of the format names in the
-buffer-local variable `buffer-file-format'.
-
- - Variable: buffer-file-format
-     This variable states the format of the visited file.  More
-     precisely, this is a list of the file format names that were
-     decoded in the course of visiting the current buffer's file.  It
-     is always local in all buffers.
-
-   When `write-region' writes data into a file, it first calls the
-encoding functions for the formats listed in `buffer-file-format', in
-the order of appearance in the list.
-
- - Function: format-write-file FILE FORMAT
-     This command writes the current buffer contents into the file FILE
-     in format FORMAT, and makes that format the default for future
-     saves of the buffer.  The argument FORMAT is a list of format
-     names.
-
- - Function: format-find-file FILE FORMAT
-     This command finds the file FILE, converting it according to
-     format FORMAT.  It also makes FORMAT the default if the buffer is
-     saved later.
-
-     The argument FORMAT is a list of format names.  If FORMAT is
-     `nil', no conversion takes place.  Interactively, typing just
-     <RET> for FORMAT specifies `nil'.
-
- - Function: format-insert-file FILE FORMAT &optional BEG END
-     This command inserts the contents of file FILE, converting it
-     according to format FORMAT.  If BEG and END are non-`nil', they
-     specify which part of the file to read, as in
-     `insert-file-contents' (*note Reading from Files::.).
-
-     The return value is like what `insert-file-contents' returns: a
-     list of the absolute file name and the length of the data inserted
-     (after conversion).
-
-     The argument FORMAT is a list of format names.  If FORMAT is
-     `nil', no conversion takes place.  Interactively, typing just
-     <RET> for FORMAT specifies `nil'.
-
- - Function: format-find-file FILE FORMAT
-     This command finds the file FILE, converting it according to
-     format FORMAT.  It also makes FORMAT the default if the buffer is
-     saved later.
-
-     The argument FORMAT is a list of format names.  If FORMAT is
-     `nil', no conversion takes place.  Interactively, typing just
-     <RET> for FORMAT specifies `nil'.
-
- - Function: format-insert-file FILE FORMAT &optional BEG END
-     This command inserts the contents of file FILE, converting it
-     according to format FORMAT.  If BEG and END are non-`nil', they
-     specify which part of the file to read, as in
-     `insert-file-contents' (*note Reading from Files::.).
-
-     The return value is like what `insert-file-contents' returns: a
-     list of the absolute file name and the length of the data inserted
-     (after conversion).
-
-     The argument FORMAT is a list of format names.  If FORMAT is
-     `nil', no conversion takes place.  Interactively, typing just
-     <RET> for FORMAT specifies `nil'.
-
- - Variable: auto-save-file-format
-     This variable specifies the format to use for auto-saving.  Its
-     value is a list of format names, just like the value of
-     `buffer-file-format'; but it is used instead of
-     `buffer-file-format' for writing auto-save files.  This variable
-     is always local in all buffers.
-