unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: ken <gebser@mousecar.com>
To: Stephen Berman <stephen.berman@gmx.net>,
	 GNU Emacs List <help-gnu-emacs@gnu.org>
Subject: Re: creating a sub-menu
Date: Tue, 12 Mar 2013 03:38:09 -0400	[thread overview]
Message-ID: <513EDB61.9050100@mousecar.com> (raw)
In-Reply-To: <876213paa7.fsf@rosalinde.fritz.box>

On 03/07/2013 09:14 AM Stephen Berman wrote:
> On Tue, 05 Mar 2013 17:39:01 -0500 ken <gebser@mousecar.com> wrote:
>
>> Trying to create a sub-menu under "Edit".  Got part of the way there, but
>> still missing something.
>>
>> (define-key menu-bar-edit-menu [insert-xascii-chars]
>>    '(menu-item "Insert non-ASCII characters" xascii
>>
>>     (xascii  "\C-xaa"   "ä"        "ä` (ä)"          ("ä"))
>>     (xascii  "\C-xaA"   "Ä"        "Ä` (Ä)"          ("Ä"))
>>     (xascii  "\C-xao"   "ö"        "ö` (ö)"          ("ö"))
>>     (xascii  "\C-xaO"   "Ö"        "Ö` (Ö)"          ("Ö"))
>>     (xascii  "\C-xau"   "ü"        "ü` (ü)"          ("ü"))
>>     (xascii  "\C-xaU"   "Ü"        "Ü` (Ü)"          ("Ü"))
>>     (xascii  "\C-xas"   "ß"        "ß` (ß)"          ("ß"))
>>     (xascii  "\C-xa<"   "«"        "«` («)"          ("«"))
>>     (xascii  "\C-xa>"   "»"        "»` (»)"          ("»"))))
>>
>> Above yields error:
>> Debugger entered--Lisp error: (wrong-type-argument arrayp xascii)
>
> When I evaluate it in a recent Emacs build from the bzr trunk, I get no
> error.  But instead of adding a submenu to the Edit menu, it just adds
> the entry "Insert non-ASCII characters" (when I click on that entry, it
> tries to execute the xascii command, and since I have that, I get "Lisp
> error: (void-function xascii)").  If you want a submenu, then instead of
> a command name, the third item in your menu-item list should be a
> (variable whose value is a) keymap defining the menu items of the
> submenu, e.g., something like the following:
>
> (defun kg-insert-ä ()
>    (interactive)
>    (insert "ä"))
>
> (defun kg-insert-Ä ()
>    (interactive)
>    (insert "Ä"))
>
> (defvar xascii-menu
>    (let ((menu (make-sparse-keymap "Insert non-ASCII characters")))
>      (define-key menu [kg-insert-Ä]
>        '(menu-item "Insert `Ä'" kg-insert-Ä :keys "C-x a A"))
>      (define-key menu [kg-insert-ä]
>        '(menu-item "Insert `ä'" kg-insert-ä :keys "C-x a a"))
>      menu))
>
> (define-key menu-bar-edit-menu [xascii-menu]
>    `(menu-item "Insert non-ASCII characters" ,xascii-menu))
>
> Steve Berman

Thanks, Steve,

I tried this code and it is definitely progress over mine in that it 
displays menu items under the "Insert non-ASCII characters" heading. 
However, those non-ASCII characters (e.g., `Ä' and `ä') don't display in 
the menu under that heading properly; probably owing to the menu 
subsystem of the emacs frame not handling utf-8... or 8-bit characters 
of any kind.  Secondly, the key combos (e.g., C-xaA and C-xaa) remain 
undefined.

But you've advanced the code over what I had and I appreciate that very 
much.  The bit of explanation you provide is also helpful.  Together 
with the bits in the Elisp Manual and other sources on the web, the 
total picture on adding a sub-menu into an existing menu heading is 
starting to come together, though still I'm far from being able to 
articulate it the way I want and would need in order to be helpful to 
anyone else.  So I'll work on it more in whatever spare moments I have. 
  I'm sure I'll get it eventually.

Thanks again,
ken




  reply	other threads:[~2013-03-12  7:38 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-05 22:39 creating a sub-menu ken
2013-03-07 14:14 ` Stephen Berman
2013-03-12  7:38   ` ken [this message]
2013-03-12 22:22     ` Stephen Berman
2013-03-12 23:09       ` ken
     [not found] <mailman.21496.1362523165.855.help-gnu-emacs@gnu.org>
2013-03-06  1:42 ` Joost Kremers
2013-03-06 11:44   ` ken
     [not found]   ` <mailman.21539.1362570279.855.help-gnu-emacs@gnu.org>
2013-03-06 20:55     ` Joost Kremers

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=513EDB61.9050100@mousecar.com \
    --to=gebser@mousecar.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=stephen.berman@gmx.net \
    /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.
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).