* lisp/files-x.el (read-file-local-variable-value): Use read-from-minibuffer
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 25 Jun 2013 13:07:04 +0000 (09:07 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 25 Jun 2013 13:07:04 +0000 (09:07 -0400)
for values and use read--expression for expressions.
(read-file-local-variable): Avoid setq.
(read-file-local-variable-mode): Use minor-mode-list.

Fixes: debbugs:14710

lisp/ChangeLog
lisp/files-x.el

index 7376fc3..864822b 100644 (file)
@@ -1,3 +1,10 @@
+2013-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files-x.el (read-file-local-variable-value): Use read-from-minibuffer
+       for values and use read--expression for expressions (bug#14710).
+       (read-file-local-variable): Avoid setq.
+       (read-file-local-variable-mode): Use minor-mode-list.
+
 2013-06-25  RĂ¼diger Sonderfeld  <ruediger@c-plusplus.de>
 
        * lisp/textmodes/bibtex.el (bibtex-generate-url-list): Add support
@@ -31,7 +38,7 @@
        * net/shr.el (shr-browse-url): Use an external browser if given a
        prefix.
 
-       * net/eww.el (eww-external-browser): Moved to shr.
+       * net/eww.el (eww-external-browser): Move to shr.
 
 2013-06-24  Ivan Kanis  <ivan@kanis.fr>
 
 
 2013-06-21  Dmitry Gutov  <dgutov@yandex.ru>
 
-       * progmodes/ruby-mode.el (ruby-font-lock-keywords): Highlight
-       keyword-like methods on Kernel and Module with
+       * progmodes/ruby-mode.el (ruby-font-lock-keywords):
+       Highlight keyword-like methods on Kernel and Module with
        font-lock-builtin-face.
        (auto-mode-alist): Consolidate different entries into one regexp
        and add more *file-s.
 
 2013-06-19  Michael Albinus  <michael.albinus@gmx.de>
 
-       * net/secrets.el (secrets-struct-secret-content-type): Replace
-       check of introspection data by a test call of "CreateItem".
+       * net/secrets.el (secrets-struct-secret-content-type):
+       Replace check of introspection data by a test call of "CreateItem".
        Some servers do not offer introspection.
 
 2013-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
index 6864e9a..072eebe 100644 (file)
 Intended to be used in the `interactive' spec of
 `add-file-local-variable', `delete-file-local-variable',
 `add-dir-local-variable', `delete-dir-local-variable'."
-  (let (default variable)
-    (setq default (variable-at-point))
-    (setq default (and (symbolp default) (boundp default)
+  (let* ((default (variable-at-point))
+         (default (and (symbolp default) (boundp default)
                       (symbol-name default)))
-    (setq variable
+         (variable
          (completing-read
           (if default
               (format "%s (default %s): " prompt default)
@@ -52,48 +51,46 @@ Intended to be used in the `interactive' spec of
             (or (custom-variable-p sym)
                  (get sym 'safe-local-variable)
                 (memq sym '(mode eval coding unibyte))))
-          nil nil nil default nil))
+          nil nil nil default nil)))
     (and (stringp variable) (intern variable))))
 
 (defun read-file-local-variable-value (variable)
   "Read value of file-local VARIABLE using completion.
 Intended to be used in the `interactive' spec of
 `add-file-local-variable' and `add-dir-local-variable'."
-  (let (default value)
-    (cond
-     ((eq variable 'mode)
-      (setq default (and (symbolp major-mode) (symbol-name major-mode)))
-      (setq value
-           (completing-read
-            (if default
-                (format "Add %s with value (default %s): " variable default)
-              (format "Add %s with value: " variable))
-            obarray
-            (lambda (sym)
-              (string-match-p "-mode\\'" (symbol-name sym)))
-            nil nil nil default nil))
+  (cond
+   ((eq variable 'mode)
+    (let* ((default (and (symbolp major-mode) (symbol-name major-mode)))
+           (value
+            (completing-read
+             (if default
+                 (format "Add %s with value (default %s): " variable default)
+               (format "Add %s with value: " variable))
+             obarray
+             (lambda (sym)
+               (string-match-p "-mode\\'" (symbol-name sym)))
+             nil nil nil default nil)))
       (and (stringp value)
-          (intern (replace-regexp-in-string "-mode\\'" "" value))))
-     ((eq variable 'eval)
-      (let ((minibuffer-completing-symbol t))
-       (read-from-minibuffer (format "Add %s with expression: " variable)
-                             nil read-expression-map t
-                             'read-expression-history)))
-     ((eq variable 'coding)
-      (setq default (and (symbolp buffer-file-coding-system)
-                        (symbol-name buffer-file-coding-system)))
+           (intern (replace-regexp-in-string "-mode\\'" "" value)))))
+   ((eq variable 'eval)
+    (read--expression (format "Add %s with expression: " variable)))
+   ((eq variable 'coding)
+    (let ((default (and (symbolp buffer-file-coding-system)
+                        (symbol-name buffer-file-coding-system))))
       (read-coding-system
        (if default
-          (format "Add %s with value (default %s): " variable default)
-        (format "Add %s with value: " variable))
-       default))
-     (t
-      (read (read-string (format "Add %s with value: " variable)
-                        nil 'set-variable-value-history
-                        (format "%S"
-                                (cond ((eq variable 'unibyte) t)
-                                      ((boundp variable)
-                                       (symbol-value variable))))))))))
+           (format "Add %s with value (default %s): " variable default)
+         (format "Add %s with value: " variable))
+       default)))
+   (t
+    (let ((default (format "%S"
+                           (cond ((eq variable 'unibyte) t)
+                                 ((boundp variable)
+                                  (symbol-value variable)))))
+          (minibuffer-completing-symbol t))
+      (read-from-minibuffer (format "Add %s with value: " variable)
+                            nil read-expression-map t
+                            'set-variable-value-history)))))
 
 (defun read-file-local-variable-mode ()
   "Read per-directory file-local variable's mode using completion.
@@ -108,7 +105,9 @@ Intended to be used in the `interactive' spec of
           obarray
           (lambda (sym)
             (and (string-match-p "-mode\\'" (symbol-name sym))
-                 (not (string-match-p "-minor-mode\\'" (symbol-name sym)))))
+                 (not (or (memq sym minor-mode-list)
+                           (string-match-p "-minor-mode\\'"
+                                           (symbol-name sym))))))
           nil nil nil default nil)))
     (cond
      ((equal mode "nil") nil)