From: Chong Yidong Date: Fri, 10 Mar 2006 23:22:30 +0000 (+0000) Subject: * files.el (hack-local-variables-confirm): Don't prompt for ! if X-Git-Tag: emacs-pretest-22.0.90~3714 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=af467e285ed142761527612f2c40fd6dfd02d345;p=emacs.git * files.el (hack-local-variables-confirm): Don't prompt for ! if enable-local-variables is set to always query, or there is no savable variable. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7892a9b6d22..96aae2ec1c4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2006-03-10 Chong Yidong + + * files.el (hack-local-variables-confirm): Don't prompt for ! if + enable-local-variables is set to always query, or there is no + savable variable. + 2006-03-10 Bill Wohler * image.el (image-load-path-for-library): Merge at least three diff --git a/lisp/files.el b/lisp/files.el index fc6267fd002..91a434dd33f 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2349,6 +2349,7 @@ asking you for confirmation." (let ((name (if buffer-file-name (file-name-nondirectory buffer-file-name) (concat "buffer " (buffer-name)))) + (offer-save (and (eq enable-local-variables t) unsafe-vars)) prompt char) (save-window-excursion (let ((buf (get-buffer-create "*Local Variables*"))) @@ -2367,9 +2368,12 @@ asking you for confirmation." (insert "A local variables list is specified in " name "."))) (insert "\n\nDo you want to apply it? You can type y -- to apply the local variables list. -n -- to ignore the local variables list. +n -- to ignore the local variables list.") + (if offer-save + (insert " ! -- to apply the local variables list, and mark these values (*) as safe (in the future, they can be set automatically.)\n\n") + (insert "\n\n")) (dolist (elt vars) (cond ((member elt unsafe-vars) (insert " * ")) @@ -2381,12 +2385,17 @@ n -- to ignore the local variables list. (insert " : ") (princ (cdr elt) buf) (insert "\n")) - (if (< (line-number-at-pos) (window-body-height)) - (setq prompt "Please type y, n, or !: ") - (goto-char (point-min)) - (setq prompt "Please type y, n, or !, or C-v to scroll: ")) + (setq prompt + (format "Please type %s%s: " + (if offer-save "y, n, or !" "y or n") + (if (< (line-number-at-pos) (window-body-height)) + "" + ", or C-v to scroll"))) + (goto-char (point-min)) (let ((inhibit-quit t) (cursor-in-echo-area t) + (exit-chars + (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g))) done) (while (not done) (message prompt) @@ -2396,21 +2405,21 @@ n -- to ignore the local variables list. (condition-case nil (scroll-up) (error (goto-char (point-min)))) - (setq done (memq (downcase char) - '(?! ?y ?n ?\s ?\C-g)))))) + (setq done (memq (downcase char) exit-chars))))) (if (= char ?\C-g) (setq quit-flag nil))) (setq char (downcase char)) - (when (and (= char ?!) unsafe-vars) + (when (and offer-save (= char ?!) unsafe-vars) (dolist (elt unsafe-vars) (add-to-list 'safe-local-variable-values elt)) ;; When this is called from desktop-restore-file-buffer, ;; coding-system-for-read may be non-nil. Reset it before ;; writing to .emacs. - (let ((coding-system-for-read nil)) - (customize-save-variable - 'safe-local-variable-values - safe-local-variable-values))) + (if (or custom-file user-init-file) + (let ((coding-system-for-read nil)) + (customize-save-variable + 'safe-local-variable-values + safe-local-variable-values)))) (kill-buffer buf) (or (= char ?!) (= char ?\s)