unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: [PATCH] allow function values for `enable-local-eval'
       [not found] <E17NLww-0005Cn-00@floss>
@ 2002-06-28 17:41 ` Richard Stallman
       [not found]   ` <87u1nnnqlp.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
  0 siblings, 1 reply; 25+ messages in thread
From: Richard Stallman @ 2002-06-28 17:41 UTC (permalink / raw)
  Cc: emacs-devel

    This patch allows users to set `enable-local-eval' to a function.  If
    the function returns non-nil, the eval happens, otherwise it does not.

That is a general basis for a solution, but it has no specific
knowledge; it requires that to be provided by the user.  I'm not
necessarily rejecting it, but it would be more helpful to do something
that embody specific knowledge, and does the right thing (for some
cases) without requiring user customization.

    We have a project where virtually every source file has some "eval:"
    forms.

Can you show me some of them?  Maybe we can simply allow these forms
just as the existing code already allows certain `put' expressions.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
       [not found]   ` <87u1nnnqlp.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
@ 2002-06-29  0:55     ` Kim F. Storm
  2002-06-29 22:22       ` Richard Stallman
  2002-06-29 22:22     ` Richard Stallman
  1 sibling, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-06-29  0:55 UTC (permalink / raw)
  Cc: rms, emacs-devel

Karl Fogel <kfogel@floss> writes:

> Richard Stallman <rms@gnu.org> writes:
> > That is a general basis for a solution, but it has no specific
> > knowledge; it requires that to be provided by the user.  I'm not
> > necessarily rejecting it, but it would be more helpful to do something
> > that embody specific knowledge, and does the right thing (for some
> > cases) without requiring user customization.
> 
> Yeah, we could provide such functionality if we can think of it, but I
> think it's still necessary to offer the general solution.

I agree with Karl that allowing the user to fully customize this would
be very useful.  I'm working on a project where the files belonging to
one of the modules have a rather complicated -- but harmless -- eval:
which I would really like to be able to allow without confirmation
whenever I open one of those files (which I do fairly often).

And as Karl says, emacs cannot possibly treat this as "standard
knowledge".

For this, user customization is a good thing!

But maybe it would be better to have a more hook-like approach
such as having a special hook like
        enable-local-eval-functions
which are run until success (i.e. any of the functions may return 
true to allow a specific eval to be executed), and if all of them
returns false, the default method is used according to enable-local-eval
(i.e. ignore or ask user for confirmation).

Something like

        (if (or (run-hook-with-args-until-success
                 'enable-local-eval-functions val)
                (eq enable-local-eval t)
                (and enable-local-eval
                     (y-or-n-p ...)))
            (eval ...))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
       [not found]   ` <87u1nnnqlp.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
  2002-06-29  0:55     ` Kim F. Storm
@ 2002-06-29 22:22     ` Richard Stallman
       [not found]       ` <877kkhlmgw.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
  1 sibling, 1 reply; 25+ messages in thread
From: Richard Stallman @ 2002-06-29 22:22 UTC (permalink / raw)
  Cc: emacs-devel

    It's precisely *because* providing such procedures is non-trivial that
    Emacs itself usually won't be able to provide a useful one.

I don't know if it is non-trivial.  Please show us your concrete
application, and then let's discuss what to do about it.

    What if you want to automatically eval only expressions that have been
    cryptographically signed by someone you trust?  Emacs is not in a
    position to implement this in a fully general way right now.

That sounds like TCPA--it is very scary.  We don't want to support
that or anything like that.

    Yes, they all look roughly like this:

       /* 
	* local variables:
	* eval: (load-file "../../tools/dev/svn-dev.el")
	* end:
	*/

What does this file do?  Is there a reason you can't define a major
mode in it, and use that asyou would any other major mode?

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-06-29  0:55     ` Kim F. Storm
@ 2002-06-29 22:22       ` Richard Stallman
  2002-06-30 21:37         ` Kim F. Storm
  0 siblings, 1 reply; 25+ messages in thread
From: Richard Stallman @ 2002-06-29 22:22 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

      I'm working on a project where the files belonging to
    one of the modules have a rather complicated -- but harmless -- eval:

Could you show it to us, please?

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-06-29 22:22       ` Richard Stallman
@ 2002-06-30 21:37         ` Kim F. Storm
  2002-07-01 14:10           ` Richard Stallman
  0 siblings, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-06-30 21:37 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>       I'm working on a project where the files belonging to
>     one of the modules have a rather complicated -- but harmless -- eval:
> 
> Could you show it to us, please?
> 

I edited out the details but here it is:

 eval: (c-add-style "StyleX" (quote ((c-basic-offset . 4) (c-offsets-alist (label . *) ...))) t)

Even if we provided a c-add-style: hook similar to c-file-style:
I couldn't just replace the eval: with it...

First, I'm not in control of those files, so I'm not in a position to
change those files, so I have to live with that `eval:'.

Secondly, even if I could change the eval:, that would disturbe other
developers which are still using older versions of emacs (some are
still using 20.7, and are not going to change any time soon).

Consequently, for me, it would be really nice if I could check for
this specific hook and just say it's ok.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-06-30 21:37         ` Kim F. Storm
@ 2002-07-01 14:10           ` Richard Stallman
  2002-07-01 21:26             ` Kim F. Storm
  2002-07-03  1:28             ` Kevin Ryde
  0 siblings, 2 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-01 14:10 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

    I edited out the details but here it is:

     eval: (c-add-style "StyleX" (quote ((c-basic-offset . 4) (c-offsets-alist (label . *) ...))) t)

This suggests we add a feature where a function can be marked
as "ok to call", provided its arguments are all constant.
That way, this would work with no user customization required.
Similar cases with other functions could be enabled globally,
and local customization would be easy too.

We can add something more completely general if desired,
but I suspect this will handle all actual needs.  Its advantage
is that we can make it DTRT for most of the cases, straight out
of the box.

Please try this code.  It seemed to work for me.


(defun hack-one-local-variable-constantp (exp)
  (or (and (not (symbolp exp)) (not (consp exp)))
      (memq exp '(t nil))
      (keywordp exp)
      (hack-one-local-variable-quotep exp)))

(defun hack-one-local-variable-eval-safep (exp)
  "Return t if it is safe to eval EXP when it is found in a file."
  (and (consp exp)
       (or (and (eq (car exp) 'put)
		(hack-one-local-variable-quotep (nth 1 exp))
		(hack-one-local-variable-quotep (nth 2 exp))
		(memq (nth 1 (nth 2 exp))
		      '(lisp-indent-hook))
		;; Only allow safe expues of lisp-indent-hook;
		;; not functions.
		(or (numberp (nth 3 exp))
		    (equal (nth 3 exp) ''defun)))
	   (and (symbolp (car exp))
		(get (car exp) 'safe-local-eval-function)
		(let ((ok t))
		  (dolist (arg (cdr exp))
		    (unless (hack-one-local-variable-constantp arg)
		      (setq ok nil)))
		  ok)))))

(defun hack-one-local-variable (var val)
  "\"Set\" one variable in a local variables spec.
A few patterns are specified so that any name which matches one
is considered risky."
  (cond ((eq var 'mode)
	 (funcall (intern (concat (downcase (symbol-name val))
				  "-mode"))))
	((eq var 'coding)
	 ;; We have already handled coding: tag in set-auto-coding.
	 nil)
	((memq var ignored-local-variables)
	 nil)
	;; "Setting" eval means either eval it or do nothing.
	;; Likewise for setting hook variables.
	((or (get var 'risky-local-variable)
	     (and
	      (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$"
			    (symbol-name var))
	      (not (get var 'safe-local-variable))))
	 ;; Permit evalling a put of a harmless property.
	 ;; if the args do nothing tricky.
	 (if (or (and (eq var 'eval)
		      (hack-one-local-variable-eval-safep val))
		 ;; Permit eval if not root and user says ok.
		 (and (not (zerop (user-uid)))
		      (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)))
				 (setq enable-local-eval
				       (y-or-n-p (format "Process `eval' or hook local variables in %s? "
							 (if buffer-file-name
							     (concat "file " (file-name-nondirectory buffer-file-name))
							   (concat "buffer " (buffer-name)))))))))))
	     (if (eq var 'eval)
		 (save-excursion (eval val))
	       (make-local-variable var)
	       (set var val))
	   (message "Ignoring `eval:' in the local variables list")))
	;; Ordinary variable, really set it.
	(t (make-local-variable var)
	   ;; Make sure the string has no text properties.
	   ;; Some text properties can get evaluated in various ways,
	   ;; so it is risky to put them on with a local variable list.
	   (if (stringp val)
	       (set-text-properties 0 (length val) nil val))
	   (set var val))))

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
       [not found]       ` <877kkhlmgw.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
@ 2002-07-01 14:10         ` Richard Stallman
  0 siblings, 0 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-01 14:10 UTC (permalink / raw)
  Cc: emacs-devel

It seems to me that svn-dev.el is not coherent, and these things don't
particularly belong together.  Some of them seem to be meant to
interface Emacs to Subversion; others have to do with writing C and
Python and Perl code in certain styles.  I think the best thing to do
with the interface code is to put it into a separate file and load it
from your .emacs file.  The C, Python and Perl stuff can be handled
with the change I proposed in another message.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-01 14:10           ` Richard Stallman
@ 2002-07-01 21:26             ` Kim F. Storm
  2002-07-02 19:46               ` Richard Stallman
  2002-07-03  1:28             ` Kevin Ryde
  1 sibling, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-07-01 21:26 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I edited out the details but here it is:
> 
>      eval: (c-add-style "StyleX" (quote ((c-basic-offset . 4) (c-offsets-alist (label . *) ...))) t)
> 
> This suggests we add a feature where a function can be marked
> as "ok to call", provided its arguments are all constant.
> That way, this would work with no user customization required.
> Similar cases with other functions could be enabled globally,
> and local customization would be easy too.

This sounds like a good feature.

> 
> We can add something more completely general if desired,
> but I suspect this will handle all actual needs.  Its advantage
> is that we can make it DTRT for most of the cases, straight out
> of the box.

Well, I still need to do
        (put 'c-add-style 'safe-local-eval-function t)
in my .emacs, but that's easier than writing my own
hook function.

> 
> Please try this code.  It seemed to work for me.

Works for me too.  Thanks.

The following comment seems corrupted; "expues" should be "values".
I guess one too many replacement of "val" by "exp" :-)

	;; Only allow safe expues of lisp-indent-hook;
	;; not functions.
	(or (numberp (nth 3 exp))
	    (equal (nth 3 exp) ''defun)))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-01 21:26             ` Kim F. Storm
@ 2002-07-02 19:46               ` Richard Stallman
  2002-07-02 20:11                 ` Stefan Monnier
  2002-07-02 21:20                 ` Kim F. Storm
  0 siblings, 2 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-02 19:46 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

    Well, I still need to do
	    (put 'c-add-style 'safe-local-eval-function t)
    in my .emacs, but that's easier than writing my own
    hook function.

We will do that by default for c-add-style, and various other
safe functions for which users request it.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-02 19:46               ` Richard Stallman
@ 2002-07-02 20:11                 ` Stefan Monnier
  2002-07-02 21:49                   ` Kim F. Storm
  2002-07-04  7:07                   ` Richard Stallman
  2002-07-02 21:20                 ` Kim F. Storm
  1 sibling, 2 replies; 25+ messages in thread
From: Stefan Monnier @ 2002-07-02 20:11 UTC (permalink / raw)
  Cc: storm, kfogel, emacs-devel

>     Well, I still need to do
> 	    (put 'c-add-style 'safe-local-eval-function t)
>     in my .emacs, but that's easier than writing my own
>     hook function.
> 
> We will do that by default for c-add-style, and various other
> safe functions for which users request it.

I'm sure crackers will be happy about it.
The argument passed to `c-add-style' allows you to buffer-locally
set any variable to any value whatsoever.  Hardly "safe" in my book.


	Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-02 19:46               ` Richard Stallman
  2002-07-02 20:11                 ` Stefan Monnier
@ 2002-07-02 21:20                 ` Kim F. Storm
  2002-07-04  7:06                   ` Richard Stallman
  1 sibling, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-07-02 21:20 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Well, I still need to do
> 	    (put 'c-add-style 'safe-local-eval-function t)
>     in my .emacs, but that's easier than writing my own
>     hook function.
> 
> We will do that by default for c-add-style, and various other
> safe functions for which users request it.

lisp/ediff-init.el and ediff-diff.el have these lines which
triggers the eval question:

;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))

I don't think `put' should be a safe-local-eval-function, but maybe
it is ok to allow 'edebug-form-spec in addition to 'lisp-indent-hook ?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-02 20:11                 ` Stefan Monnier
@ 2002-07-02 21:49                   ` Kim F. Storm
  2002-07-04  7:07                   ` Richard Stallman
  1 sibling, 0 replies; 25+ messages in thread
From: Kim F. Storm @ 2002-07-02 21:49 UTC (permalink / raw)
  Cc: Richard Stallman, kfogel, emacs-devel

"Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:

> >     Well, I still need to do
> > 	    (put 'c-add-style 'safe-local-eval-function t)
> >     in my .emacs, but that's easier than writing my own
> >     hook function.
> > 
> > We will do that by default for c-add-style, and various other
> > safe functions for which users request it.
> 
> I'm sure crackers will be happy about it.
> The argument passed to `c-add-style' allows you to buffer-locally
> set any variable to any value whatsoever.  Hardly "safe" in my book.
> 

I think it would be both simpler and safer to just provide a list
variable, e.g. safe-local-eval-list, and let the user add his
well-known eval hooks to it; the hook-code should then simply see if a
questionable eval hook is a "member" of that list.

E.g. I could add that specific 
        '(c-add-style "StyleX" '(....)))
to the list.

And Karl could add his '(load "...") to the list.

A much better approach IMHO.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-01 14:10           ` Richard Stallman
  2002-07-01 21:26             ` Kim F. Storm
@ 2002-07-03  1:28             ` Kevin Ryde
  1 sibling, 0 replies; 25+ messages in thread
From: Kevin Ryde @ 2002-07-03  1:28 UTC (permalink / raw)


Richard Stallman <rms@gnu.org> writes:
>
> We can add something more completely general if desired,
> but I suspect this will handle all actual needs.  Its advantage
> is that we can make it DTRT for most of the cases, straight out
> of the box.

Personally, just for what it's worth, I've been enabling eval only for
certain files I know I want, according to their filename.  (By
re-running hack-local-variables in find-file-hooks with
enable-local-eval suitably bound).

For me it's not just a case of what the eval contains, for instance
sometimes I want time-stamp updating (because a file belongs to me)
but usually not (because I'll be submitting a diff somewhere and don't
want to include a spurious change).

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-02 21:20                 ` Kim F. Storm
@ 2002-07-04  7:06                   ` Richard Stallman
  2002-07-04 15:13                     ` Stefan Monnier
  0 siblings, 1 reply; 25+ messages in thread
From: Richard Stallman @ 2002-07-04  7:06 UTC (permalink / raw)
  Cc: kfogel, emacs-devel

    ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
    ;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
    ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))

    I don't think `put' should be a safe-local-eval-function, but maybe
    it is ok to allow 'edebug-form-spec in addition to 'lisp-indent-hook ?

It is ok, but meanwhile there is now a way to specify these things in
the macro definition.  Maybe we should change this to use that mechanism
instead.

Kifer, would you like to do that?  Is there a difficulty with doing
that?


** The `defmacro' form may contain declarations specifying how to
indent the macro in Lisp mode and how to debug it with Edebug.  The
syntax of defmacro has been extended to

   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)

DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
declaration specifiers supported are:

(indent INDENT)
	Set NAME's `lisp-indent-function' property to INDENT.

(edebug DEBUG)
	Set NAME's `edebug-form-spec' property to DEBUG.  (This is
	equivalent to writing a `def-edebug-spec' for the macro.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-02 20:11                 ` Stefan Monnier
  2002-07-02 21:49                   ` Kim F. Storm
@ 2002-07-04  7:07                   ` Richard Stallman
  2002-07-04 15:28                     ` Stefan Monnier
  2002-07-04 19:36                     ` Kim F. Storm
  1 sibling, 2 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-04  7:07 UTC (permalink / raw)
  Cc: storm, kfogel, emacs-devel

    I'm sure crackers will be happy about it.
    The argument passed to `c-add-style' allows you to buffer-locally
    set any variable to any value whatsoever.  Hardly "safe" in my book.

I didn't realize that.  It will be necessary then to check
the arguments to c-add-style.  Still, it is better to install
this checking by default than to make users install it as
a customization.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04  7:06                   ` Richard Stallman
@ 2002-07-04 15:13                     ` Stefan Monnier
  2002-07-05 10:48                       ` Richard Stallman
  0 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2002-07-04 15:13 UTC (permalink / raw)
  Cc: storm, kfogel, emacs-devel, kifer

>    (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)

BTW, the docstring hasn't been updated yet.


	Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04  7:07                   ` Richard Stallman
@ 2002-07-04 15:28                     ` Stefan Monnier
  2002-07-04 19:38                       ` Kim F. Storm
  2002-07-04 19:36                     ` Kim F. Storm
  1 sibling, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2002-07-04 15:28 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, storm, kfogel, emacs-devel

>     I'm sure crackers will be happy about it.
>     The argument passed to `c-add-style' allows you to buffer-locally
>     set any variable to any value whatsoever.  Hardly "safe" in my book.
> 
> I didn't realize that.  It will be necessary then to check
> the arguments to c-add-style.  Still, it is better to install
> this checking by default than to make users install it as
> a customization.

Huh?  I personally don't see the point of using `c-add-style' in
the local variables section.  My understanding is that one guy did that
and mentioned it here, but I have seen no evidence that anybody
else does.
It seems simpler to just set the corresponding variables one by one
in the local variables section.


	Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 19:38                       ` Kim F. Storm
@ 2002-07-04 18:46                         ` Stefan Monnier
  2002-07-04 21:58                           ` Kim F. Storm
  2002-07-05  1:26                           ` Miles Bader
  0 siblings, 2 replies; 25+ messages in thread
From: Stefan Monnier @ 2002-07-04 18:46 UTC (permalink / raw)
  Cc: Stefan Monnier, Richard Stallman, kfogel, emacs-devel

> "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:
> 
> > >     I'm sure crackers will be happy about it.
> > >     The argument passed to `c-add-style' allows you to buffer-locally
> > >     set any variable to any value whatsoever.  Hardly "safe" in my book.
> > > 
> > > I didn't realize that.  It will be necessary then to check
> > > the arguments to c-add-style.  Still, it is better to install
> > > this checking by default than to make users install it as
> > > a customization.
> > 
> > Huh?  I personally don't see the point of using `c-add-style' in
> > the local variables section.  My understanding is that one guy did that
> > and mentioned it here, but I have seen no evidence that anybody
> > else does.
> > It seems simpler to just set the corresponding variables one by one
> > in the local variables section.
> 
> This requires that you are allowed to change the files!!!

My point is just that since it's simpler (and doesn't require confirmation)
to set the variables one by one it's unlikely that this `c-add-tyle'
is often used in local variables sections.

So I see no reason to provide special support for it.
(contrary to the case of `put', for example).


	Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04  7:07                   ` Richard Stallman
  2002-07-04 15:28                     ` Stefan Monnier
@ 2002-07-04 19:36                     ` Kim F. Storm
  2002-07-05 22:05                       ` Richard Stallman
  1 sibling, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-07-04 19:36 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, storm, kfogel, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I'm sure crackers will be happy about it.
>     The argument passed to `c-add-style' allows you to buffer-locally
>     set any variable to any value whatsoever.  Hardly "safe" in my book.
> 
> I didn't realize that.  It will be necessary then to check
> the arguments to c-add-style.  Still, it is better to install
> this checking by default than to make users install it as
> a customization.

Whatever we do to automate this, I don't think we will ever
cover every possible hook that people would like to "accept
by default".

So I still propose that we provide a *simple* customization option
safe-local-eval-forms which is just a list that contains verbatim
copies of the eval hooks which the user considers as safe.

We could then enhance the functionality when the user is
asked to "eval local hook (y/n)" to "eval local hook (y/n/s)"
where "s" saves the hook in safe-local-eval-forms.

But just having the option would be great!

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 15:28                     ` Stefan Monnier
@ 2002-07-04 19:38                       ` Kim F. Storm
  2002-07-04 18:46                         ` Stefan Monnier
  0 siblings, 1 reply; 25+ messages in thread
From: Kim F. Storm @ 2002-07-04 19:38 UTC (permalink / raw)
  Cc: Richard Stallman, kfogel, emacs-devel

"Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:

> >     I'm sure crackers will be happy about it.
> >     The argument passed to `c-add-style' allows you to buffer-locally
> >     set any variable to any value whatsoever.  Hardly "safe" in my book.
> > 
> > I didn't realize that.  It will be necessary then to check
> > the arguments to c-add-style.  Still, it is better to install
> > this checking by default than to make users install it as
> > a customization.
> 
> Huh?  I personally don't see the point of using `c-add-style' in
> the local variables section.  My understanding is that one guy did that
> and mentioned it here, but I have seen no evidence that anybody
> else does.
> It seems simpler to just set the corresponding variables one by one
> in the local variables section.

This requires that you are allowed to change the files!!!

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 18:46                         ` Stefan Monnier
@ 2002-07-04 21:58                           ` Kim F. Storm
  2002-07-05  1:26                           ` Miles Bader
  1 sibling, 0 replies; 25+ messages in thread
From: Kim F. Storm @ 2002-07-04 21:58 UTC (permalink / raw)
  Cc: Kim F. Storm, Richard Stallman, kfogel, emacs-devel

"Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:

> > "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:
> > 
> > > >     I'm sure crackers will be happy about it.
> > > >     The argument passed to `c-add-style' allows you to buffer-locally
> > > >     set any variable to any value whatsoever.  Hardly "safe" in my book.
> > > > 
> > > > I didn't realize that.  It will be necessary then to check
> > > > the arguments to c-add-style.  Still, it is better to install
> > > > this checking by default than to make users install it as
> > > > a customization.
> > > 
> > > Huh?  I personally don't see the point of using `c-add-style' in
> > > the local variables section.  My understanding is that one guy did that
> > > and mentioned it here, but I have seen no evidence that anybody
> > > else does.
> > > It seems simpler to just set the corresponding variables one by one
> > > in the local variables section.
> > 
> > This requires that you are allowed to change the files!!!
> 
> My point is just that since it's simpler (and doesn't require confirmation)
> to set the variables one by one it's unlikely that this `c-add-tyle'
> is often used in local variables sections.
> 
> So I see no reason to provide special support for it.
> (contrary to the case of `put', for example).

I fully agree   -- provided there is a more generic hook which can be
used to accept "non-trivial" eval:s

Please note that I was not advocating the solution RMS has added; I
simply said that it would solve my specific problem.  

Now that you have pointed out that c-add-style is unsafe, I think it
really doesn't make sense to try to fix that [there are zillions of
other things that people might do in eval: which we cannot possible
configure before-hand.]


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 18:46                         ` Stefan Monnier
  2002-07-04 21:58                           ` Kim F. Storm
@ 2002-07-05  1:26                           ` Miles Bader
  2002-07-05 13:39                             ` Kai Großjohann
  1 sibling, 1 reply; 25+ messages in thread
From: Miles Bader @ 2002-07-05  1:26 UTC (permalink / raw)
  Cc: Kim F. Storm, Richard Stallman, kfogel, emacs-devel

"Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:
> My point is just that since it's simpler (and doesn't require
> confirmation) to set the variables one by one it's unlikely that this
> `c-add-style' is often used in local variables sections.

I don't do either myself, but since c-add-style can change quite a few
individual parameters, I suspect many people might _like_ to use it if
doing so was convenient.  It's also more descriptive, since it names
the style you want to use.

[Of course, I think that the nicest thing to do for this particular case
would be to have some sort of `c-style' variable you could set in the
_header_, e.g.: /* -*- c-style: k&r -*- */ or something... that would be
both convenient and safe, and it looks nice too... :-)]

-miles
-- 
The secret to creativity is knowing how to hide your sources.
  --Albert Einstein

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 15:13                     ` Stefan Monnier
@ 2002-07-05 10:48                       ` Richard Stallman
  0 siblings, 0 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-05 10:48 UTC (permalink / raw)
  Cc: storm, kfogel, emacs-devel, kifer

    >    (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)

    BTW, the docstring hasn't been updated yet.

I will do that--thanks.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-05  1:26                           ` Miles Bader
@ 2002-07-05 13:39                             ` Kai Großjohann
  0 siblings, 0 replies; 25+ messages in thread
From: Kai Großjohann @ 2002-07-05 13:39 UTC (permalink / raw)
  Cc: Stefan Monnier, Kim F. Storm, Richard Stallman, kfogel,
	emacs-devel

Miles Bader <miles@lsi.nec.co.jp> writes:

> [Of course, I think that the nicest thing to do for this particular case
> would be to have some sort of `c-style' variable you could set in the
> _header_, e.g.: /* -*- c-style: k&r -*- */ or something... that would be
> both convenient and safe, and it looks nice too... :-)]

I think that's what c-file-style is for...

kai
-- 
A large number of young women don't trust men with beards.  (BFBS Radio)

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH] allow function values for `enable-local-eval'
  2002-07-04 19:36                     ` Kim F. Storm
@ 2002-07-05 22:05                       ` Richard Stallman
  0 siblings, 0 replies; 25+ messages in thread
From: Richard Stallman @ 2002-07-05 22:05 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, storm, kfogel, emacs-devel

    So I still propose that we provide a *simple* customization option
    safe-local-eval-forms

Ok, I will do that.

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2002-07-05 22:05 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <E17NLww-0005Cn-00@floss>
2002-06-28 17:41 ` [PATCH] allow function values for `enable-local-eval' Richard Stallman
     [not found]   ` <87u1nnnqlp.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
2002-06-29  0:55     ` Kim F. Storm
2002-06-29 22:22       ` Richard Stallman
2002-06-30 21:37         ` Kim F. Storm
2002-07-01 14:10           ` Richard Stallman
2002-07-01 21:26             ` Kim F. Storm
2002-07-02 19:46               ` Richard Stallman
2002-07-02 20:11                 ` Stefan Monnier
2002-07-02 21:49                   ` Kim F. Storm
2002-07-04  7:07                   ` Richard Stallman
2002-07-04 15:28                     ` Stefan Monnier
2002-07-04 19:38                       ` Kim F. Storm
2002-07-04 18:46                         ` Stefan Monnier
2002-07-04 21:58                           ` Kim F. Storm
2002-07-05  1:26                           ` Miles Bader
2002-07-05 13:39                             ` Kai Großjohann
2002-07-04 19:36                     ` Kim F. Storm
2002-07-05 22:05                       ` Richard Stallman
2002-07-02 21:20                 ` Kim F. Storm
2002-07-04  7:06                   ` Richard Stallman
2002-07-04 15:13                     ` Stefan Monnier
2002-07-05 10:48                       ` Richard Stallman
2002-07-03  1:28             ` Kevin Ryde
2002-06-29 22:22     ` Richard Stallman
     [not found]       ` <877kkhlmgw.fsf@floss.i-did-not-set--mail-host-address--so-shoot-me>
2002-07-01 14:10         ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).