unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu>
Cc: monnier+gnu/emacs@rum.cs.yale.edu, rms@gnu.org,
	miles@lsi.nec.co.jp, Kai.Grossjohann@CS.Uni-Dortmund.DE,
	emacs-devel@gnu.org
Subject: Re: comint-carriage-motion causes severe problems.
Date: Thu, 04 Jul 2002 11:43:14 -0400	[thread overview]
Message-ID: <200207041543.g64FhEb29778@rum.cs.yale.edu> (raw)
In-Reply-To: 200207040118.UAA22469@eel.dms.auburn.edu

> However, I now believe that there is an even better solution which not
> only removes the arbitrariness in the above example, but moreover
> removes any danger of breaking existing code, which otherwise seems
> to be a very real danger, and which also adds useful flexibility.
> 
> Indeed, I now start to get really weary about breaking existing code
> where people rely on the fact that remove-hook "does no harm anyway"
> if bar is not in the local value of foo and hence it does not matter
> whether
> 
> (remove-hook 'foo 'bar 'local) 
> 
> is executed several times if a file is accidentally loaded more than
> once.

This fear is unfounded.  I have been using my hacked Emacs with this
feature for at least a year with no problem and I have grepped
through the code to try and see what kind of behavior is expected,
and the fact is that hooks are added either only globally or only
locally.  And since my code only adds a (not . BAR) if we're removing
it locally and it is present globally, that means that my code is
almost never activated.  I hactually have a (debug) call in my code
to see when a (not . BAR) happens, and the very few times it has
happened have all been right.

> Depending on peoples' style, current code may contain third non-nil
> arguments of t or 'local, as you use, but I can not possibly see how
> people would have used a third argument 'override anywhere.  (Unless
> they were actually anticipating your code.)  Hence, all worries about
> breaking existing code would be gone, the worry about arbitrariness in
> cases of the type you describe is gone, the worry about bad things
> happening if files get accidentally loaded more than once is totally
> gone and we have, moreover, better flexibility.

I'm not sure what you mean by "better flexibility".  My "arbitrary"
choice is not so arbitrary in that it tries to maintain compatibility
and it also has the advantage of still allowing the other behavior.
I.e. if you really want to make sure that the hook function will not
be run, like your `override' argument would do, you can just do

	(remove 'foo 'bar 'local)
	(remove 'foo 'bar 'local)

where the first call will remove any local ocurrence and the second
will override any remaining global ocurrence.

So I'm not sure if we really get more flexibility and if the
added complexity is warranted.  I see the current behavior of
(remove 'foo 'bar 'local) as a bug and my patch as a bug-fix.
This impression is partly based on the (very few) cases where the
code was triggered to insert (not . BAR).


	Stefan

  reply	other threads:[~2002-07-04 15:43 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-02  0:35 comint-carriage-motion causes severe problems Luc Teirlinck
2002-07-02  1:32 ` Miles Bader
2002-07-02  8:33   ` Kai Großjohann
2002-07-02  8:46     ` Miles Bader
2002-07-02 15:34       ` Stefan Monnier
2002-07-02 16:18         ` Luc Teirlinck
2002-07-03 20:57           ` Richard Stallman
2002-07-03 21:11             ` Stefan Monnier
2002-07-04  1:18               ` Luc Teirlinck
2002-07-04 15:43                 ` Stefan Monnier [this message]
2002-07-04 16:56                   ` Luc Teirlinck
2002-07-04 17:04                     ` Stefan Monnier
2002-07-04 17:18                       ` Kai Großjohann
2002-07-04 17:31                       ` Luc Teirlinck
2002-07-04 18:21                       ` Miles Bader
2002-07-04  1:38               ` Luc Teirlinck
2002-07-04  3:49               ` Luc Teirlinck
     [not found]               ` <200207040337.WAA22499@eel.dms.auburn.edu>
     [not found]                 ` <200207041531.g64FVRp29714@rum.cs.yale.edu>
2002-07-04 16:07                   ` Luc Teirlinck
2002-07-04 18:24               ` Richard Stallman
2002-07-04 20:19                 ` Luc Teirlinck
2002-07-05 22:07                   ` Richard Stallman
2002-07-05  0:47                 ` Luc Teirlinck
2002-07-05 22:07                   ` Richard Stallman
2002-08-07  1:16                 ` Luc Teirlinck
2002-08-07 20:58                   ` Richard Stallman
2002-08-07 22:19                     ` Luc Teirlinck
2002-08-07 22:27                       ` Luc Teirlinck
2002-08-09  2:47                       ` Richard Stallman
2002-08-18  2:39                     ` Luc Teirlinck
2002-08-18  3:01                       ` Luc Teirlinck
2002-08-18  3:59                         ` Luc Teirlinck
2002-08-19  5:04                       ` Miles Bader
2002-07-02 17:08         ` Luc Teirlinck
2002-07-02 19:45   ` Richard Stallman
2002-07-03  0:02     ` Miles Bader
2002-07-03  0:06     ` Miles Bader
2002-07-04  7:07       ` Richard Stallman
2002-07-03  1:51     ` Luc Teirlinck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200207041543.g64FhEb29778@rum.cs.yale.edu \
    --to=monnier+gnu/emacs@rum.cs.yale.edu \
    --cc=Kai.Grossjohann@CS.Uni-Dortmund.DE \
    --cc=emacs-devel@gnu.org \
    --cc=miles@lsi.nec.co.jp \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).