diff options
| author | Gerd Möllmann | 2025-02-10 07:55:43 +0100 |
|---|---|---|
| committer | Gerd Möllmann | 2025-02-18 05:13:16 +0100 |
| commit | 17bf6b9efe5c40dfa92fa5ec64a99162304395cd (patch) | |
| tree | 706803c28bb08443ec7bc214ae8d7550f7c93da3 /src/menu.c | |
| parent | a51cfbbd15889ce2af59b0b1bffac8735f70f6b9 (diff) | |
| download | emacs-17bf6b9efe5c40dfa92fa5ec64a99162304395cd.tar.gz emacs-17bf6b9efe5c40dfa92fa5ec64a99162304395cd.zip | |
Add x-popup-menu-function
* src/menu.c (x_popup_menu_1): If non-nil call x-popup-menu-function.
(syms_of_menu): DEFSYM x-popup-menu-function, DEFVAR_LISP it.
Diffstat (limited to 'src/menu.c')
| -rw-r--r-- | src/menu.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/menu.c b/src/menu.c index 0293328c832..a37cb359623 100644 --- a/src/menu.c +++ b/src/menu.c | |||
| @@ -1111,6 +1111,12 @@ into menu items. */) | |||
| 1111 | Lisp_Object | 1111 | Lisp_Object |
| 1112 | x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) | 1112 | x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) |
| 1113 | { | 1113 | { |
| 1114 | if (!NILP (Vx_popup_menu_function)) | ||
| 1115 | return run_hook_with_args (3, ((Lisp_Object[]) { | ||
| 1116 | Qx_popup_menu_function, position, | ||
| 1117 | menu}), | ||
| 1118 | Ffuncall); | ||
| 1119 | |||
| 1114 | Lisp_Object keymap, tem, tem2 = Qnil; | 1120 | Lisp_Object keymap, tem, tem2 = Qnil; |
| 1115 | int xpos = 0, ypos = 0; | 1121 | int xpos = 0, ypos = 0; |
| 1116 | Lisp_Object title; | 1122 | Lisp_Object title; |
| @@ -1614,6 +1620,7 @@ syms_of_menu (void) | |||
| 1614 | 1620 | ||
| 1615 | DEFSYM (Qhide, "hide"); | 1621 | DEFSYM (Qhide, "hide"); |
| 1616 | DEFSYM (Qx_pre_popup_menu_hook, "x-pre-popup-menu-hook"); | 1622 | DEFSYM (Qx_pre_popup_menu_hook, "x-pre-popup-menu-hook"); |
| 1623 | DEFSYM (Qx_popup_menu_function, "x-popup-menu-function"); | ||
| 1617 | 1624 | ||
| 1618 | DEFVAR_LISP ("x-pre-popup-menu-hook", Vx_pre_popup_menu_hook, | 1625 | DEFVAR_LISP ("x-pre-popup-menu-hook", Vx_pre_popup_menu_hook, |
| 1619 | doc: /* Hook run before `x-popup-menu' displays a popup menu. | 1626 | doc: /* Hook run before `x-popup-menu' displays a popup menu. |
| @@ -1622,6 +1629,11 @@ won't be run if `x-popup-menu' fails or returns for some other reason | |||
| 1622 | (such as the keymap is invalid). */); | 1629 | (such as the keymap is invalid). */); |
| 1623 | Vx_pre_popup_menu_hook = Qnil; | 1630 | Vx_pre_popup_menu_hook = Qnil; |
| 1624 | 1631 | ||
| 1632 | DEFVAR_LISP ("x-popup-menu-function", Vx_popup_menu_function, | ||
| 1633 | doc: /* Function to call to pop up a menu. | ||
| 1634 | The function is called like `x-popup-menu'. */); | ||
| 1635 | Vx_popup_menu_function = Qnil; | ||
| 1636 | |||
| 1625 | defsubr (&Sx_popup_menu); | 1637 | defsubr (&Sx_popup_menu); |
| 1626 | defsubr (&Sx_popup_dialog); | 1638 | defsubr (&Sx_popup_dialog); |
| 1627 | defsubr (&Smenu_bar_menu_at_x_y); | 1639 | defsubr (&Smenu_bar_menu_at_x_y); |