unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* easymenu.el
@ 2004-11-03 17:08 B. Anyos
  2004-11-03 17:33 ` easymenu.el David Kastrup
  0 siblings, 1 reply; 17+ messages in thread
From: B. Anyos @ 2004-11-03 17:08 UTC (permalink / raw)


Hi,

Latest changes to easymenu.el broke loading of ECB v2.27 (Emacs Code Browser)
I don't know how many apps out there that became incompatible with the change.

The logic in easy-menu-intern has changed:
   -> from downcase the entire string to flip the starting letter of each word.

Was this intentional so apps should adapt their code ?

Cheers,
  Bela

ps.: changing the corresponding item in ECB solved the problem...

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

* Re: easymenu.el
  2004-11-03 17:08 easymenu.el B. Anyos
@ 2004-11-03 17:33 ` David Kastrup
  2004-11-03 18:47   ` easymenu.el Stefan
  0 siblings, 1 reply; 17+ messages in thread
From: David Kastrup @ 2004-11-03 17:33 UTC (permalink / raw)
  Cc: emacs-devel

"B. Anyos" <banyos@freemail.hu> writes:

> Latest changes to easymenu.el broke loading of ECB v2.27 (Emacs Code
> Browser) I don't know how many apps out there that became
> incompatible with the change.
>
> The logic in easy-menu-intern has changed:
>    -> from downcase the entire string to flip the starting letter of
>       each word.
>
> Was this intentional so apps should adapt their code ?
>
> ps.: changing the corresponding item in ECB solved the problem...

Why is there a corresponding item?  Why doesn't ECB use easy-menu for
accessing menus created with easy-menu?

I really dislike Richard's change (for aesthetical reasons: I don't
like menu entries Gamma and gamma to be swapped), but it should not
break packages: the internal symbols from easymenu should either not
be used externally, or there should be a proper interface for
accessing them.

It appears we are having a problem here independent from that Richard
tried to address.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: easymenu.el
  2004-11-03 17:33 ` easymenu.el David Kastrup
@ 2004-11-03 18:47   ` Stefan
  2004-11-03 19:46     ` easymenu.el Peter Heslin
  0 siblings, 1 reply; 17+ messages in thread
From: Stefan @ 2004-11-03 18:47 UTC (permalink / raw)
  Cc: B. Anyos, emacs-devel

I really think we should simply revert both changes to easy-menu-intern and
stop downcasing/upcasing anything: revert back to the 21.3 behavior.


        Stefan

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

* Re: easymenu.el
  2004-11-03 18:47   ` easymenu.el Stefan
@ 2004-11-03 19:46     ` Peter Heslin
  2004-11-06  5:22       ` easymenu.el Richard Stallman
  2004-11-06  5:22       ` easymenu.el Richard Stallman
  0 siblings, 2 replies; 17+ messages in thread
From: Peter Heslin @ 2004-11-03 19:46 UTC (permalink / raw)


On 2004-11-03, Stefan <monnier@iro.umontreal.ca> wrote:
>  I really think we should simply revert both changes to easy-menu-intern and
>  stop downcasing/upcasing anything: revert back to the 21.3 behavior.

FWIW, both printing.el (part of Emacs) and color-theme.el (not part of
Emacs, but widely used) now give menu-related errors on loading. 

Peter

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

* Re: easymenu.el
  2004-11-03 19:46     ` easymenu.el Peter Heslin
@ 2004-11-06  5:22       ` Richard Stallman
  2004-11-06 10:07         ` easymenu.el Stefan
  2004-11-06  5:22       ` easymenu.el Richard Stallman
  1 sibling, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2004-11-06  5:22 UTC (permalink / raw)
  Cc: emacs-devel

    >  I really think we should simply revert both changes to easy-menu-intern and
    >  stop downcasing/upcasing anything: revert back to the 21.3 behavior.

The reason I changed easy-menu-intern to alter the name is so that
easy-menu would work with the standard menu items.  For instance, the
Options menu uses `options' as the symbol.  I changed easy-menu-intern
so it would convert "Options" into `options'.

If we take out this change, then either (1) we have to change the
symbols used in menu-bar.el, so that the Options menu uses `Options' as the
symbol, or (2) easy-menu will not work with those menus any more.

If we do (1), then programs that call define-key to set up menu items
in these menus will break.  However, I don't know how many of those
programs there are.

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

* Re: easymenu.el
  2004-11-03 19:46     ` easymenu.el Peter Heslin
  2004-11-06  5:22       ` easymenu.el Richard Stallman
@ 2004-11-06  5:22       ` Richard Stallman
  2004-11-06 17:37         ` easymenu.el Vinicius Jose Latorre
  1 sibling, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2004-11-06  5:22 UTC (permalink / raw)
  Cc: emacs-devel

    FWIW, both printing.el (part of Emacs) and color-theme.el (not part of
    Emacs, but widely used) now give menu-related errors on loading. 

In the case of printing.el, the problem seems to be that it doesn't
intern the symbols it constructs.

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

* Re: easymenu.el
  2004-11-06  5:22       ` easymenu.el Richard Stallman
@ 2004-11-06 10:07         ` Stefan
  2004-11-08 14:33           ` easymenu.el David Kastrup
  2004-11-09 11:14           ` easymenu.el Richard Stallman
  0 siblings, 2 replies; 17+ messages in thread
From: Stefan @ 2004-11-06 10:07 UTC (permalink / raw)
  Cc: Peter Heslin, emacs-devel

> The reason I changed easy-menu-intern to alter the name is so that
> easy-menu would work with the standard menu items.  For instance, the
> Options menu uses `options' as the symbol.  I changed easy-menu-intern
> so it would convert "Options" into `options'.

> If we take out this change, then either (1) we have to change the
> symbols used in menu-bar.el, so that the Options menu uses `Options' as the
> symbol, or (2) easy-menu will not work with those menus any more.

Option (2) cannot really be true, because those things have never worked
with easy-menu (at least not in any released version of Emacs).

> If we do (1), then programs that call define-key to set up menu items
> in these menus will break.  However, I don't know how many of those
> programs there are.

Since this downcase-change is recent, only recently changed programs can
be affected and since we'd be getting back to Emacs-21.3 behavior, those
program would fail under Emacs-21.3 as well.

BTW, I've just installed a patch to easymenu that makes it look for
menu-item *names* when looking up keymaps, so you should now be able to say
(easy-menu-add-item nil '("File") ["foo" bar]) to add an entry "foo" in the
"File" menu even though that menu's key name is `files'.  As can be guessed
by the different spelling, this now works regardless of the actual
definition of easy-menu-intern, so I (re-)propose the additional patch below,


        Stefan


--- easymenu.el	06 Nov 2004 04:58:18 -0500	1.67
+++ easymenu.el	06 Nov 2004 05:06:15 -0500	
@@ -42,25 +42,7 @@
   :version "20.3")
 
 (defsubst easy-menu-intern (s)
-  (if (stringp s)
-      (let ((copy (copy-sequence s))
-	    (pos 0)
-	    found)
-	;; For each letter that starts a word, flip its case.
-	;; This way, the usual convention for menu strings (capitalized)
-	;; corresponds to the usual convention for menu item event types
-	;; (all lower case).  It's a 1-1 mapping so causes no conflicts.
-	(while (setq found (string-match "\\<\\sw" copy pos))
-	  (setq pos (match-end 0))
-	  (unless (= (upcase (aref copy found))
-		     (downcase (aref copy found)))
-	    (aset copy found
-		  (if (= (upcase (aref copy found))
-			 (aref copy found))
-		      (downcase (aref copy found))
-		    (upcase (aref copy found))))))
-	 (intern copy))
-    s))
+  (if (stringp s) (intern s) s))
 
 ;;;###autoload
 (put 'easy-menu-define 'lisp-indent-function 'defun)
@@ -437,8 +419,7 @@
 		  (error nil))		;`item' might not be a proper list.
 		;; Also check the string version of the symbol name,
 		;; for backwards compatibility.
-		(eq (car-safe item) (intern name))
-		(eq (car-safe item) (easy-menu-intern name)))))))
+		(eq (car-safe item) (intern name)))))))
 
 (defun easy-menu-always-true-p (x)
   "Return true if form X never evaluates to nil."

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

* Re: easymenu.el
  2004-11-06  5:22       ` easymenu.el Richard Stallman
@ 2004-11-06 17:37         ` Vinicius Jose Latorre
  0 siblings, 0 replies; 17+ messages in thread
From: Vinicius Jose Latorre @ 2004-11-06 17:37 UTC (permalink / raw)
  Cc: Peter Heslin, emacs-devel

 >     FWIW, both printing.el (part of Emacs) and color-theme.el (not 
part of
 >     Emacs, but widely used) now give menu-related errors on loading.
 >
 > In the case of printing.el, the problem seems to be that it doesn't
 > intern the symbols it constructs.

Well, only part of the problem, as RMS pointed in a private email, the 
problem
is in part related with pr-get-symbol.

Changing pr-get-symbol to:

  (defun pr-get-symbol (name)
    (easy-menu-intern name))

It's possible to bootstrap & install Emacs, but an error occurs when 
starting
Emacs with (require 'printing) in ~/.emacs.

The problem is related with easy-menu-get-map, that it's used by
easy-menu-add-item.  And easy-menu-add-item is used by printing.el to change
File menu options.

Now, easy-menu-get-map returns:

   (easy-menu-get-map nil '("files"))
   ==> (keymap "files")

And before easymenu.el changing, easy-menu-get-map returned:

   (easy-menu-get-map nil '("files"))
   ==> (keymap (open-file menu-item Open File... ..) .....  File)


Vinicius

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

* Re: easymenu.el
  2004-11-06 10:07         ` easymenu.el Stefan
@ 2004-11-08 14:33           ` David Kastrup
  2004-11-09 11:14             ` easymenu.el Richard Stallman
  2004-11-09 11:14           ` easymenu.el Richard Stallman
  1 sibling, 1 reply; 17+ messages in thread
From: David Kastrup @ 2004-11-08 14:33 UTC (permalink / raw)
  Cc: Peter Heslin, rms, emacs-devel

Stefan <monnier@iro.umontreal.ca> writes:

> BTW, I've just installed a patch to easymenu that makes it look for
> menu-item *names* when looking up keymaps, so you should now be able
> to say (easy-menu-add-item nil '("File") ["foo" bar]) to add an
> entry "foo" in the "File" menu even though that menu's key name is
> `files'.  As can be guessed by the different spelling, this now
> works regardless of the actual definition of easy-menu-intern, so I
> (re-)propose the additional patch below,

Two notes:

C-h k <menuitem>

seems to exhibit the symbol case, as does

C-h w whatever RET

I am not convinced this should be undesirable, however.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: easymenu.el
  2004-11-06 10:07         ` easymenu.el Stefan
  2004-11-08 14:33           ` easymenu.el David Kastrup
@ 2004-11-09 11:14           ` Richard Stallman
  2004-11-09 11:21             ` easymenu.el David Kastrup
  1 sibling, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2004-11-09 11:14 UTC (permalink / raw)
  Cc: public, emacs-devel

    Since this downcase-change is recent, only recently changed programs can
    be affected and since we'd be getting back to Emacs-21.3 behavior, those
    program would fail under Emacs-21.3 as well.

Ok, I am convinced.  However, this means we should change all the
code in Emacs that defines menu bar menus the old-fashioned way,
to be compatible with the reverted easymenu.el.

    BTW, I've just installed a patch to easymenu that makes it look for
    menu-item *names* when looking up keymaps, so you should now be able to say
    (easy-menu-add-item nil '("File") ["foo" bar]) to add an entry "foo" in the
    "File" menu even though that menu's key name is `files'.  As can be guessed
    by the different spelling, this now works regardless of the actual
    definition of easy-menu-intern, so I (re-)propose the additional patch below,

That's clever.  I guess the problem is solved now, and we don't
have to change other code.

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

* Re: easymenu.el
  2004-11-08 14:33           ` easymenu.el David Kastrup
@ 2004-11-09 11:14             ` Richard Stallman
  2004-11-09 11:18               ` easymenu.el David Kastrup
  0 siblings, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2004-11-09 11:14 UTC (permalink / raw)
  Cc: public, monnier, emacs-devel

    C-h k <menuitem>

    seems to exhibit the symbol case, as does

    C-h w whatever RET

    I am not convinced this should be undesirable, however.

Since these are meant to show the sequence of event types,
I think they had better show them as they are.

In what way is this a problem?

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

* Re: easymenu.el
  2004-11-09 11:14             ` easymenu.el Richard Stallman
@ 2004-11-09 11:18               ` David Kastrup
  2004-11-09 21:30                 ` easymenu.el Richard Stallman
  0 siblings, 1 reply; 17+ messages in thread
From: David Kastrup @ 2004-11-09 11:18 UTC (permalink / raw)
  Cc: public, monnier, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     C-h k <menuitem>
>
>     seems to exhibit the symbol case, as does
>
>     C-h w whatever RET
>
>     I am not convinced this should be undesirable, however.
>
> Since these are meant to show the sequence of event types,
> I think they had better show them as they are.

Yes.

> In what way is this a problem?

Well, obviously the resulting look _was_ a problem for somebody, or we
would not have got the case-folding code in Emacs-21.3 in the first
place.  Correct me if I am mistaken.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: easymenu.el
  2004-11-09 11:14           ` easymenu.el Richard Stallman
@ 2004-11-09 11:21             ` David Kastrup
  2004-11-09 14:26               ` easymenu.el Stefan
  0 siblings, 1 reply; 17+ messages in thread
From: David Kastrup @ 2004-11-09 11:21 UTC (permalink / raw)
  Cc: public, Stefan, emacs-devel

Richard Stallman <rms@gnu.org> writes:

[Stefan:]

>     BTW, I've just installed a patch to easymenu that makes it look
>     for menu-item *names* when looking up keymaps, so you should now
>     be able to say (easy-menu-add-item nil '("File") ["foo" bar]) to
>     add an entry "foo" in the "File" menu even though that menu's
>     key name is `files'.  As can be guessed by the different
>     spelling, this now works regardless of the actual definition of
>     easy-menu-intern, so I (re-)propose the additional patch below,
>
> That's clever.

Actually, I'd say it's natural.  So I can't help suspecting that the
original design was there for a purpose.

> I guess the problem is solved now, and we don't have to change other
> code.

Is there any serious performance degradation to be expected, Stefan?
I think there was a time when calling menus the first time was rather
expensive.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: easymenu.el
  2004-11-09 11:21             ` easymenu.el David Kastrup
@ 2004-11-09 14:26               ` Stefan
  0 siblings, 0 replies; 17+ messages in thread
From: Stefan @ 2004-11-09 14:26 UTC (permalink / raw)
  Cc: public, rms, emacs-devel

> Is there any serious performance degradation to be expected, Stefan?
> I think there was a time when calling menus the first time was rather
> expensive.

The change should only affect calls to easy-menu-add-item, which are rare
and not repeated, so the impact should be minimal.


        Stefan

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

* Re: easymenu.el
  2004-11-09 11:18               ` easymenu.el David Kastrup
@ 2004-11-09 21:30                 ` Richard Stallman
  2004-11-09 22:11                   ` easymenu.el David Kastrup
  0 siblings, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2004-11-09 21:30 UTC (permalink / raw)
  Cc: public, monnier, emacs-devel

    Well, obviously the resulting look _was_ a problem for somebody, or we
    would not have got the case-folding code in Emacs-21.3 in the first
    place.  Correct me if I am mistaken.

The feature was introduced for compatibility, not for mere "looks".

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

* Re: easymenu.el
  2004-11-09 21:30                 ` easymenu.el Richard Stallman
@ 2004-11-09 22:11                   ` David Kastrup
  2004-11-11  3:15                     ` easymenu.el Richard Stallman
  0 siblings, 1 reply; 17+ messages in thread
From: David Kastrup @ 2004-11-09 22:11 UTC (permalink / raw)
  Cc: public, monnier, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Well, obviously the resulting look _was_ a problem for somebody,
>     or we would not have got the case-folding code in Emacs-21.3 in
>     the first place.  Correct me if I am mistaken.
>
> The feature was introduced for compatibility, not for mere "looks".

Compatibility to what?  What did it fix that was not working before?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: easymenu.el
  2004-11-09 22:11                   ` easymenu.el David Kastrup
@ 2004-11-11  3:15                     ` Richard Stallman
  0 siblings, 0 replies; 17+ messages in thread
From: Richard Stallman @ 2004-11-11  3:15 UTC (permalink / raw)
  Cc: public, monnier, emacs-devel

    Compatibility to what?  What did it fix that was not working before?

Use of easymenu to change the standard menu-bar menus.

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

end of thread, other threads:[~2004-11-11  3:15 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-03 17:08 easymenu.el B. Anyos
2004-11-03 17:33 ` easymenu.el David Kastrup
2004-11-03 18:47   ` easymenu.el Stefan
2004-11-03 19:46     ` easymenu.el Peter Heslin
2004-11-06  5:22       ` easymenu.el Richard Stallman
2004-11-06 10:07         ` easymenu.el Stefan
2004-11-08 14:33           ` easymenu.el David Kastrup
2004-11-09 11:14             ` easymenu.el Richard Stallman
2004-11-09 11:18               ` easymenu.el David Kastrup
2004-11-09 21:30                 ` easymenu.el Richard Stallman
2004-11-09 22:11                   ` easymenu.el David Kastrup
2004-11-11  3:15                     ` easymenu.el Richard Stallman
2004-11-09 11:14           ` easymenu.el Richard Stallman
2004-11-09 11:21             ` easymenu.el David Kastrup
2004-11-09 14:26               ` easymenu.el Stefan
2004-11-06  5:22       ` easymenu.el Richard Stallman
2004-11-06 17:37         ` easymenu.el Vinicius Jose Latorre

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).