emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: table.el 1.6.1


From: Kim F. Storm
Subject: Re: table.el 1.6.1
Date: 22 Mar 2002 16:01:23 +0100
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2.50

Richard Stallman <address@hidden> writes:

>     Yes, the position-dependent menubar entry does work under 21.1.90,
>     however does not work under 21.2.50 and 20.7.
> 
> We decided to stop supporting position-dependent menubar entries
> because they did not work reliably.  Emacs does not recompute the
> menubar when point moves, not in general.  We figured that turning this
> off completely was easier than making the feature work well enough
> to be used.
> 
> However, if it really needs to work, we could make it efficient.
> Emacs could recompute the menu bar whenever the keymap or local-map
> property at point now is different from the corresponding property
> at point last time.

I think it would be simpler to do an update whenever point moves in or
out of an interval -- it may be a little wasteful, but we already have
all the necessary information to do that in set_point_both, i.e. the
following change would seem to be sufficient (not tested).

It still doesn't work for menu-bar or tool-bar binding in overlay
keymaps, but it's better than before...

Index: intervals.c
===================================================================
RCS file: /cvs/emacs/src/intervals.c,v
retrieving revision 1.113
diff -c -r1.113 intervals.c
*** intervals.c 14 Mar 2002 08:11:46 -0000      1.113
--- intervals.c 22 Mar 2002 14:58:52 -0000
***************
*** 2002,2013 ****
      fromprev = from;
  
    /* Moving within an interval.  */
!   if (to == from && toprev == fromprev && INTERVAL_VISIBLE_P (to)
!       && ! have_overlays)
      {
!       temp_set_point_both (buffer, charpos, bytepos);
!       return;
      }
  
    original_position = charpos;
  
--- 2002,2019 ----
      fromprev = from;
  
    /* Moving within an interval.  */
!   if (to == from && toprev == fromprev && INTERVAL_VISIBLE_P (to))
      {
!       if (! have_overlays)
!       {
!         temp_set_point_both (buffer, charpos, bytepos);
!         return;
!       }
      }
+   else
+     /* Refresh in case we entered or left an interval with with
+        menu-bar or tool-bar bindings in the keymap or local-map property.  */
+     update_mode_lines++;
  
    original_position = charpos;
  


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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]