From: Stefan Monnier Date: Tue, 25 Jun 2013 13:07:04 +0000 (-0400) Subject: * lisp/files-x.el (read-file-local-variable-value): Use read-from-minibuffer X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1992^2~46 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c763842b8826d8adffed581838fd73c616686d1a;p=emacs.git * lisp/files-x.el (read-file-local-variable-value): Use read-from-minibuffer 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 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7376fc31af4..864822bed20 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-06-25 Stefan Monnier + + * 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 * 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 @@ -119,8 +126,8 @@ 2013-06-21 Dmitry Gutov - * 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. @@ -606,8 +613,8 @@ 2013-06-19 Michael Albinus - * 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 diff --git a/lisp/files-x.el b/lisp/files-x.el index 6864e9a7b14..072eebece80 100644 --- a/lisp/files-x.el +++ b/lisp/files-x.el @@ -38,11 +38,10 @@ 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)