The command \\[normal-mode] always obeys local-variables lists
and ignores this variable.")
-(defconst ignore-local-eval nil
- "*Non-nil means ignore the \"variable\" `eval' in a file's local variables.
-This applies when the local-variables list is scanned automatically
-after you find a file. If you explicitly request such a scan with
-\\[normal-mode], there is no query, regardless of this variable.")
+(defconst enable-local-eval nil
+ "*Control processing of the \"variable\" `eval' in a file's local variables.
+The value can be t, nil or something else.
+A value of t means obey `eval' variables;
+nil means ignore them; anything else means query.
+
+The command \\[normal-mode] always obeys local-variables lists
+and ignores this variable.")
;; Avoid losing in versions where CLASH_DETECTION is disabled.
(or (fboundp 'lock-buffer)
(funcall (intern (concat (downcase (symbol-name val))
"-mode"))))
((eq var 'eval)
- (if (or ignore-local-eval
- (string= (user-login-name) "root"))
- (message "Ignoring `eval:' in file's local variables")
- (save-excursion (eval val))))
+ (if (and (not (string= (user-login-name) "root"))
+ (or (eq enable-local-eval t)
+ (and enable-local-eval
+ (save-window-excursion
+ (switch-to-buffer (current-buffer))
+ (save-excursion
+ (beginning-of-line)
+ (set-window-start (selected-window) (point)))
+ (y-or-n-p (format "Process `eval' local variable in file %s? "
+ (file-name-nondirectory buffer-file-name)))))))
+ (save-excursion (eval val))
+ (message "Ignoring `eval:' in file's local variables")))
(t (make-local-variable var)
(set var val))))))))))
\f
return decode_window (window)->dedicated;
}
-DEFUN ("set-window-buffer-dedicated", Fset_window_buffer_dedicated,
- Sset_window_buffer_dedicated, 2, 2, 0,
- "Make WINDOW display BUFFER and be dedicated to that buffer.\n\
-Then Emacs will not automatically change which buffer appears in WINDOW.\n\
-If BUFFER is nil, make WINDOW not be dedicated (but don't change which\n\
-buffer appears in it currently).")
+DEFUN ("set-window-dedicated-p", Fset_window_dedicated_p,
+ Sset_window_dedicated_p, 2, 2, 0,
+ "Control whether WINDOW is dedicated to the buffer it displays.\n\
+If it is dedicated, Emacs will not automatically change\n\
+which buffer appears in it.\n\
+The second argument is the new value for the dedication flag;\n\
+non-nil means yes.")
(window, arg)
Lisp_Object window, arg;
{
if (NILP (arg))
w->dedicated = Qnil;
else
- {
- Fset_window_buffer (window, Fget_buffer_create (arg));
- w->dedicated = Qt;
- }
+ w->dedicated = Qt;
return w->dedicated;
}
defsubr (&Sset_window_point);
defsubr (&Sset_window_start);
defsubr (&Swindow_dedicated_p);
- defsubr (&Sset_window_buffer_dedicated);
+ defsubr (&Sset_window_dedicated_p);
defsubr (&Swindow_display_table);
defsubr (&Sset_window_display_table);
defsubr (&Snext_window);