Add detailed documentation about lock files

* doc/emacs/files.texi (Interlocking): Point user at detailed
file locking description in lisp reference manual.  Add index
entry for '.#' to improve disoverability of information about locking.

* doc/lispref/files.texi (File Locks): Describe in detail what
the form of the lock file is.  Add index entry for '.#' to
improve disoverability of information about locking.

* src/filelock.c (create-lockfiles): Add cross reference to
file locking in user manual and to 'lock-buffer'.  Add string
'.#' to help users find the doc string.
This commit is contained in:
Robert Pluim 2018-06-01 15:05:23 +02:00
parent e5471b2381
commit 9188291f7a
3 changed files with 22 additions and 6 deletions

View file

@ -766,13 +766,16 @@ file.
@findex ask-user-about-lock @findex ask-user-about-lock
@cindex locking files @cindex locking files
@cindex .#, lock file names
@cindex file locking
When you make the first modification in an Emacs buffer that is When you make the first modification in an Emacs buffer that is
visiting a file, Emacs records that the file is @dfn{locked} by you. visiting a file, Emacs records that the file is @dfn{locked} by you.
(It does this by creating a specially-named symbolic link@footnote{If (It does this by creating a specially-named symbolic link@footnote{If
your file system does not support symbolic links, a regular file is your file system does not support symbolic links, a regular file is
used.} with special contents in the same directory.) Emacs removes the lock used.} with special contents in the same directory. @xref{File
when you save the changes. The idea is that the file is locked Locks,,, elisp} for more details.) Emacs removes the lock when you
whenever an Emacs buffer visiting it has unsaved changes. save the changes. The idea is that the file is locked whenever an
Emacs buffer visiting it has unsaved changes.
@vindex create-lockfiles @vindex create-lockfiles
You can prevent the creation of lock files by setting the variable You can prevent the creation of lock files by setting the variable

View file

@ -712,6 +712,7 @@ with-temp-buffer,, The Current Buffer}.
@section File Locks @section File Locks
@cindex file locks @cindex file locks
@cindex lock file @cindex lock file
@cindex .#, lock file names
When two users edit the same file at the same time, they are likely When two users edit the same file at the same time, they are likely
to interfere with each other. Emacs tries to prevent this situation to interfere with each other. Emacs tries to prevent this situation
@ -720,8 +721,17 @@ modified.
Emacs can then detect the first attempt to modify a buffer visiting a Emacs can then detect the first attempt to modify a buffer visiting a
file that is locked by another Emacs job, and ask the user what to do. file that is locked by another Emacs job, and ask the user what to do.
The file lock is really a file, a symbolic link with a special name, The file lock is really a file, a symbolic link with a special name,
stored in the same directory as the file you are editing. (On file stored in the same directory as the file you are editing. The name is
systems that do not support symbolic links, a regular file is used.) constructed by prepending @file{.#} to the filename of the buffer.
The target of the symbolic link will be of the form
@code{@var{user}@@@var{host}.@var{pid}:@var{boot}}, where @var{user}
is replaced with the current username (from @code{user-login-name}),
@var{host} with the name of the host where Emacs is running (from
@code{system-name}), @var{pid} with Emacs's process id, and @var{boot}
with the time since the last reboot. @code{:@var{boot}} is omitted if
the boot time is unavailable. (On file systems that do not support
symbolic links, a regular file is used instead, with contents of the
form @code{@var{user}@@@var{host}.@var{pid}:@var{boot}}.)
When you access files using NFS, there may be a small probability that When you access files using NFS, there may be a small probability that
you and another user will both lock the same file simultaneously. you and another user will both lock the same file simultaneously.

View file

@ -849,7 +849,10 @@ syms_of_filelock (void)
Vtemporary_file_directory = Qnil; Vtemporary_file_directory = Qnil;
DEFVAR_BOOL ("create-lockfiles", create_lockfiles, DEFVAR_BOOL ("create-lockfiles", create_lockfiles,
doc: /* Non-nil means use lockfiles to avoid editing collisions. */); doc: /* Non-nil means use lockfiles to avoid editing collisions.
The name of the (per-buffer) lockfile is constructed by prepending a
'.#' to the name of the file being locked. See also `lock-buffer' and
Info node `(emacs)Interlocking'. */);
create_lockfiles = 1; create_lockfiles = 1;
defsubr (&Sunlock_buffer); defsubr (&Sunlock_buffer);