From: Robert Pluim Date: Fri, 1 Jun 2018 13:05:23 +0000 (+0200) Subject: Add detailed documentation about lock files X-Git-Tag: emacs-26.1.90~425^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9188291f7a3a2536ef0b694e4c75f3094cf46fcf;p=emacs.git 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. --- diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 1ced7ca07c6..406e7d980c3 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -766,13 +766,16 @@ file. @findex ask-user-about-lock @cindex locking files +@cindex .#, lock file names +@cindex file locking 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. (It does this by creating a specially-named symbolic link@footnote{If your file system does not support symbolic links, a regular file is -used.} with special contents in the same directory.) Emacs removes the lock -when you save the changes. The idea is that the file is locked -whenever an Emacs buffer visiting it has unsaved changes. +used.} with special contents in the same directory. @xref{File +Locks,,, elisp} for more details.) Emacs removes the lock when you +save the changes. The idea is that the file is locked whenever an +Emacs buffer visiting it has unsaved changes. @vindex create-lockfiles You can prevent the creation of lock files by setting the variable diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 5137f3a9ab4..6dfca0f2128 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -712,6 +712,7 @@ with-temp-buffer,, The Current Buffer}. @section File Locks @cindex file locks @cindex lock file +@cindex .#, lock file names 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 @@ -720,8 +721,17 @@ modified. 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. 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 -systems that do not support symbolic links, a regular file is used.) +stored in the same directory as the file you are editing. The name is +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 you and another user will both lock the same file simultaneously. diff --git a/src/filelock.c b/src/filelock.c index f2dc7234076..d33063c8790 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -849,7 +849,10 @@ syms_of_filelock (void) Vtemporary_file_directory = Qnil; 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; defsubr (&Sunlock_buffer);