[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: elisp mouse programming problems
From: |
Alex Schroeder |
Subject: |
Re: elisp mouse programming problems |
Date: |
Wed, 20 Aug 2003 12:34:38 +0200 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux) |
"David Vanderschel" <DJV1@Austin.RR.com> writes:
> I am having a problem with overriding the global map
> for some mouse events. For example, I can bind
> C-mouse-1 in a major mode mode-map for a major mode I
> created. Yet when that mode is in effect, such a
> mouse click still goes to mouse-select-buffer (as it
> is correctly bound globally) and never reaches the
> function I bound to the key for the mode. I do not
> have this problem with all mouse events, and I cannot
> figure out what is going wrong. I am consistently
> successful in overriding the global binding of
> ordinary key sequences (as opposed to mouse events) in
> this manner. Extra details appended.
One mouse click will generate not only the mouse click event, but also
a button-down event. And if somebody binds a command to the
button-down event, then the command bound to the click event is never
called.
See (elisp)Button-Down Events.
> Also, in testing such things, I am confused by the
> fact that I cannot seem to redefine the bindings of a
> mode-map by simply setting it to nil and rerunning the
> (modified) code which builds the mode-map. The old
> bindings seem to remain in effect. If I kill emacs
> and restart it, the changed bindings do take effect.
> Not even killing the buffer with the new mode,
> reloading the file which defines the program, and
> rerunning the program which creates the special mode
> buffer helps. What is it that I do not understand
> here?
A keymap is a list that starts with the symbol `keymap'. Only the cdr
of that list is used by Emacs when looking up keys. When you just
change the value of a mode-map, the old cdr will still be used.
(Maybe you need to draw box diagrams to see this.)
The correct solution depends on where the bindings are: Global map?
Local map? Overlays? Text properties?
Alex.
--
http://www.emacswiki.org/alex/
There is no substitute for experience.
- Re: elisp mouse programming problems,
Alex Schroeder <=