elisp: File Locks

 
 24.5 File Locks
 ===============
 
 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 from
 arising by recording a “file lock” when a file is being 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.)
 
    When you access files using NFS, there may be a small probability
 that you and another user will both lock the same file simultaneously.
 If this happens, it is possible for the two users to make changes
 simultaneously, but Emacs will 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 See
 Modification Time.
 
  -- Function: file-locked-p filename
      This function returns ‘nil’ if the file FILENAME is not locked.  It
      returns ‘t’ if it is locked by this Emacs process, and it returns
      the name of the user who has locked it if it is locked by some
      other job.
 
           (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, or if the option
      ‘create-lockfiles’ is ‘nil’.
 
  -- 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, or is
      not locked.
 
  -- User Option: create-lockfiles
      If this variable is ‘nil’, Emacs does not lock files.
 
  -- 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 default definition
      of this function asks the user to say what to do.  The value this
      function returns determines what Emacs does 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.
 
      If you wish, you can replace the ‘ask-user-about-lock’ function
      with your own version that makes the decision in another way.