bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#7788: 23.2.91; tmm-menubar command broken: Wrong type argument: stri


From: Teemu Likonen
Subject: bug#7788: 23.2.91; tmm-menubar command broken: Wrong type argument: stringp, nil
Date: Wed, 05 Jan 2011 15:56:46 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2.91 (gnu/linux)

Sometimes tmm-menubar command doesn't work because it stops with error

    Wrong type argument: stringp, nil

See the backtrace below.

I don't know yet how to reproduce the bug after "emacs -Q" but I see the
issue quite often in my system. The bug happens in function
tmm-get-keymap which is in file lisp/tmm.el. There is string-width
function which gets nil as its argument. The bug was introduced by this
change:


    commit b38a6aa1f48496e095e99742d009c621bf56b394
    Author: Stefan Monnier <monnier@iro.umontreal.ca>
    Date:   2010-05-11 16:07:12 -0400

        Backport from trunk: compute shortcuts in tmm.el.
        * tmm.el (tmm-prompt): Don't try to precompute bindings.
        (tmm-get-keymap): Compute shortcuts since the cache is empty.


In a running Emacs session, if I evaluate (M-x eval-buffer) an earlier
version of lisp/tmm.el file the bug disappears. Evaluating lisp/tmm.el
again after that commit and the bug appears again.



--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-width(nil)
  (- colwidth (string-width str) (string-width binding))
  (max 2 (- colwidth (string-width str) (string-width binding)))
  (make-string (max 2 (- colwidth ... ...)) 32)
  (concat str (make-string (max 2 ...) 32) binding)
  (setq str (concat str (make-string ... 32) binding))
  (let ((colwidth ...)) (setq str (concat str ... binding)))
  (progn (setq binding (key-description binding)) (let (...) (setq str ...)))
  (if binding (progn (setq binding ...) (let ... ...)))
  (when binding (setq binding (key-description binding)) (let (...) (setq str 
...)))
  (let ((binding ...)) (when binding (setq binding ...) (let ... ...)))
  (if (eq km (quote ignore)) nil (let (...) (when binding ... ...)))
  (unless (eq km (quote ignore)) (let (...) (when binding ... ...)))
  (if (assoc event tmm-table-undef) nil (cond (... ...) (... ... ...) (... ... 
...) (... ... ... ... ... ... ... ... ... ... ...) (... ... ...) (... ...)) 
(unless (eq km ...) (let ... ...)))
  (unless (assoc event tmm-table-undef) (cond (... ...) (... ... ...) (... ... 
...) (... ... ... ... ... ... ... ... ... ... ...) (... ... ...) (... ...)) 
(unless (eq km ...) (let ... ...)))
  (if (eq elt (quote undefined)) (setq tmm-table-undef (cons ... 
tmm-table-undef)) (unless (assoc event tmm-table-undef) (cond ... ... ... ... 
... ...) (unless ... ...)) (and km (stringp km) (setq str km)) (when (and km 
... ...) (setq km ...)) (and km str (or ... ...)))
  (let (km str plist filter visible enable (event ...)) (setq elt (cdr elt)) 
(if (eq elt ...) (setq tmm-table-undef ...) (unless ... ... ...) (and km ... 
...) (when ... ...) (and km str ...)))
  tmm-get-keymap(nil nil)
  (cond ((listp elt) (tmm-get-keymap elt not-menu)) ((vectorp elt) (dotimes ... 
...)))
  (if (stringp elt) (setq gl-str elt) (cond (... ...) (... ...)))
  (lambda (elt) (if (stringp elt) (setq gl-str elt) (cond ... ...)))(nil)
  mapc((lambda (elt) (if (stringp elt) (setq gl-str elt) (cond ... ...))) 
(keymap (file "File" keymap (new-file menu-item "Visit New File..." find-file 
:enable ... :help "Specify a new file's name, to edit the file") (open-file 
menu-item "Open File..." menu-find-file-existing :enable ... :help "Read an 
existing file into an Emacs buffer") (dired menu-item "Open Directory..." dired 
:enable ... :help "Read a directory, to operate on its files") (insert-file 
menu-item "Insert File..." insert-file :enable ... :help "Insert another file 
into current buffer") (kill-buffer menu-item "Close" kill-this-buffer :enable 
... :help "Discard (kill) current buffer") (separator-save "--") (save-buffer 
menu-item "Save" save-buffer :enable ... :help "Save current buffer to its 
file") (write-file menu-item "Save As..." write-file :enable ... :help "Write 
current buffer to another file") (revert-buffer menu-item "Revert Buffer" 
revert-buffer :enable ... :help "Re-read current buffer from its file") 
(recover-session menu-item "Recover Crashed Session" recover-session :enable 
... :help "Recover edits from a crashed session") (separator-print "--") 
(print-buffer menu-item "Print Buffer" print-buffer :enable ... :help "Print 
current buffer with page headings") (print-region menu-item "Print Region" 
print-region :enable mark-active :help "Print region between mark and current 
position") (ps-print-buffer-faces menu-item "Postscript Print Buffer" 
ps-print-buffer-with-faces :enable ... :help "Pretty-print current buffer to 
PostScript printer") (ps-print-region-faces menu-item "Postscript Print Region" 
ps-print-region-with-faces :enable mark-active :help "Pretty-print marked 
region to PostScript printer") (ps-print-buffer menu-item "Postscript Print 
Buffer (B+W)" ps-print-buffer :enable ... :help "Pretty-print current buffer in 
black and white to PostScript printer") (ps-print-region menu-item "Postscript 
Print Region (B+W)" ps-print-region :enable mark-active :help "Pretty-print 
marked region in black and white to PostScript printer") (separator-window 
"--") (split-window menu-item "Split Window" split-window-vertically :enable 
... :help "Split selected window in two windows") (one-window menu-item "Remove 
Splits" delete-other-windows :enable ... :help "Selected window grows to fill 
the whole frame") (make-frame menu-item "New Frame" make-frame-command :visible 
... :help "Open a new frame") (make-frame-on-display menu-item "New Frame on 
Display..." make-frame-on-display :visible ... :help "Open a new frame on 
another display") (delete-this-frame menu-item "Delete Frame" delete-frame 
:visible ... :enable ... :help "Delete currently selected frame") 
(separator-exit "--") (exit-emacs menu-item "Quit" save-buffers-kill-terminal 
:help "Save unsaved buffers, then exit") "File") (edit "Edit" keymap (undo 
menu-item "Undo" undo :enable ... :help "Undo last operation") (cut "Cut" 
"Delete text in region and copy it to the clipboard" . clipboard-kill-region) 
(copy "Copy" "Copy text in region to the clipboard" . clipboard-kill-ring-save) 
(paste menu-item "Paste" x-clipboard-yank :enable ... :help "Paste (yank) text 
most recently cut/copied") (paste-from-menu menu-item "Paste from Kill Menu" 
yank-menu :enable ... :help "Choose a string from the kill ring and paste it") 
(clear menu-item "Clear" delete-region :enable ... :help "Delete the text in 
region between mark and current position") (mark-whole-buffer menu-item "Select 
All" mark-whole-buffer :help "Mark the whole buffer for a subsequent cut/copy") 
(separator-search "--") (search menu-item "Search" ...) (replace menu-item 
"Replace" ...) (goto menu-item "Go To" ...) (bookmark menu-item "Bookmarks" 
menu-bar-bookmark-map) (separator-bookmark "--") (fill menu-item "Fill" 
fill-region :enable ... :help "Fill text in region to fit between left and 
right margin") (props menu-item "Text Properties" facemenu-menu) "Edit") 
(options "Options" keymap (transient-mark-mode menu-item "Active Region 
Highlighting" transient-mark-mode :enable ... :help "Make text in active region 
stand out in color (Transient Mark mode)" :button ...) (highlight-paren-mode 
menu-item "Paren Match Highlighting" show-paren-mode :help "Highlight 
matching/mismatched parentheses at cursor (Show Paren mode)" :button ...) 
(highlight-separator "--") (line-wrapping menu-item "Line Wrapping in this 
Buffer" ...) (auto-fill-mode menu-item "Auto Fill in Text Modes" 
menu-bar-text-mode-auto-fill :help "Automatically fill text while typing (Auto 
Fill mode)" :button ...) (case-fold-search menu-item "Case-Insensitive Search" 
toggle-case-fold-search :help "Ignore letter-case in search commands" :button 
...) (cua-emulation-mode menu-item "Shift movement mark region (CUA)" cua-mode 
:visible ... :help "Use shifted movement keys to set and extend the region." 
:button ...) (cua-mode menu-item "C-x/C-c/C-v Cut and Paste (CUA)" cua-mode 
:visible ... :help "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste" :button 
...) (edit-options-separator "--") (uniquify menu-item "Use Directory Names in 
Buffer Names" toggle-uniquify-buffer-names :help "Uniquify buffer names by 
adding parent directory names" :button ...) (save-place menu-item "Save Place 
in Files between Sessions" toggle-save-place-globally :help "Visit files of 
previous session when restarting Emacs" :button ...) (cursor-separator "--") 
(blink-cursor-mode menu-item "Blinking Cursor" blink-cursor-mode :help "Whether 
the cursor blinks (Blink Cursor mode)" :button ...) (debugger-separator "--") 
(debug-on-error menu-item "Enter Debugger on Error" toggle-debug-on-error :help 
"Enter Lisp debugger when an error is signaled" :button ...) (debug-on-quit 
menu-item "Enter Debugger on Quit/C-g" toggle-debug-on-quit :help "Enter Lisp 
debugger when C-g is pressed" :button ...) (mule-separator "--") (mule 
menu-item "Mule (Multilingual Environment)" ...) (showhide-separator "--") 
(showhide menu-item "Show/Hide" ...) (menu-set-font menu-item "Set Default 
Font..." menu-set-font :visible ... :help "Select a default font") 
(custom-separator "--") (save menu-item "Save Options" menu-bar-options-save 
:help "Save options set from the menu above") (customize menu-item "Customize 
Emacs" ...) "Options" (package menu-item "Manage Packages" 
package-list-packages :help "Install or uninstall additional Emacs packages")) 
(buffer "Buffers" keymap "Select Buffer" [... ... ... ... ... ... ... ... ... 
...] (frames-separator "--") (frames menu-item "Frames" ...) (command-separator 
"--") (next-buffer menu-item "Next Buffer" next-buffer :help "Switch to the 
\"next\" buffer in a cyclic order") (previous-buffer menu-item "Previous 
Buffer" previous-buffer :help "Switch to the \"previous\" buffer in a cyclic 
order") (select-named-buffer menu-item "Select Named Buffer..." 
switch-to-buffer :help "Prompt for a buffer name, and select that buffer in the 
current window") (list-all-buffers menu-item "List All Buffers" list-buffers 
:help "Pop up a window listing all Emacs buffers")) (tools "Tools" keymap (grep 
menu-item "Search Files (Grep)..." grep :help "Search files for strings or 
regexps (with Grep)") (compile menu-item "Compile..." compile :help "Invoke 
compiler or Make, view compilation errors") (shell menu-item "Shell Command..." 
shell-command :help "Invoke a shell command and catch its output") 
(shell-on-region menu-item "Shell Command on Region..." shell-command-on-region 
:enable mark-active :help "Pass marked region to a shell command") (gdb 
menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with 
GDB") (ede menu-item "Project support (EDE)" global-ede-mode :help "Toggle the 
Emacs Development Environment (Global EDE mode)" :button ...) (semantic 
menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle 
automatic parsing in source code buffers (Semantic mode)" :button ...) 
(separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) 
(separator-spell "--") (compare menu-item "Compare (Ediff)" 
menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) 
(epatch menu-item "Apply Patch" menu-bar-epatch-menu) (separator-compare "--") 
(vc menu-item "Version Control" vc-menu-map :filter vc-menu-map-filter) 
(pcl-cvs menu-item "PCL-CVS" cvs-global-menu) (separator-vc "--") (gnus 
menu-item "Read Net News (Gnus)" gnus :help "Read network news groups") (rmail 
menu-item ... menu-bar-read-mail :visible ... :help "Read your mail and reply 
to it") (compose-mail menu-item ... compose-mail :visible ... :help "Send a 
mail message") (directory-search menu-item "Directory Search" eudc-tools-menu) 
(separator-net "--") (calendar menu-item "Calendar" calendar :help "Invoke the 
Emacs built-in calendar") (calc menu-item "Programmable Calculator" calc :help 
"Invoke the Emacs built-in full scientific calculator") (simple-calculator 
menu-item "Simple Calculator" calculator :help "Invoke the Emacs built-in quick 
calculator") (separator-encryption-decryption "--") (encryption-decryption 
menu-item "Encryption/Decryption" ...) (separator-games "--") (games menu-item 
"Games" ...) "Tools") (mouse-1 . tmm-menubar-mouse) (Field menu-item "Field" 
(keymap "Field" ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...)) 
(Message menu-item "Message" (keymap "Message" ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ... ... ...)) (Attachments menu-item 
"Attachments" (keymap "Attachments" ... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ...)) nil (help-menu "Help" keymap 
(emacs-tutorial menu-item "Emacs Tutorial" help-with-tutorial :help "Learn how 
to use Emacs") (emacs-tutorial-language-specific menu-item "Emacs Tutorial 
(choose language)..." help-with-tutorial-spec-language :help "Learn how to use 
Emacs (choose a language)") (emacs-faq menu-item "Emacs FAQ" view-emacs-FAQ 
:help "Frequently asked (and answered) questions about Emacs") (emacs-news 
menu-item "Emacs News" view-emacs-news :help "New features of this version") 
(emacs-known-problems menu-item "Emacs Known Problems" view-emacs-problems 
:help "Read about known problems with Emacs") (send-emacs-bug-report menu-item 
"Send Bug Report..." report-emacs-bug :help "Send e-mail to Emacs maintainers") 
(emacs-psychotherapist menu-item "Emacs Psychotherapist" doctor :help "Our 
doctor will help you feel better") (sep1 "--") (search-documentation menu-item 
"Search Documentation" ...) (describe menu-item "Describe" ...) (emacs-manual 
menu-item "Read the Emacs Manual" info-emacs-manual :help "Full documentation 
of Emacs features") (more-manuals menu-item "More Manuals" ...) 
(find-emacs-packages menu-item "Find Emacs Packages" finder-by-keyword :help 
"Find packages and features by keyword") (external-packages menu-item "External 
Packages" menu-bar-help-extra-packages :help "Lisp packages distributed 
separately for use in Emacs") (sep2 "--") (getting-new-versions menu-item 
"Getting New Versions" describe-distribution :help "How to get the latest 
version of Emacs") (describe-copying menu-item "Copying Conditions" 
describe-copying :help "Show the Emacs license (GPL)") (describe-no-warranty 
menu-item "(Non)Warranty" describe-no-warranty :help "Explain that Emacs has NO 
WARRANTY") (sep4 "--") (about-emacs menu-item "About Emacs" about-emacs :help 
"Display version number, copyright info, and basic help") (about-gnu-project 
menu-item "About GNU" describe-gnu-project :help "About the GNU System, GNU 
Project, and GNU/Linux") "Help")))
  (let ((gl-str "Menu bar") tmm-km-list out history history-len tmm-table-undef 
tmm-c-prompt tmm-old-mb-map tmm-old-comp-map tmm-short-cuts chosen-string 
choice (not-menu ...)) (run-hooks (quote activate-menubar-hook)) (mapc (lambda 
... ...) menu) (if (and not-menu ...) (setq choice ...) (unless tmm-km-list 
...) (and tmm-km-list ...) (setq choice ...) (and ... ... ... ...) (and ... out 
...)) (setq chosen-string (car choice)) (setq choice (cdr choice)) (cond 
(in-popup choice) (not-menu ...) (... ... ... ...) (choice ...)))
  tmm-prompt((keymap (file "File" keymap (new-file menu-item "Visit New 
File..." find-file :enable ... :help "Specify a new file's name, to edit the 
file") (open-file menu-item "Open File..." menu-find-file-existing :enable ... 
:help "Read an existing file into an Emacs buffer") (dired menu-item "Open 
Directory..." dired :enable ... :help "Read a directory, to operate on its 
files") (insert-file menu-item "Insert File..." insert-file :enable ... :help 
"Insert another file into current buffer") (kill-buffer menu-item "Close" 
kill-this-buffer :enable ... :help "Discard (kill) current buffer") 
(separator-save "--") (save-buffer menu-item "Save" save-buffer :enable ... 
:help "Save current buffer to its file") (write-file menu-item "Save As..." 
write-file :enable ... :help "Write current buffer to another file") 
(revert-buffer menu-item "Revert Buffer" revert-buffer :enable ... :help 
"Re-read current buffer from its file") (recover-session menu-item "Recover 
Crashed Session" recover-session :enable ... :help "Recover edits from a 
crashed session") (separator-print "--") (print-buffer menu-item "Print Buffer" 
print-buffer :enable ... :help "Print current buffer with page headings") 
(print-region menu-item "Print Region" print-region :enable mark-active :help 
"Print region between mark and current position") (ps-print-buffer-faces 
menu-item "Postscript Print Buffer" ps-print-buffer-with-faces :enable ... 
:help "Pretty-print current buffer to PostScript printer") 
(ps-print-region-faces menu-item "Postscript Print Region" 
ps-print-region-with-faces :enable mark-active :help "Pretty-print marked 
region to PostScript printer") (ps-print-buffer menu-item "Postscript Print 
Buffer (B+W)" ps-print-buffer :enable ... :help "Pretty-print current buffer in 
black and white to PostScript printer") (ps-print-region menu-item "Postscript 
Print Region (B+W)" ps-print-region :enable mark-active :help "Pretty-print 
marked region in black and white to PostScript printer") (separator-window 
"--") (split-window menu-item "Split Window" split-window-vertically :enable 
... :help "Split selected window in two windows") (one-window menu-item "Remove 
Splits" delete-other-windows :enable ... :help "Selected window grows to fill 
the whole frame") (make-frame menu-item "New Frame" make-frame-command :visible 
... :help "Open a new frame") (make-frame-on-display menu-item "New Frame on 
Display..." make-frame-on-display :visible ... :help "Open a new frame on 
another display") (delete-this-frame menu-item "Delete Frame" delete-frame 
:visible ... :enable ... :help "Delete currently selected frame") 
(separator-exit "--") (exit-emacs menu-item "Quit" save-buffers-kill-terminal 
:help "Save unsaved buffers, then exit") "File") (edit "Edit" keymap (undo 
menu-item "Undo" undo :enable ... :help "Undo last operation") (cut "Cut" 
"Delete text in region and copy it to the clipboard" . clipboard-kill-region) 
(copy "Copy" "Copy text in region to the clipboard" . clipboard-kill-ring-save) 
(paste menu-item "Paste" x-clipboard-yank :enable ... :help "Paste (yank) text 
most recently cut/copied") (paste-from-menu menu-item "Paste from Kill Menu" 
yank-menu :enable ... :help "Choose a string from the kill ring and paste it") 
(clear menu-item "Clear" delete-region :enable ... :help "Delete the text in 
region between mark and current position") (mark-whole-buffer menu-item "Select 
All" mark-whole-buffer :help "Mark the whole buffer for a subsequent cut/copy") 
(separator-search "--") (search menu-item "Search" ...) (replace menu-item 
"Replace" ...) (goto menu-item "Go To" ...) (bookmark menu-item "Bookmarks" 
menu-bar-bookmark-map) (separator-bookmark "--") (fill menu-item "Fill" 
fill-region :enable ... :help "Fill text in region to fit between left and 
right margin") (props menu-item "Text Properties" facemenu-menu) "Edit") 
(options "Options" keymap (transient-mark-mode menu-item "Active Region 
Highlighting" transient-mark-mode :enable ... :help "Make text in active region 
stand out in color (Transient Mark mode)" :button ...) (highlight-paren-mode 
menu-item "Paren Match Highlighting" show-paren-mode :help "Highlight 
matching/mismatched parentheses at cursor (Show Paren mode)" :button ...) 
(highlight-separator "--") (line-wrapping menu-item "Line Wrapping in this 
Buffer" ...) (auto-fill-mode menu-item "Auto Fill in Text Modes" 
menu-bar-text-mode-auto-fill :help "Automatically fill text while typing (Auto 
Fill mode)" :button ...) (case-fold-search menu-item "Case-Insensitive Search" 
toggle-case-fold-search :help "Ignore letter-case in search commands" :button 
...) (cua-emulation-mode menu-item "Shift movement mark region (CUA)" cua-mode 
:visible ... :help "Use shifted movement keys to set and extend the region." 
:button ...) (cua-mode menu-item "C-x/C-c/C-v Cut and Paste (CUA)" cua-mode 
:visible ... :help "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste" :button 
...) (edit-options-separator "--") (uniquify menu-item "Use Directory Names in 
Buffer Names" toggle-uniquify-buffer-names :help "Uniquify buffer names by 
adding parent directory names" :button ...) (save-place menu-item "Save Place 
in Files between Sessions" toggle-save-place-globally :help "Visit files of 
previous session when restarting Emacs" :button ...) (cursor-separator "--") 
(blink-cursor-mode menu-item "Blinking Cursor" blink-cursor-mode :help "Whether 
the cursor blinks (Blink Cursor mode)" :button ...) (debugger-separator "--") 
(debug-on-error menu-item "Enter Debugger on Error" toggle-debug-on-error :help 
"Enter Lisp debugger when an error is signaled" :button ...) (debug-on-quit 
menu-item "Enter Debugger on Quit/C-g" toggle-debug-on-quit :help "Enter Lisp 
debugger when C-g is pressed" :button ...) (mule-separator "--") (mule 
menu-item "Mule (Multilingual Environment)" ...) (showhide-separator "--") 
(showhide menu-item "Show/Hide" ...) (menu-set-font menu-item "Set Default 
Font..." menu-set-font :visible ... :help "Select a default font") 
(custom-separator "--") (save menu-item "Save Options" menu-bar-options-save 
:help "Save options set from the menu above") (customize menu-item "Customize 
Emacs" ...) "Options" (package menu-item "Manage Packages" 
package-list-packages :help "Install or uninstall additional Emacs packages")) 
(buffer "Buffers" keymap "Select Buffer" [... ... ... ... ... ... ... ... ... 
...] (frames-separator "--") (frames menu-item "Frames" ...) (command-separator 
"--") (next-buffer menu-item "Next Buffer" next-buffer :help "Switch to the 
\"next\" buffer in a cyclic order") (previous-buffer menu-item "Previous 
Buffer" previous-buffer :help "Switch to the \"previous\" buffer in a cyclic 
order") (select-named-buffer menu-item "Select Named Buffer..." 
switch-to-buffer :help "Prompt for a buffer name, and select that buffer in the 
current window") (list-all-buffers menu-item "List All Buffers" list-buffers 
:help "Pop up a window listing all Emacs buffers")) (tools "Tools" keymap (grep 
menu-item "Search Files (Grep)..." grep :help "Search files for strings or 
regexps (with Grep)") (compile menu-item "Compile..." compile :help "Invoke 
compiler or Make, view compilation errors") (shell menu-item "Shell Command..." 
shell-command :help "Invoke a shell command and catch its output") 
(shell-on-region menu-item "Shell Command on Region..." shell-command-on-region 
:enable mark-active :help "Pass marked region to a shell command") (gdb 
menu-item "Debugger (GDB)..." gdb :help "Debug a program from within Emacs with 
GDB") (ede menu-item "Project support (EDE)" global-ede-mode :help "Toggle the 
Emacs Development Environment (Global EDE mode)" :button ...) (semantic 
menu-item "Source Code Parsers (Semantic)" semantic-mode :help "Toggle 
automatic parsing in source code buffers (Semantic mode)" :button ...) 
(separator-prog "--") (spell menu-item "Spell Checking" ispell-menu-map) 
(separator-spell "--") (compare menu-item "Compare (Ediff)" 
menu-bar-ediff-menu) (ediff-merge menu-item "Merge" menu-bar-ediff-merge-menu) 
(epatch menu-item "Apply Patch" menu-bar-epatch-menu) (separator-compare "--") 
(vc menu-item "Version Control" vc-menu-map :filter vc-menu-map-filter) 
(pcl-cvs menu-item "PCL-CVS" cvs-global-menu) (separator-vc "--") (gnus 
menu-item "Read Net News (Gnus)" gnus :help "Read network news groups") (rmail 
menu-item ... menu-bar-read-mail :visible ... :help "Read your mail and reply 
to it") (compose-mail menu-item ... compose-mail :visible ... :help "Send a 
mail message") (directory-search menu-item "Directory Search" eudc-tools-menu) 
(separator-net "--") (calendar menu-item "Calendar" calendar :help "Invoke the 
Emacs built-in calendar") (calc menu-item "Programmable Calculator" calc :help 
"Invoke the Emacs built-in full scientific calculator") (simple-calculator 
menu-item "Simple Calculator" calculator :help "Invoke the Emacs built-in quick 
calculator") (separator-encryption-decryption "--") (encryption-decryption 
menu-item "Encryption/Decryption" ...) (separator-games "--") (games menu-item 
"Games" ...) "Tools") (mouse-1 . tmm-menubar-mouse) (Field menu-item "Field" 
(keymap "Field" ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...)) 
(Message menu-item "Message" (keymap "Message" ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ... ... ...)) (Attachments menu-item 
"Attachments" (keymap "Attachments" ... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ...)) nil (help-menu "Help" keymap 
(emacs-tutorial menu-item "Emacs Tutorial" help-with-tutorial :help "Learn how 
to use Emacs") (emacs-tutorial-language-specific menu-item "Emacs Tutorial 
(choose language)..." help-with-tutorial-spec-language :help "Learn how to use 
Emacs (choose a language)") (emacs-faq menu-item "Emacs FAQ" view-emacs-FAQ 
:help "Frequently asked (and answered) questions about Emacs") (emacs-news 
menu-item "Emacs News" view-emacs-news :help "New features of this version") 
(emacs-known-problems menu-item "Emacs Known Problems" view-emacs-problems 
:help "Read about known problems with Emacs") (send-emacs-bug-report menu-item 
"Send Bug Report..." report-emacs-bug :help "Send e-mail to Emacs maintainers") 
(emacs-psychotherapist menu-item "Emacs Psychotherapist" doctor :help "Our 
doctor will help you feel better") (sep1 "--") (search-documentation menu-item 
"Search Documentation" ...) (describe menu-item "Describe" ...) (emacs-manual 
menu-item "Read the Emacs Manual" info-emacs-manual :help "Full documentation 
of Emacs features") (more-manuals menu-item "More Manuals" ...) 
(find-emacs-packages menu-item "Find Emacs Packages" finder-by-keyword :help 
"Find packages and features by keyword") (external-packages menu-item "External 
Packages" menu-bar-help-extra-packages :help "Lisp packages distributed 
separately for use in Emacs") (sep2 "--") (getting-new-versions menu-item 
"Getting New Versions" describe-distribution :help "How to get the latest 
version of Emacs") (describe-copying menu-item "Copying Conditions" 
describe-copying :help "Show the Emacs license (GPL)") (describe-no-warranty 
menu-item "(Non)Warranty" describe-no-warranty :help "Explain that Emacs has NO 
WARRANTY") (sep4 "--") (about-emacs menu-item "About Emacs" about-emacs :help 
"Display version number, copyright info, and basic help") (about-gnu-project 
menu-item "About GNU" describe-gnu-project :help "About the GNU System, GNU 
Project, and GNU/Linux") "Help")) nil nil)
  (let ((menu-bar ...) menu-bar-item) (let (...) (while list ... ...)) (if 
x-position (let ... ... ...)) (tmm-prompt menu-bar nil menu-bar-item))
  tmm-menubar()
  call-interactively(tmm-menubar nil nil)
--8<---------------cut here---------------end--------------->8---





reply via email to

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