I have no idea if this will work without some non-trivial re-shuffling of the code in x-popup-menu. Just looking at the source, it seems to invoke functions that need X (or its emulation). Someone will have to work on refactoring the code before we can do what you suggest.
The following changes seem to be enough to make x-popup-menu compile and link properly. And the keyboard shortcuts do appear. Note that no change was needed in xmenu.c itself. Apparently someone already prepared that file for such use. *** emacs.c 27 Aug 2005 22:41:25 -0400 1.374 --- emacs.c 12 Sep 2005 07:28:32 -0400 *************** *** 1624,1635 **** #endif #endif /* HAVE_X_WINDOWS */ - #ifdef HAVE_MENUS #ifndef HAVE_NTGUI #ifndef MAC_OS /* Called before init_window_once for Mac OS Classic. */ syms_of_xmenu (); - #endif #endif #endif --- 1624,1633 ---- *** Makefile.in 07 Aug 2005 13:30:34 -0400 1.313 --- Makefile.in 12 Sep 2005 07:37:47 -0400 *************** *** 310,319 **** #ifdef HAVE_MENUS - #ifndef HAVE_CARBON - XMENU_OBJ = xmenu.o - #endif - #ifdef USE_GTK GTK_OBJ= gtkutil.o #endif --- 310,315 ---- *************** *** 449,457 **** LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM #endif /* not HAVE_X11 */ #else /* not HAVE_X_WINDOWS */ - #if defined(HAVE_MENUS) && !defined(HAVE_CARBON) - XMENU_OBJ = xmenu.o - #endif #endif /* not HAVE_X_WINDOWS */ LIBSOUND= @LIBSOUND@ --- 445,450 ---- *************** *** 577,583 **** /* lastfile must follow all files whose initialized data areas should be dumped as pure by dump-emacs. */ ! obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \ charset.o coding.o category.o ccl.o \ cm.o term.o xfaces.o $(XOBJ) $(GTK_OBJ)\ emacs.o keyboard.o macros.o keymap.o sysdep.o \ --- 570,576 ---- /* lastfile must follow all files whose initialized data areas should be dumped as pure by dump-emacs. */ ! obj= dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o \ charset.o coding.o category.o ccl.o \ cm.o term.o xfaces.o $(XOBJ) $(GTK_OBJ)\ emacs.o keyboard.o macros.o keymap.o sysdep.o \ *************** *** 596,602 **** These go in the DOC file on all machines in case they are needed there. */ SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \ ! xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \ mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \ w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \ w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o --- 589,595 ---- These go in the DOC file on all machines in case they are needed there. */ SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \ ! xterm.o xfns.o xselect.o xrdb.o xsmfns.o fringe.o image.o \ mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \ w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \ w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o *** xdisp.c 08 Sep 2005 20:35:28 -0400 1.1050 --- xdisp.c 12 Sep 2005 07:22:30 -0400 *************** *** 10009,10020 **** --- 10009,10022 ---- if (FRAME_WINDOW_P (it->f) && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0) { + #ifdef HAVE_WINDOW_SYSTEM if (val = Fget (var, Qoverlay_arrow_bitmap), SYMBOLP (val)) { int fringe_bitmap; if ((fringe_bitmap = lookup_fringe_bitmap (val)) != 0) return make_number (fringe_bitmap); } + #endif return make_number (-1); /* Use default arrow bitmap */ } return overlay_arrow_string_or_property (var); _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel