At 09:06 PM 7/5/00 -0700, you wrote:
> To: [EMAIL PROTECTED]
> From: Paul Kinnucan <[EMAIL PROTECTED]>
>
> At 11:56 PM 7/5/00 +0100, Phillip Lord wrote:
> >
> > May I suggest the following solution to this problem. Stick
> >this at the beginning of jde.el
> >
> >(defvar jde-disable-setq-advice nil)
> >
> >(defmacro jde-setq (symbol value)
> > (let ((jde-disable-setq-advice t))
> > `(setq ,symbol ,value)))
> >
> >(defadvice setq (before jde-test-for-custom activate)
> > (if (and (string-match "jde-" (symbol-name (ad-get-arg 0)))
> > (not jde-disable-setq-advice))
> > (error "Warning. Setting jde variables without using custom is
> liable to turn Paul Kinnucan nasty")))
> >
> >
> > and then do a search and replace for every occurrence of
> >"setq" within JDE, with jde-setq.
> >
>
> Wow. This is really brilliant. You are one devious dude, Phil. You should
> not put such evil thoughts in my head. Some day I might just be irritable
> enough to do it.
>
>Paul -- I originally didn't comment on this message because:
>
> (1) There are obvious bugs in the suggested code.
> (2) Even with the obvious bugs corrected, it wouldn't work.
> (3) Even if it would work, it wouldn't be a good idea.
>
>Sorry to be blunt, I don't mean to come down on anyone, but here is
>explanation of these three points:
>
>(1) This macro is miswritten.
>
> (defmacro jde-setq (symbol value)
> (let ((jde-disable-setq-advice t))
> `(setq ,symbol ,value)))
>
>For the variable binding to have effect when the setq is executed, it
>would need to be written this way:
>
> (defmacro jde-setq (symbol value)
> `(let ((jde-disable-setq-advice t))
> (setq ,symbol ,value)))
>
>(2) Even if that is corrected, remember that setq isn't a function; it
>a special form and not suitable for advice. Even if advice worked, it
>wouldn't work portably and might break in some future version of the
>language.
>
>(3) Supposing it really were possible to advise the setq special form,
>remember that jde is not the only module in Emacs. Many of us see jde
>as only a small component of our Emacs usage. Foe example, I do most
>of my programming in Common Lisp, and am composing this mail message
>in Emacs. To laden every setq in all the code I run, or even in the
>code I happen to compile (or run interpreted) within a session, would
>simply not be acceptable.
>
>Even if you don't agree with premise (3), you shouldn't violate it
>because it might cause lots of Emacs users like me not to load jde
>into their environments.
>
Hi Steve,
I completely and wholeheartedly agree with your point 3. I took Phil's
suggestion as a Swiftean "modest proposal" and my response was intended to
be equally lighthearted. Please rest assured that I would never do as Phil
suggested even if it were possible, which as you point out it is not. I am
sorry for causing you needless concern. As always, I appreciate your input
and advice.
Regards,
Paul