GNU bug report logs - #9820
24.0.90; Behaviour of add-file-local-variable

Previous Next

Package: emacs;

Reported by: Jambunathan K <kjambunathan <at> gmail.com>

Date: Fri, 21 Oct 2011 05:14:02 UTC

Severity: wishlist

Found in version 24.0.90

Fixed in version 24.3.50

Done: Juri Linkov <juri <at> jurta.org>

Bug is archived. No further changes may be made.

Full log


Message #20 received at 9820 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> jurta.org>
To: Jambunathan K <kjambunathan <at> gmail.com>
Cc: 9820 <at> debbugs.gnu.org
Subject: Re: bug#9820: 24.0.90; Behaviour of add-file-local-variable
Date: Sat, 22 Oct 2011 18:35:47 +0300
> How about -
> "Local Variables section updated.

That's exactly what these commands purposely do,
and users see as a result, so there is no need
to reiterate the obvious fact in the message.

> To update actual variable values, revisit the file"

If it's more clear, we could change:

  "Revisit file to make this change take effect"

to

  "Revisit file to update actual variable values"

> This way a (message ...) can be issued as soon as any modifications -
> add-or-replace or delete - happen on the buffer.  I think the extra
> intelligence of checking for new value against the old value could be
> dropped altogether. The message is merely meant as a warning, so being
> paranoid and issuing a warning ALWAYS will also serve the purpose well.

After moving this message to modify-file-local-variable,
checking for new value against the old value really makes less sense
because it's unclear what to do for the `delete' operations,
so I removed this check below.

> Would you like to give me a new patch with the warning message pushed to
> modify-* routines (as Stefan suggested).

Please try a new patch:

=== modified file 'lisp/files-x.el'
--- lisp/files-x.el	2011-04-19 13:44:55 +0000
+++ lisp/files-x.el	2011-10-22 15:34:12 +0000
@@ -115,7 +115,7 @@ (defun read-file-local-variable-mode ()
      ((and (stringp mode) (fboundp (intern mode))) (intern mode))
      (t mode))))
 
-(defun modify-file-local-variable (variable value op)
+(defun modify-file-local-variable (variable value op &optional interactive)
   "Modify file-local VARIABLE in Local Variables depending on operation OP.
 
 If OP is `add-or-replace' then delete all existing settings of
@@ -198,10 +198,13 @@ (defun modify-file-local-variable (varia
 	   ((eq variable 'mode) (goto-char beg))
 	   ((null replaced-pos) (goto-char end))
 	   (replaced-pos (goto-char replaced-pos)))
-	  (insert (format "%s%S: %S%s\n" prefix variable value suffix)))))))
+	  (insert (format "%s%S: %S%s\n" prefix variable value suffix)))
+
+	(when interactive
+	  (message "Revisit file to make this change take effect"))))))
 
 ;;;###autoload
-(defun add-file-local-variable (variable value)
+(defun add-file-local-variable (variable value &optional interactive)
   "Add file-local VARIABLE with its VALUE to the Local Variables list.
 
 This command deletes all existing settings of VARIABLE (except `mode'
@@ -213,17 +216,17 @@ (defun add-file-local-variable (variable
 `Local Variables:' and the last line containing the string `End:'."
   (interactive
    (let ((variable (read-file-local-variable "Add file-local variable")))
-     (list variable (read-file-local-variable-value variable))))
-  (modify-file-local-variable variable value 'add-or-replace))
+     (list variable (read-file-local-variable-value variable) t)))
+  (modify-file-local-variable variable value 'add-or-replace interactive))
 
 ;;;###autoload
-(defun delete-file-local-variable (variable)
+(defun delete-file-local-variable (variable &optional interactive)
   "Delete all settings of file-local VARIABLE from the Local Variables list."
   (interactive
-   (list (read-file-local-variable "Delete file-local variable")))
-  (modify-file-local-variable variable nil 'delete))
+   (list (read-file-local-variable "Delete file-local variable") t))
+  (modify-file-local-variable variable nil 'delete interactive))
 
-(defun modify-file-local-variable-prop-line (variable value op)
+(defun modify-file-local-variable-prop-line (variable value op &optional interactive)
   "Modify file-local VARIABLE in the -*- line depending on operation OP.
 
 If OP is `add-or-replace' then delete all existing settings of
@@ -320,10 +323,13 @@ (defun modify-file-local-variable-prop-l
 	      (insert ";"))
 	  (unless (eq (char-before) ?\s) (insert " "))
 	  (insert (format "%S: %S;" variable value))
-	  (unless (eq (char-after) ?\s) (insert " "))))))))
+	  (unless (eq (char-after) ?\s) (insert " "))))))
+
+    	(when interactive
+	  (message "Revisit file to make this change take effect"))))
 
 ;;;###autoload
-(defun add-file-local-variable-prop-line (variable value)
+(defun add-file-local-variable-prop-line (variable value &optional interactive)
   "Add file-local VARIABLE with its VALUE to the -*- line.
 
 This command deletes all existing settings of VARIABLE (except `mode'
@@ -334,15 +340,15 @@ (defun add-file-local-variable-prop-line
 then this function adds it."
   (interactive
    (let ((variable (read-file-local-variable "Add -*- file-local variable")))
-     (list variable (read-file-local-variable-value variable))))
-  (modify-file-local-variable-prop-line variable value 'add-or-replace))
+     (list variable (read-file-local-variable-value variable) t)))
+  (modify-file-local-variable-prop-line variable value 'add-or-replace interactive))
 
 ;;;###autoload
-(defun delete-file-local-variable-prop-line (variable)
+(defun delete-file-local-variable-prop-line (variable &optional interactive)
   "Delete all settings of file-local VARIABLE from the -*- line."
   (interactive
-   (list (read-file-local-variable "Delete -*- file-local variable")))
-  (modify-file-local-variable-prop-line variable nil 'delete))
+   (list (read-file-local-variable "Delete -*- file-local variable") t))
+  (modify-file-local-variable-prop-line variable nil 'delete interactive))
 
 (defvar auto-insert) ; from autoinsert.el
 





This bug report was last modified 12 years and 61 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.