Mercurial > emacs
comparison src/xmenu.c @ 32988:c3435dc00ed7
* lisp.h (KEYMAPP): New macro.
(get_keymap): Remove.
(get_keymap_1): Rename get_keymap.
* keyboard.h (get_keymap_1, Fkeymapp): Remove prototype.
* xterm.c (note_mode_line_highlight): Use KEYMAPP.
* xmenu.c (single_submenu): Use KEYMAPP.
(Fx_popup_menu): Fetch keymaps rather than checking Fkeymapp.
Use KEYMAPP rather than Fkeymapp.
* w32term.c (note_mode_line_highlight): Use KEYMAPP.
* w32menu.c (True, False): Remove (use TRUE and FALSE instead).
(Fx_popup_menu): Fetch keymaps rather than checking Fkeymapp.
Use KEYMAPP rather than Fkeymapp.
(single_submenu): Use KEYMAPP.
(w32_menu_show, w32_dialog_show): Use TRUE.
* minibuf.c (Fread_from_minibuffer): Update call to get_keymap.
* keymap.c (KEYMAPP): Remove (moved to lisp.h).
(Fkeymapp): Use KEYMAPP.
(get_keymap): Rename from get_keymap_1. Remove old def.
Return t when autoload=0 and error=0 and the keymap needs autoloading.
(Fcopy_keymap): Check (eq (car x) 'keymap) rather than using Fkeymapp.
(Fminor_mode_key_binding): Don't raise an error if the binding
is not a keymap.
(Fuse_global_map, Fuse_local_map): Allow autoloading.
(Faccessible_keymaps): Fetch keymaps rather than checking Fkeymapp.
* keyboard.c (read_char): get_keymap_1 -> get_keymap.
Allow Vspecial_event_map to be autoloaded.
(menu_bar_items): Fetch the keymap rather than using keymapp.
(menu_bar_one_keymap): No need to follow func-indirect any more.
(parse_menu_item): get_keymap_1 -> get_keymap.
(tool_bar_items): Fetch the keymap rather than using keymapp.
(read_key_sequence): Use KEYMAPP.
* intervals.c (get_local_map): Use get_keymap rather than following
function-indirections explicitly.
* doc.c (Fsubstitute_command_keys): get_keymap_1 -> get_keymap.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 27 Oct 2000 22:20:19 +0000 |
parents | 15fe3fd7b8fc |
children | 743849495725 |
comparison
equal
deleted
inserted
replaced
32987:a2813d16337d | 32988:c3435dc00ed7 |
---|---|
36 #include <signal.h> | 36 #include <signal.h> |
37 | 37 |
38 #include <stdio.h> | 38 #include <stdio.h> |
39 #include "lisp.h" | 39 #include "lisp.h" |
40 #include "termhooks.h" | 40 #include "termhooks.h" |
41 #include "keyboard.h" | |
41 #include "frame.h" | 42 #include "frame.h" |
42 #include "window.h" | 43 #include "window.h" |
43 #include "keyboard.h" | |
44 #include "blockinput.h" | 44 #include "blockinput.h" |
45 #include "buffer.h" | 45 #include "buffer.h" |
46 | 46 |
47 #ifdef MSDOS | 47 #ifdef MSDOS |
48 #include "msdos.h" | 48 #include "msdos.h" |
786 title = Qnil; | 786 title = Qnil; |
787 GCPRO1 (title); | 787 GCPRO1 (title); |
788 | 788 |
789 /* Decode the menu items from what was specified. */ | 789 /* Decode the menu items from what was specified. */ |
790 | 790 |
791 keymap = Fkeymapp (menu); | 791 keymap = get_keymap (menu, 0, 0); |
792 tem = Qnil; | 792 if (CONSP (keymap)) |
793 if (CONSP (menu)) | |
794 tem = Fkeymapp (Fcar (menu)); | |
795 if (!NILP (keymap)) | |
796 { | 793 { |
797 /* We were given a keymap. Extract menu info from the keymap. */ | 794 /* We were given a keymap. Extract menu info from the keymap. */ |
798 Lisp_Object prompt; | 795 Lisp_Object prompt; |
799 keymap = get_keymap (menu); | |
800 | 796 |
801 /* Extract the detailed info to make one pane. */ | 797 /* Extract the detailed info to make one pane. */ |
802 keymap_panes (&menu, 1, NILP (position)); | 798 keymap_panes (&menu, 1, NILP (position)); |
803 | 799 |
804 /* Search for a string appearing directly as an element of the keymap. | 800 /* Search for a string appearing directly as an element of the keymap. |
811 if (!NILP (prompt) && menu_items_n_panes >= 0) | 807 if (!NILP (prompt) && menu_items_n_panes >= 0) |
812 XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME] = prompt; | 808 XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME] = prompt; |
813 | 809 |
814 keymaps = 1; | 810 keymaps = 1; |
815 } | 811 } |
816 else if (!NILP (tem)) | 812 else if (CONSP (menu) && KEYMAPP (XCAR (menu))) |
817 { | 813 { |
818 /* We were given a list of keymaps. */ | 814 /* We were given a list of keymaps. */ |
819 int nmaps = XFASTINT (Flength (menu)); | 815 int nmaps = XFASTINT (Flength (menu)); |
820 Lisp_Object *maps | 816 Lisp_Object *maps |
821 = (Lisp_Object *) alloca (nmaps * sizeof (Lisp_Object)); | 817 = (Lisp_Object *) alloca (nmaps * sizeof (Lisp_Object)); |
827 supplies the menu title. */ | 823 supplies the menu title. */ |
828 for (tem = menu, i = 0; CONSP (tem); tem = Fcdr (tem)) | 824 for (tem = menu, i = 0; CONSP (tem); tem = Fcdr (tem)) |
829 { | 825 { |
830 Lisp_Object prompt; | 826 Lisp_Object prompt; |
831 | 827 |
832 maps[i++] = keymap = get_keymap (Fcar (tem)); | 828 maps[i++] = keymap = get_keymap (Fcar (tem), 1, 0); |
833 | 829 |
834 prompt = map_prompt (keymap); | 830 prompt = map_prompt (keymap); |
835 if (NILP (title) && !NILP (prompt)) | 831 if (NILP (title) && !NILP (prompt)) |
836 title = prompt; | 832 title = prompt; |
837 } | 833 } |
1394 /* Loop over the given keymaps, making a pane for each map. | 1390 /* Loop over the given keymaps, making a pane for each map. |
1395 But don't make a pane that is empty--ignore that map instead. */ | 1391 But don't make a pane that is empty--ignore that map instead. */ |
1396 for (i = 0; i < len; i++) | 1392 for (i = 0; i < len; i++) |
1397 { | 1393 { |
1398 if (SYMBOLP (mapvec[i]) | 1394 if (SYMBOLP (mapvec[i]) |
1399 || (CONSP (mapvec[i]) | 1395 || (CONSP (mapvec[i]) && !KEYMAPP (mapvec[i]))) |
1400 && NILP (Fkeymapp (mapvec[i])))) | |
1401 { | 1396 { |
1402 /* Here we have a command at top level in the menu bar | 1397 /* Here we have a command at top level in the menu bar |
1403 as opposed to a submenu. */ | 1398 as opposed to a submenu. */ |
1404 top_level_items = 1; | 1399 top_level_items = 1; |
1405 push_menu_pane (Qnil, Qnil); | 1400 push_menu_pane (Qnil, Qnil); |