]> git.eshelyaron.com Git - emacs.git/commitdiff
Add lock-file-mode
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 16 Jul 2021 16:13:28 +0000 (18:13 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 16 Jul 2021 16:13:28 +0000 (18:13 +0200)
* doc/emacs/files.texi (Interlocking):
* doc/lispref/files.texi (File Locks):
* etc/NEWS: Add lock-file-mode.

* lisp/files.el (lock-file-name-transforms)
(remote-file-name-inhibit-locks): Move down.
(lock-file-mode): New minor mode.

doc/emacs/files.texi
doc/lispref/files.texi
etc/NEWS
lisp/files.el

index 54ffcd3cafc23187e75cae57f3967a33f34e60cc..7edf4d2bbbf087886dc4a2afa63b446cf027fe01 100644 (file)
@@ -849,6 +849,10 @@ diff-buffer-with-file} command.  @xref{Comparing Files}.
   You can prevent the creation of remote lock files by setting the
 variable @code{remote-file-name-inhibit-locks} to @code{t}.
 
+@cindex lock-file-mode
+  The minor mode @code{lock-file-mode}, called interactively, toggles
+the local value of @code{create-lockfiles} in the current buffer.
+
 @node File Shadowing
 @subsection Shadowing Files
 @cindex shadow files
index 1f4049f715cdee05e85f7a54962da6dc4df2ebd5..c7e5537c10ceb7fbcdfddf91064436d1f64977a9 100644 (file)
@@ -826,6 +826,11 @@ You can prevent the creation of remote lock files by setting the
 variable @code{remote-file-name-inhibit-locks} to @code{t}.
 @end defopt
 
+@deffn Command lock-file-mode
+This command, called interactively, toggles the local value of
+@code{create-lockfiles} in the current buffer.
+@end deffn
+
 @node Information about Files
 @section Information about Files
 @cindex file, information about
index e18b3d04aa4cdc4c8231c2ee58055fc2142bb28a..4bfb5b4d16562b99e60157a3765bd35f754da779 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2191,6 +2191,22 @@ Shift while typing 'C-a', i.e. 'C-S-a', will now highlight the text.
 If the 'EMACS_TEST_VERBOSE' environment variable is set, failure
 summaries will include the failing condition.
 
+** File Locks
+
++++
+*** New user option 'lock-file-name-transforms'.
+This option allows controlling where lock files are written.  It uses
+the same syntax as 'auto-save-file-name-transforms'.
+
++++
+*** New user option 'remote-file-name-inhibit-locks'.
+When non-nil, this option suppresses lock files for remote files.
+
++++
+*** New minor mode 'lock-file-mode'.
+This command, called interactively, toggles the local value of
+'create-lockfiles' in the current buffer.
+
 ** Miscellaneous
 
 ---
@@ -2209,15 +2225,6 @@ will now restore the original order.
 This is like 'insert-buffer-substring', but works in the opposite
 direction.
 
-+++
-*** New user option 'lock-file-name-transforms'.
-This option allows controlling where lock files are written.  It uses
-the same syntax as 'auto-save-file-name-transforms'.
-
-+++
-*** New user option 'remote-file-name-inhibit-locks'.
-When non-nil, this option suppresses lock files for remote files.
-
 +++
 *** New user option 'kill-transform-function'.
 This can be used to transform (and suppress) strings from entering the
index 862982b71df8fbca05828379c3df960af932a722..8ccf9a9c75a2749fcd9a06920aa7bf43d73db477 100644 (file)
@@ -412,26 +412,6 @@ ignored."
   :initialize 'custom-initialize-delay
   :version "21.1")
 
-(defcustom lock-file-name-transforms nil
-  "Transforms to apply to buffer file name before making a lock file name.
-This has the same syntax as
-`auto-save-file-name-transforms' (which see), but instead of
-applying to auto-save file names, it's applied to lock file names.
-
-By default, a lock file is put into the same directory as the
-file it's locking, and it has the same name, but with \".#\" prepended."
-  :group 'files
-  :type '(repeat (list (regexp :tag "Regexp")
-                       (string :tag "Replacement")
-                      (boolean :tag "Uniquify")))
-  :version "28.1")
-
-(defcustom remote-file-name-inhibit-locks nil
-  "Whether to use file locks for remote files."
-  :group 'files
-  :version "28.1"
-  :type 'boolean)
-
 (defvar auto-save--timer nil "Timer for `auto-save-visited-mode'.")
 
 (defcustom auto-save-visited-interval 5
@@ -485,6 +465,32 @@ If `silently', don't ask the user before saving."
   :type '(choice (const t) (const nil) (const silently))
   :group 'abbrev)
 
+(defcustom lock-file-name-transforms nil
+  "Transforms to apply to buffer file name before making a lock file name.
+This has the same syntax as
+`auto-save-file-name-transforms' (which see), but instead of
+applying to auto-save file names, it's applied to lock file names.
+
+By default, a lock file is put into the same directory as the
+file it's locking, and it has the same name, but with \".#\" prepended."
+  :group 'files
+  :type '(repeat (list (regexp :tag "Regexp")
+                       (string :tag "Replacement")
+                      (boolean :tag "Uniquify")))
+  :initialize 'custom-initialize-delay
+  :version "28.1")
+
+(defcustom remote-file-name-inhibit-locks nil
+  "Whether to use file locks for remote files."
+  :group 'files
+  :version "28.1"
+  :type 'boolean)
+
+(define-minor-mode lock-file-mode
+  "Toggle file locking in the current buffer (Lock File mode)."
+  :version "28.1"
+  (setq-local create-lockfiles (and lock-file-mode t)))
+
 (defcustom find-file-run-dired t
   "Non-nil means allow `find-file' to visit directories.
 To visit the directory, `find-file' runs `find-directory-functions'."