From d06752db2d8f4f15250624031574f7719a0b3df8 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 4 Jan 1994 23:30:37 +0000 Subject: [PATCH] (popup-menu): Add loop to handle submenus. --- lisp/emacs-lisp/lmenu.el | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lisp/emacs-lisp/lmenu.el b/lisp/emacs-lisp/lmenu.el index dc108c14b00..3883d0ed4be 100644 --- a/lisp/emacs-lisp/lmenu.el +++ b/lisp/emacs-lisp/lmenu.el @@ -132,11 +132,16 @@ The syntax, more precisely: (let ((menu (make-lucid-menu-keymap (car menu-desc) (cdr menu-desc))) (pos (mouse-position)) answer) - (setq answer (x-popup-menu (list (list (nth 1 pos) (nthcdr 2 pos)) - (car pos)) - menu)) - (setq cmd (lookup-key menu (vector answer))) - (if cmd (call-interactively cmd)))) + (while menu + (setq answer (x-popup-menu (list (list (nth 1 pos) (nthcdr 2 pos)) + (car pos)) + menu)) + (setq cmd (lookup-key menu (vector answer))) + (setq menu nil) + (and cmd + (if (keymapp cmd) + (setq menu cmd) + (call-interactively cmd)))))) ;; This is empty because the usual elements of the menu bar ;; are provided by menu-bar.el instead. -- 2.39.5