summaryrefslogtreecommitdiff
path: root/lisp/files-x.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2013-06-25 09:07:04 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2013-06-25 09:07:04 -0400
commitc763842b8826d8adffed581838fd73c616686d1a (patch)
tree59b8a93137808fb45892acb8eefac03dddf87972 /lisp/files-x.el
parentbceff1894c0ec2c7f47cd09bed4d94fbaa2a7ea6 (diff)
downloademacs-c763842b8826d8adffed581838fd73c616686d1a.tar.gz
* 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
Diffstat (limited to 'lisp/files-x.el')
-rw-r--r--lisp/files-x.el75
1 files changed, 37 insertions, 38 deletions
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)