* NeXTstep (GNUstep/Cocoa) port and merging @ 2008-06-04 1:44 Adrian Robert 2008-06-04 2:34 ` Stefan Monnier ` (3 more replies) 0 siblings, 4 replies; 22+ messages in thread From: Adrian Robert @ 2008-06-04 1:44 UTC (permalink / raw) To: emacs- devel Hello, One of the possible new "features" for the 23 release is the NeXTstep port known as Emacs.app, that runs (usually) on GNUstep as well as Mac OS X. This code, parallel to the X11, W32, and Mac (Carbon) ports already in CVS, is currently available in a bzr repository hosted on savanah (checkout instructions below). In addition, it may be examined in patch form (though this is out of date by 2 months, changes since are limited) at: http://cortex.med.cornell.edu/~arobert/emacs-app/ (There, xx.patch contains mods to common source, xx.patch_add.tgz contains new files) Stefan Monnier and Dan Nicolaescu have already provided feedback on the portions that touch common code, and this has been incorporated or listed in nextstep/FOR_MERGE. But more eyes would be welcome before going ahead. One area it would be nice to have some feedback on is the added file "nsmenu_common.c". This file of about 1000 lines contains code that is more or less duplicated (modulo some divergence) across {x,w32,mac}menu.c, and is concerned mainly with mediating between lisp and C representations of menus. I followed xmenu.c when creating the common file. It would be good to change this to "menu_common.c" and have the other GUIs use it. Then only one version needs to be maintained, and if the desire comes to reform or refactor the menu structures, there would be less work involved. thanks -Adrian (bzr instructions follow..) See http://bzr.notengoamigos.org/ 1) wget 'http://bzr.notengoamigos.org/emacs.tar.gz' 2) cd branches 3) for a read-only version: bzr get http://arch.sv.gnu.org/archives/emacs/bzr/emacs.app Note: bzr command 'get' = 'clone' .= 'checkout' 4) for a read-write version: bzr get sftp://arch.sv.gnu.org/archives/emacs/bzr/emacs.app 5) to merge from trunk: bzr merge http://bzr.notengoamigos.org/emacs/trunk/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-04 1:44 NeXTstep (GNUstep/Cocoa) port and merging Adrian Robert @ 2008-06-04 2:34 ` Stefan Monnier 2008-06-08 0:29 ` Chong Yidong 2008-06-04 16:02 ` Sean O'Rourke ` (2 subsequent siblings) 3 siblings, 1 reply; 22+ messages in thread From: Stefan Monnier @ 2008-06-04 2:34 UTC (permalink / raw) To: Adrian Robert; +Cc: emacs-devel > One area it would be nice to have some feedback on is the added file > "nsmenu_common.c". This file of about 1000 lines contains code that is > more or less duplicated (modulo some divergence) across {x,w32,mac}menu.c, > and is concerned mainly with mediating between lisp and C representations > of menus. I followed xmenu.c when creating the common file. It would be > good to change this to "menu_common.c" and have the other GUIs use it. Yes, it would indeed be good. I've already several times intended to make a similar change but never got around to really do it. If someone could take this part of the Emacs.app patch and make it independent from Emacs.app, that would be great. Stefan ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-04 2:34 ` Stefan Monnier @ 2008-06-08 0:29 ` Chong Yidong 2008-06-08 4:48 ` Chong Yidong 0 siblings, 1 reply; 22+ messages in thread From: Chong Yidong @ 2008-06-08 0:29 UTC (permalink / raw) To: Stefan Monnier; +Cc: Adrian Robert, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> One area it would be nice to have some feedback on is the added file >> "nsmenu_common.c". This file of about 1000 lines contains code that is >> more or less duplicated (modulo some divergence) across {x,w32,mac}menu.c, >> and is concerned mainly with mediating between lisp and C representations >> of menus. I followed xmenu.c when creating the common file. It would be >> good to change this to "menu_common.c" and have the other GUIs use it. > > Yes, it would indeed be good. I've already several times intended to > make a similar change but never got around to really do it. If someone > could take this part of the Emacs.app patch and make it independent from > Emacs.app, that would be great. I've been working on this, and it's nearly ready. I'll check in a platform-independent menu.c sometime this week. It will probably need a bit of help from those with access to w32 and mac to get it working properly on those platforms. I'll ping the list when it's checked in. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-08 0:29 ` Chong Yidong @ 2008-06-08 4:48 ` Chong Yidong 0 siblings, 0 replies; 22+ messages in thread From: Chong Yidong @ 2008-06-08 4:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: Adrian Robert, emacs-devel Chong Yidong <cyd@stupidchicken.com> writes: > Stefan Monnier <monnier@iro.umontreal.ca> writes: > >>> One area it would be nice to have some feedback on is the added file >>> "nsmenu_common.c". This file of about 1000 lines contains code that is >>> more or less duplicated (modulo some divergence) across {x,w32,mac}menu.c, >>> and is concerned mainly with mediating between lisp and C representations >>> of menus. I followed xmenu.c when creating the common file. It would be >>> good to change this to "menu_common.c" and have the other GUIs use it. >> >> Yes, it would indeed be good. I've already several times intended to >> make a similar change but never got around to really do it. If someone >> could take this part of the Emacs.app patch and make it independent from >> Emacs.app, that would be great. > > I've been working on this, and it's nearly ready. I'll check in a > platform-independent menu.c sometime this week. It will probably need a > bit of help from those with access to w32 and mac to get it working > properly on those platforms. > > I'll ping the list when it's checked in. I've added a new file menu.c to the CVS trunk. This contains platform-independent parts of the menu code, taken from xmenu.c. Some definitions have also been moved into keyboard.h. Currently, I have only removed code from xmenu.c, and menu.c is only compiled in when HAVE_X_WINDOWS is defined. I cannot test it on Windows or Mac OS, and I don't want to break things. I think the following additional patch should DTRT on Windows, but it is 100% untested. Could someone try it? Also, could someone try write up the analogous code for Mac OS? Please let me know if there are problems. *** trunk/src/Makefile.in.~1.386.~ 2008-06-07 23:59:44.000000000 -0400 --- trunk/src/Makefile.in 2008-06-08 00:44:08.000000000 -0400 *************** *** 539,545 **** #endif /* HAVE_X_WINDOWS */ #endif /* HAVE_WINDOW_SYSTEM */ ! #ifdef HAVE_X_WINDOWS MENU_OBJ = menu.o #endif --- 539,545 ---- #endif /* HAVE_X_WINDOWS */ #endif /* HAVE_WINDOW_SYSTEM */ ! #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) MENU_OBJ = menu.o #endif *** trunk/src/keyboard.h.~1.84.~ 2008-06-08 00:06:07.000000000 -0400 --- trunk/src/keyboard.h 2008-06-08 00:43:45.000000000 -0400 *************** *** 253,259 **** /* Not nil if item is enabled. */ #define ITEM_PROPERTY_ENABLE 8 ! #ifdef HAVE_X_WINDOWS /* This holds a Lisp vector that holds the results of decoding the keymaps or alist-of-alists that specify a menu. --- 253,259 ---- /* Not nil if item is enabled. */ #define ITEM_PROPERTY_ENABLE 8 ! #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) /* This holds a Lisp vector that holds the results of decoding the keymaps or alist-of-alists that specify a menu. *** trunk/src/w32menu.c~ 2008-06-07 23:11:45.000000000 -0400 --- trunk/src/w32menu.c 2008-06-07 20:53:21.000000000 -0400 *************** *** 51,130 **** #undef HAVE_DIALOGS /* TODO: Implement native dialogs. */ /******************************************************************/ - /* Definitions copied from lwlib.h */ - - typedef void * XtPointer; - typedef char Boolean; - - enum button_type - { - BUTTON_TYPE_NONE, - BUTTON_TYPE_TOGGLE, - BUTTON_TYPE_RADIO - }; - - /* This structure is based on the one in ../lwlib/lwlib.h, modified - for Windows. */ - typedef struct _widget_value - { - /* name of widget */ - Lisp_Object lname; - char* name; - /* value (meaning depend on widget type) */ - char* value; - /* keyboard equivalent. no implications for XtTranslations */ - Lisp_Object lkey; - char* key; - /* Help string or nil if none. - GC finds this string through the frame's menu_bar_vector - or through menu_items. */ - Lisp_Object help; - /* true if enabled */ - Boolean enabled; - /* true if selected */ - Boolean selected; - /* The type of a button. */ - enum button_type button_type; - /* true if menu title */ - Boolean title; - #if 0 - /* true if was edited (maintained by get_value) */ - Boolean edited; - /* true if has changed (maintained by lw library) */ - change_type change; - /* true if this widget itself has changed, - but not counting the other widgets found in the `next' field. */ - change_type this_one_change; - #endif - /* Contents of the sub-widgets, also selected slot for checkbox */ - struct _widget_value* contents; - /* data passed to callback */ - XtPointer call_data; - /* next one in the list */ - struct _widget_value* next; - #if 0 - /* slot for the toolkit dependent part. Always initialize to NULL. */ - void* toolkit_data; - /* tell us if we should free the toolkit data slot when freeing the - widget_value itself. */ - Boolean free_toolkit_data; - - /* we resource the widget_value structures; this points to the next - one on the free list if this one has been deallocated. - */ - struct _widget_value *free_list; - #endif - } widget_value; - - /* Local memory management */ - #define local_heap (GetProcessHeap ()) - #define local_alloc(n) (HeapAlloc (local_heap, HEAP_ZERO_MEMORY, (n))) - #define local_free(p) (HeapFree (local_heap, 0, ((LPVOID) (p)))) - - #define malloc_widget_value() ((widget_value *) local_alloc (sizeof (widget_value))) - #define free_widget_value(wv) (local_free ((wv))) - - /******************************************************************/ #ifndef TRUE #define TRUE 1 --- 51,56 ---- *************** *** 180,250 **** static Lisp_Object w32_menu_show P_ ((FRAME_PTR, int, int, int, int, Lisp_Object, char **)); - static void keymap_panes P_ ((Lisp_Object *, int, int)); - static void single_keymap_panes P_ ((Lisp_Object, Lisp_Object, Lisp_Object, - int, int)); - static void single_menu_item P_ ((Lisp_Object, Lisp_Object, - Lisp_Object *, int, int)); - static void list_of_panes P_ ((Lisp_Object)); - static void list_of_items P_ ((Lisp_Object)); void w32_free_menu_strings P_((HWND)); \f - /* This holds a Lisp vector that holds the results of decoding - the keymaps or alist-of-alists that specify a menu. - - It describes the panes and items within the panes. - - Each pane is described by 3 elements in the vector: - t, the pane name, the pane's prefix key. - Then follow the pane's items, with 5 elements per item: - the item string, the enable flag, the item's value, - the definition, and the equivalent keyboard key's description string. - - In some cases, multiple levels of menus may be described. - A single vector slot containing nil indicates the start of a submenu. - A single vector slot containing lambda indicates the end of a submenu. - The submenu follows a menu item which is the way to reach the submenu. - - A single vector slot containing quote indicates that the - following items should appear on the right of a dialog box. - - Using a Lisp vector to hold this information while we decode it - takes care of protecting all the data from GC. */ - - #define MENU_ITEMS_PANE_NAME 1 - #define MENU_ITEMS_PANE_PREFIX 2 - #define MENU_ITEMS_PANE_LENGTH 3 - - enum menu_item_idx - { - MENU_ITEMS_ITEM_NAME = 0, - MENU_ITEMS_ITEM_ENABLE, - MENU_ITEMS_ITEM_VALUE, - MENU_ITEMS_ITEM_EQUIV_KEY, - MENU_ITEMS_ITEM_DEFINITION, - MENU_ITEMS_ITEM_TYPE, - MENU_ITEMS_ITEM_SELECTED, - MENU_ITEMS_ITEM_HELP, - MENU_ITEMS_ITEM_LENGTH - }; - - static Lisp_Object menu_items; - - /* Number of slots currently allocated in menu_items. */ - static int menu_items_allocated; - - /* This is the index in menu_items of the first empty slot. */ - static int menu_items_used; - - /* The number of panes currently recorded in menu_items, - excluding those within submenus. */ - static int menu_items_n_panes; - - /* Current depth within submenus. */ - static int menu_items_submenu_depth; - static int next_menubar_widget_id; /* This is set nonzero after the user activates the menu bar, and set to zero again after the menu bars are redisplayed by prepare_menu_bar. While it is nonzero, all calls to set_frame_menubar go deep. --- 106,117 ---- static Lisp_Object w32_menu_show P_ ((FRAME_PTR, int, int, int, int, Lisp_Object, char **)); void w32_free_menu_strings P_((HWND)); \f static int next_menubar_widget_id; + extern widget_value *xmalloc_widget_value P_ ((void)); + /* This is set nonzero after the user activates the menu bar, and set to zero again after the menu bars are redisplayed by prepare_menu_bar. While it is nonzero, all calls to set_frame_menubar go deep. *************** *** 279,504 **** return 0; } \f - /* Initialize the menu_items structure if we haven't already done so. - Also mark it as currently empty. */ - - static void - init_menu_items () - { - if (NILP (menu_items)) - { - menu_items_allocated = 60; - menu_items = Fmake_vector (make_number (menu_items_allocated), Qnil); - } - - menu_items_used = 0; - menu_items_n_panes = 0; - menu_items_submenu_depth = 0; - } - - /* Call at the end of generating the data in menu_items. - This fills in the number of items in the last pane. */ - - static void - finish_menu_items () - { - } - - /* Call when finished using the data for the current menu - in menu_items. */ - - static void - discard_menu_items () - { - /* Free the structure if it is especially large. - Otherwise, hold on to it, to save time. */ - if (menu_items_allocated > 200) - { - menu_items = Qnil; - menu_items_allocated = 0; - } - } - - /* Make the menu_items vector twice as large. */ - - static void - grow_menu_items () - { - menu_items_allocated *= 2; - menu_items = larger_vector (menu_items, menu_items_allocated, Qnil); - } - - /* Begin a submenu. */ - - static void - push_submenu_start () - { - if (menu_items_used + 1 > menu_items_allocated) - grow_menu_items (); - - ASET (menu_items, menu_items_used, Qnil); - menu_items_used++; - menu_items_submenu_depth++; - } - - /* End a submenu. */ - - static void - push_submenu_end () - { - if (menu_items_used + 1 > menu_items_allocated) - grow_menu_items (); - - ASET (menu_items, menu_items_used, Qlambda); - menu_items_used++; - menu_items_submenu_depth--; - } - - /* Indicate boundary between left and right. */ - - static void - push_left_right_boundary () - { - if (menu_items_used + 1 > menu_items_allocated) - grow_menu_items (); - - ASET (menu_items, menu_items_used, Qquote); - menu_items_used++; - } - - /* Start a new menu pane in menu_items. - NAME is the pane name. PREFIX_VEC is a prefix key for this pane. */ - - static void - push_menu_pane (name, prefix_vec) - Lisp_Object name, prefix_vec; - { - if (menu_items_used + MENU_ITEMS_PANE_LENGTH > menu_items_allocated) - grow_menu_items (); - - if (menu_items_submenu_depth == 0) - menu_items_n_panes++; - ASET (menu_items, menu_items_used, Qt); menu_items_used++; - ASET (menu_items, menu_items_used, name); menu_items_used++; - ASET (menu_items, menu_items_used, prefix_vec); menu_items_used++; - } - - /* Push one menu item into the current pane. NAME is the string to - display. ENABLE if non-nil means this item can be selected. KEY - is the key generated by choosing this item, or nil if this item - doesn't really have a definition. DEF is the definition of this - item. EQUIV is the textual description of the keyboard equivalent - for this item (or nil if none). TYPE is the type of this menu - item, one of nil, `toggle' or `radio'. */ - - static void - push_menu_item (name, enable, key, def, equiv, type, selected, help) - Lisp_Object name, enable, key, def, equiv, type, selected, help; - { - if (menu_items_used + MENU_ITEMS_ITEM_LENGTH > menu_items_allocated) - grow_menu_items (); - - ASET (menu_items, menu_items_used, name); menu_items_used++; - ASET (menu_items, menu_items_used, enable); menu_items_used++; - ASET (menu_items, menu_items_used, key); menu_items_used++; - ASET (menu_items, menu_items_used, equiv); menu_items_used++; - ASET (menu_items, menu_items_used, def); menu_items_used++; - ASET (menu_items, menu_items_used, type); menu_items_used++; - ASET (menu_items, menu_items_used, selected); menu_items_used++; - ASET (menu_items, menu_items_used, help); menu_items_used++; - } - \f - /* Look through KEYMAPS, a vector of keymaps that is NMAPS long, - and generate menu panes for them in menu_items. - If NOTREAL is nonzero, - don't bother really computing whether an item is enabled. */ - - static void - keymap_panes (keymaps, nmaps, notreal) - Lisp_Object *keymaps; - int nmaps; - int notreal; - { - int mapno; - - init_menu_items (); - - /* Loop over the given keymaps, making a pane for each map. - But don't make a pane that is empty--ignore that map instead. - P is the number of panes we have made so far. */ - for (mapno = 0; mapno < nmaps; mapno++) - single_keymap_panes (keymaps[mapno], - Fkeymap_prompt (keymaps[mapno]), Qnil, notreal, 10); - - finish_menu_items (); - } - - /* This is a recursive subroutine of keymap_panes. - It handles one keymap, KEYMAP. - The other arguments are passed along - or point to local variables of the previous function. - If NOTREAL is nonzero, only check for equivalent key bindings, don't - evaluate expressions in menu items and don't make any menu. - - If we encounter submenus deeper than MAXDEPTH levels, ignore them. */ - - static void - single_keymap_panes (keymap, pane_name, prefix, notreal, maxdepth) - Lisp_Object keymap; - Lisp_Object pane_name; - Lisp_Object prefix; - int notreal; - int maxdepth; - { - Lisp_Object pending_maps = Qnil; - Lisp_Object tail, item; - struct gcpro gcpro1, gcpro2; - - if (maxdepth <= 0) - return; - - push_menu_pane (pane_name, prefix); - - for (tail = keymap; CONSP (tail); tail = XCDR (tail)) - { - GCPRO2 (keymap, pending_maps); - /* Look at each key binding, and if it is a menu item add it - to this menu. */ - item = XCAR (tail); - if (CONSP (item)) - single_menu_item (XCAR (item), XCDR (item), - &pending_maps, notreal, maxdepth); - else if (VECTORP (item)) - { - /* Loop over the char values represented in the vector. */ - int len = ASIZE (item); - int c; - for (c = 0; c < len; c++) - { - Lisp_Object character; - XSETFASTINT (character, c); - single_menu_item (character, AREF (item, c), - &pending_maps, notreal, maxdepth); - } - } - UNGCPRO; - } - - /* Process now any submenus which want to be panes at this level. */ - while (!NILP (pending_maps)) - { - Lisp_Object elt, eltcdr, string; - elt = Fcar (pending_maps); - eltcdr = XCDR (elt); - string = XCAR (eltcdr); - /* We no longer discard the @ from the beginning of the string here. - Instead, we do this in w32_menu_show. */ - single_keymap_panes (Fcar (elt), string, - XCDR (eltcdr), notreal, maxdepth - 1); - pending_maps = Fcdr (pending_maps); - } - } - \f /* This is a subroutine of single_keymap_panes that handles one keymap entry. KEY is a key in a keymap and ITEM is its binding. --- 146,151 ---- *************** *** 564,621 **** } } \f - /* Push all the panes and items of a menu described by the - alist-of-alists MENU. - This handles old-fashioned calls to x-popup-menu. */ - - static void - list_of_panes (menu) - Lisp_Object menu; - { - Lisp_Object tail; - - init_menu_items (); - - for (tail = menu; CONSP (tail); tail = XCDR (tail)) - { - Lisp_Object elt, pane_name, pane_data; - elt = XCAR (tail); - pane_name = Fcar (elt); - CHECK_STRING (pane_name); - push_menu_pane (pane_name, Qnil); - pane_data = Fcdr (elt); - CHECK_CONS (pane_data); - list_of_items (pane_data); - } - - finish_menu_items (); - } - - /* Push the items in a single pane defined by the alist PANE. */ - - static void - list_of_items (pane) - Lisp_Object pane; - { - Lisp_Object tail, item, item1; - - for (tail = pane; CONSP (tail); tail = XCDR (tail)) - { - item = XCAR (tail); - if (STRINGP (item)) - push_menu_item (item, Qnil, Qnil, Qt, Qnil, Qnil, Qnil, Qnil); - else if (NILP (item)) - push_left_right_boundary (); - else - { - CHECK_CONS (item); - item1 = Fcar (item); - CHECK_STRING (item1); - push_menu_item (item1, Qt, Fcdr (item), Qt, Qnil, Qnil, Qnil, Qnil); - } - } - } - \f DEFUN ("x-popup-menu", Fx_popup_menu, Sx_popup_menu, 2, 2, 0, doc: /* Pop up a deck-of-cards menu and return user's selection. POSITION is a position specification. This is either a mouse button --- 211,216 ---- *************** *** 1091,1406 **** w32_free_menu_strings (FRAME_W32_WINDOW (f)); f->output_data.w32->menubar_active = 0; } - - /* Allocate a widget_value, blocking input. */ - - widget_value * - xmalloc_widget_value () - { - widget_value *value; - - BLOCK_INPUT; - value = malloc_widget_value (); - UNBLOCK_INPUT; - - return value; - } - - /* This recursively calls free_widget_value on the tree of widgets. - It must free all data that was malloc'ed for these widget_values. - In Emacs, many slots are pointers into the data of Lisp_Strings, and - must be left alone. */ - - void - free_menubar_widget_value_tree (wv) - widget_value *wv; - { - if (! wv) return; - - wv->name = wv->value = wv->key = (char *) 0xDEADBEEF; - - if (wv->contents && (wv->contents != (widget_value*)1)) - { - free_menubar_widget_value_tree (wv->contents); - wv->contents = (widget_value *) 0xDEADBEEF; - } - if (wv->next) - { - free_menubar_widget_value_tree (wv->next); - wv->next = (widget_value *) 0xDEADBEEF; - } - BLOCK_INPUT; - free_widget_value (wv); - UNBLOCK_INPUT; - } - \f - /* Set up data i menu_items for a menu bar item - whose event type is ITEM_KEY (with string ITEM_NAME) - and whose contents come from the list of keymaps MAPS. */ - - static int - parse_single_submenu (item_key, item_name, maps) - Lisp_Object item_key, item_name, maps; - { - Lisp_Object length; - int len; - Lisp_Object *mapvec; - int i; - int top_level_items = 0; - - length = Flength (maps); - len = XINT (length); - - /* Convert the list MAPS into a vector MAPVEC. */ - mapvec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object)); - for (i = 0; i < len; i++) - { - mapvec[i] = Fcar (maps); - maps = Fcdr (maps); - } - - /* Loop over the given keymaps, making a pane for each map. - But don't make a pane that is empty--ignore that map instead. */ - for (i = 0; i < len; i++) - { - if (SYMBOLP (mapvec[i]) - || (CONSP (mapvec[i]) && !KEYMAPP (mapvec[i]))) - { - /* Here we have a command at top level in the menu bar - as opposed to a submenu. */ - top_level_items = 1; - push_menu_pane (Qnil, Qnil); - push_menu_item (item_name, Qt, item_key, mapvec[i], - Qnil, Qnil, Qnil, Qnil); - } - else - { - Lisp_Object prompt; - prompt = Fkeymap_prompt (mapvec[i]); - single_keymap_panes (mapvec[i], - !NILP (prompt) ? prompt : item_name, - item_key, 0, 10); - } - } - - return top_level_items; - } - - - /* Create a tree of widget_value objects - representing the panes and items - in menu_items starting at index START, up to index END. */ - - static widget_value * - digest_single_submenu (start, end, top_level_items) - int start, end, top_level_items; - { - widget_value *wv, *prev_wv, *save_wv, *first_wv; - int i; - int submenu_depth = 0; - widget_value **submenu_stack; - - submenu_stack - = (widget_value **) alloca (menu_items_used * sizeof (widget_value *)); - wv = xmalloc_widget_value (); - wv->name = "menu"; - wv->value = 0; - wv->enabled = 1; - wv->button_type = BUTTON_TYPE_NONE; - wv->help = Qnil; - first_wv = wv; - save_wv = 0; - prev_wv = 0; - - /* Loop over all panes and items made by the preceding call - to parse_single_submenu and construct a tree of widget_value objects. - Ignore the panes and items used by previous calls to - digest_single_submenu, even though those are also in menu_items. */ - i = start; - while (i < end) - { - if (EQ (AREF (menu_items, i), Qnil)) - { - submenu_stack[submenu_depth++] = save_wv; - save_wv = prev_wv; - prev_wv = 0; - i++; - } - else if (EQ (AREF (menu_items, i), Qlambda)) - { - prev_wv = save_wv; - save_wv = submenu_stack[--submenu_depth]; - i++; - } - else if (EQ (AREF (menu_items, i), Qt) - && submenu_depth != 0) - i += MENU_ITEMS_PANE_LENGTH; - /* Ignore a nil in the item list. - It's meaningful only for dialog boxes. */ - else if (EQ (AREF (menu_items, i), Qquote)) - i += 1; - else if (EQ (AREF (menu_items, i), Qt)) - { - /* Create a new pane. */ - Lisp_Object pane_name, prefix; - char *pane_string; - - pane_name = AREF (menu_items, i + MENU_ITEMS_PANE_NAME); - prefix = AREF (menu_items, i + MENU_ITEMS_PANE_PREFIX); - - if (STRINGP (pane_name)) - { - if (unicode_append_menu) - /* Encode as UTF-8 for now. */ - pane_name = ENCODE_UTF_8 (pane_name); - else if (STRING_MULTIBYTE (pane_name)) - pane_name = ENCODE_SYSTEM (pane_name); - - ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name); - } - - pane_string = (NILP (pane_name) - ? "" : (char *) SDATA (pane_name)); - /* If there is just one top-level pane, put all its items directly - under the top-level menu. */ - if (menu_items_n_panes == 1) - pane_string = ""; - - /* If the pane has a meaningful name, - make the pane a top-level menu item - with its items as a submenu beneath it. */ - if (strcmp (pane_string, "")) - { - wv = xmalloc_widget_value (); - if (save_wv) - save_wv->next = wv; - else - first_wv->contents = wv; - wv->lname = pane_name; - /* Set value to 1 so update_submenu_strings can handle '@' */ - wv->value = (char *) 1; - wv->enabled = 1; - wv->button_type = BUTTON_TYPE_NONE; - wv->help = Qnil; - } - save_wv = wv; - prev_wv = 0; - i += MENU_ITEMS_PANE_LENGTH; - } - else - { - /* Create a new item within current pane. */ - Lisp_Object item_name, enable, descrip, def, type, selected; - Lisp_Object help; - - item_name = AREF (menu_items, i + MENU_ITEMS_ITEM_NAME); - enable = AREF (menu_items, i + MENU_ITEMS_ITEM_ENABLE); - descrip = AREF (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY); - def = AREF (menu_items, i + MENU_ITEMS_ITEM_DEFINITION); - type = AREF (menu_items, i + MENU_ITEMS_ITEM_TYPE); - selected = AREF (menu_items, i + MENU_ITEMS_ITEM_SELECTED); - help = AREF (menu_items, i + MENU_ITEMS_ITEM_HELP); - - if (STRINGP (item_name)) - { - if (unicode_append_menu) - item_name = ENCODE_UTF_8 (item_name); - else if (STRING_MULTIBYTE (item_name)) - item_name = ENCODE_SYSTEM (item_name); - - ASET (menu_items, i + MENU_ITEMS_ITEM_NAME, item_name); - } - - if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) - { - descrip = ENCODE_SYSTEM (descrip); - ASET (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY, descrip); - } - - wv = xmalloc_widget_value (); - if (prev_wv) - prev_wv->next = wv; - else - save_wv->contents = wv; - - wv->lname = item_name; - if (!NILP (descrip)) - wv->lkey = descrip; - wv->value = 0; - /* The EMACS_INT cast avoids a warning. There's no problem - as long as pointers have enough bits to hold small integers. */ - wv->call_data = (!NILP (def) ? (void *) (EMACS_INT) i : 0); - wv->enabled = !NILP (enable); - - if (NILP (type)) - wv->button_type = BUTTON_TYPE_NONE; - else if (EQ (type, QCradio)) - wv->button_type = BUTTON_TYPE_RADIO; - else if (EQ (type, QCtoggle)) - wv->button_type = BUTTON_TYPE_TOGGLE; - else - abort (); - - wv->selected = !NILP (selected); - if (!STRINGP (help)) - help = Qnil; - - wv->help = help; - - prev_wv = wv; - - i += MENU_ITEMS_ITEM_LENGTH; - } - } - - /* If we have just one "menu item" - that was originally a button, return it by itself. */ - if (top_level_items && first_wv->contents && first_wv->contents->next == 0) - { - wv = first_wv->contents; - free_widget_value (first_wv); - return wv; - } - - return first_wv; - } - - - /* Walk through the widget_value tree starting at FIRST_WV and update - the char * pointers from the corresponding lisp values. - We do this after building the whole tree, since GC may happen while the - tree is constructed, and small strings are relocated. So we must wait - until no GC can happen before storing pointers into lisp values. */ - static void - update_submenu_strings (first_wv) - widget_value *first_wv; - { - widget_value *wv; - - for (wv = first_wv; wv; wv = wv->next) - { - if (wv->lname && ! NILP (wv->lname)) - { - wv->name = SDATA (wv->lname); - - /* Ignore the @ that means "separate pane". - This is a kludge, but this isn't worth more time. */ - if (wv->value == (char *)1) - { - if (wv->name[0] == '@') - wv->name++; - wv->value = 0; - } - } - - if (wv->lkey && ! NILP (wv->lkey)) - wv->key = SDATA (wv->lkey); - - if (wv->contents) - update_submenu_strings (wv->contents); - } - } - \f /* Set the contents of the menubar widgets of frame F. The argument FIRST_TIME is currently ignored; --- 686,691 ---- ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-04 1:44 NeXTstep (GNUstep/Cocoa) port and merging Adrian Robert 2008-06-04 2:34 ` Stefan Monnier @ 2008-06-04 16:02 ` Sean O'Rourke 2008-06-07 12:21 ` Thomas Christensen 2008-06-14 17:04 ` Sean O'Rourke 3 siblings, 0 replies; 22+ messages in thread From: Sean O'Rourke @ 2008-06-04 16:02 UTC (permalink / raw) To: emacs-devel Adrian Robert <adrian.b.robert@gmail.com> writes: > 1) wget 'http://bzr.notengoamigos.org/emacs.tar.gz' FYI, this is double-gzipped. Sean ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-04 1:44 NeXTstep (GNUstep/Cocoa) port and merging Adrian Robert 2008-06-04 2:34 ` Stefan Monnier 2008-06-04 16:02 ` Sean O'Rourke @ 2008-06-07 12:21 ` Thomas Christensen 2008-06-08 4:08 ` İsmail Dönmez 2008-06-14 17:04 ` Sean O'Rourke 3 siblings, 1 reply; 22+ messages in thread From: Thomas Christensen @ 2008-06-07 12:21 UTC (permalink / raw) To: emacs-devel Adrian Robert <adrian.b.robert@gmail.com> writes: > One of the possible new "features" for the 23 release is the NeXTstep > port known as Emacs.app, that runs (usually) on GNUstep as well as Mac > OS X. I am *very* happy about this. It works perfectly on OS X 10.5.3; but I get this on GNUstep: bootstrap-emacs: /scratch/packages/gcc/4.3/gcc-4.3-4.3.0/src/libobjc/sendmsg.c:321: __objc_init_install_dtable: Assertion `(((Class)receiver)&&(((((Class)receiver)->info)&0x1L)==0x1L))' failed. This is Debian sid, with GNUstep installed into standard location from the SVN source of today. Only local change is an added bootstrap option to make in nextstep/compile. Thomas ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-07 12:21 ` Thomas Christensen @ 2008-06-08 4:08 ` İsmail Dönmez 2008-06-08 12:18 ` Thomas Christensen 0 siblings, 1 reply; 22+ messages in thread From: İsmail Dönmez @ 2008-06-08 4:08 UTC (permalink / raw) To: Thomas Christensen; +Cc: emacs-devel Hi, On Sat, Jun 7, 2008 at 3:21 PM, Thomas Christensen <thomasc@thomaschristensen.org> wrote: > Adrian Robert <adrian.b.robert@gmail.com> writes: > >> One of the possible new "features" for the 23 release is the NeXTstep >> port known as Emacs.app, that runs (usually) on GNUstep as well as Mac >> OS X. > > I am *very* happy about this. > > It works perfectly on OS X 10.5.3; but I get this on GNUstep: > > bootstrap-emacs: /scratch/packages/gcc/4.3/gcc-4.3-4.3.0/src/libobjc/sendmsg.c:321: __objc_init_install_dtable: Assertion `(((Class)receiver)&&(((((Class)receiver)->info)&0x1L)==0x1L))' failed. Thats a gcc bug please report it to Debian and/or GCC bugzilla. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-08 4:08 ` İsmail Dönmez @ 2008-06-08 12:18 ` Thomas Christensen 2008-06-08 12:25 ` İsmail Dönmez 0 siblings, 1 reply; 22+ messages in thread From: Thomas Christensen @ 2008-06-08 12:18 UTC (permalink / raw) To: İsmail Dönmez; +Cc: emacs-devel "İsmail Dönmez" <ismail@namtrac.org> writes: >> bootstrap-emacs: /scratch/packages/gcc/4.3/gcc-4.3-4.3.0/src/libobjc/sendmsg.c:321: __objc_init_install_dtable: Assertion `(((Class)receiver)&&(((((Class)receiver)->info)&0x1L)==0x1L))' failed. > > Thats a gcc bug please report it to Debian and/or GCC bugzilla. Before I do, I tried to compile with gcc-4.2 as well. Same libobjc2 though. I get: 2008-06-08 14:08:47.633 bootstrap-emacs[9767] autorelease called without pool for object (99ab1c8) of class NSMethodSignature in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (9a007c8) of class GSAutoreleasedMemory in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (99aba08) of class NSMethodSignature in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (99e5580) of class GSFFIInvocation in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99db268) of class GSCInlineString in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99effb8) of class NSException in thread <NSThread: 0x9997438> 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99eff68) of class GSMutableArray in thread <NSThread: 0x9997438> ../src/bootstrap-emacs: Uncaught exception NSInvalidArgumentException, reason: NSAutoreleasePool(class) does not recognize (null) So the assertion of 4.3 may be a bug; but something else is afoot too I think. If you still think it will be good to notify Debian or GCC I will. Thomas ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-08 12:18 ` Thomas Christensen @ 2008-06-08 12:25 ` İsmail Dönmez 0 siblings, 0 replies; 22+ messages in thread From: İsmail Dönmez @ 2008-06-08 12:25 UTC (permalink / raw) To: Thomas Christensen; +Cc: emacs-devel Hi, On Sun, Jun 8, 2008 at 3:18 PM, Thomas Christensen <thomasc@thomaschristensen.org> wrote: > "İsmail Dönmez" <ismail@namtrac.org> writes: > >>> bootstrap-emacs: /scratch/packages/gcc/4.3/gcc-4.3-4.3.0/src/libobjc/sendmsg.c:321: __objc_init_install_dtable: Assertion `(((Class)receiver)&&(((((Class)receiver)->info)&0x1L)==0x1L))' failed. >> >> Thats a gcc bug please report it to Debian and/or GCC bugzilla. > > Before I do, I tried to compile with gcc-4.2 as well. Same libobjc2 > though. > > I get: > > 2008-06-08 14:08:47.633 bootstrap-emacs[9767] autorelease called without pool for object (99ab1c8) of class NSMethodSignature in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (9a007c8) of class GSAutoreleasedMemory in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (99aba08) of class NSMethodSignature in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.660 bootstrap-emacs[9767] autorelease called without pool for object (99e5580) of class GSFFIInvocation in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99db268) of class GSCInlineString in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99effb8) of class NSException in thread <NSThread: 0x9997438> > 2008-06-08 14:08:47.661 bootstrap-emacs[9767] autorelease called without pool for object (99eff68) of class GSMutableArray in thread <NSThread: 0x9997438> > ../src/bootstrap-emacs: Uncaught exception NSInvalidArgumentException, reason: NSAutoreleasePool(class) does not recognize (null) > > So the assertion of 4.3 may be a bug; but something else is afoot too I > think. This indeed looks like another issue. > If you still think it will be good to notify Debian or GCC I will. GCC 4.3 bug still stands though, its a good idea to report it. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-04 1:44 NeXTstep (GNUstep/Cocoa) port and merging Adrian Robert ` (2 preceding siblings ...) 2008-06-07 12:21 ` Thomas Christensen @ 2008-06-14 17:04 ` Sean O'Rourke 2008-06-14 17:07 ` İsmail Dönmez 3 siblings, 1 reply; 22+ messages in thread From: Sean O'Rourke @ 2008-06-14 17:04 UTC (permalink / raw) To: emacs-devel Adrian Robert <adrian.b.robert@gmail.com> writes: > 3) for a read-only version: > > bzr get http://arch.sv.gnu.org/archives/emacs/bzr/emacs.app Is it just me, or is there nothing at this URL? I thought it might be a temporary outage at first, but this still looks like an empty directory. Does anyone know where the real Emacs.app branch lives? Thanks, Sean ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-14 17:04 ` Sean O'Rourke @ 2008-06-14 17:07 ` İsmail Dönmez 2008-06-14 17:21 ` Sean O'Rourke 0 siblings, 1 reply; 22+ messages in thread From: İsmail Dönmez @ 2008-06-14 17:07 UTC (permalink / raw) To: Sean O'Rourke; +Cc: emacs-devel Hi, On Sat, Jun 14, 2008 at 8:04 PM, Sean O'Rourke <seano@cs.ucla.edu> wrote: > Adrian Robert <adrian.b.robert@gmail.com> writes: >> 3) for a read-only version: >> >> bzr get http://arch.sv.gnu.org/archives/emacs/bzr/emacs.app > > Is it just me, or is there nothing at this URL? I thought it > might be a temporary outage at first, but this still looks like > an empty directory. Does anyone know where the real Emacs.app > branch lives? You won't see anything on the web, you need to clone it with bzr first and work on that repository. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-14 17:07 ` İsmail Dönmez @ 2008-06-14 17:21 ` Sean O'Rourke 2008-06-14 17:22 ` İsmail Dönmez 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier 0 siblings, 2 replies; 22+ messages in thread From: Sean O'Rourke @ 2008-06-14 17:21 UTC (permalink / raw) To: İsmail Dönmez; +Cc: emacs-devel "İsmail Dönmez" <ismail@namtrac.org> writes: > Hi, > > On Sat, Jun 14, 2008 at 8:04 PM, Sean O'Rourke <seano@cs.ucla.edu> wrote: >> Adrian Robert <adrian.b.robert@gmail.com> writes: >>> 3) for a read-only version: >>> >>> bzr get http://arch.sv.gnu.org/archives/emacs/bzr/emacs.app >> >> Is it just me, or is there nothing at this URL? I thought it >> might be a temporary outage at first, but this still looks like >> an empty directory. Does anyone know where the real Emacs.app >> branch lives? > > You won't see anything on the web, you need to clone it with bzr first > and work on that repository. Hm... Here's what I see when following Adrian's directions (mostly -- bzr doesn't handle the HTTP redirect): $ pwd /Users/seano/src/emacs/branches $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ bzr: ERROR: Transport error: Server refuses to fullfil the request $ bzr --version Bazaar (bzr) 1.5 Python interpreter: /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python 2.5.1 Python standard library: /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 bzrlib: /Library/Python/2.5/site-packages/bzrlib Bazaar configuration: /Users/seano/.bazaar Bazaar log file: /Users/seano/.bzr.log Does this work for others? Sean ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-14 17:21 ` Sean O'Rourke @ 2008-06-14 17:22 ` İsmail Dönmez 2008-06-14 17:41 ` Sean O'Rourke 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier 1 sibling, 1 reply; 22+ messages in thread From: İsmail Dönmez @ 2008-06-14 17:22 UTC (permalink / raw) To: Sean O'Rourke; +Cc: emacs-devel Hi, On Sat, Jun 14, 2008 at 8:21 PM, Sean O'Rourke <seano@cs.ucla.edu> wrote: > "İsmail Dönmez" <ismail@namtrac.org> writes: > >> Hi, >> >> On Sat, Jun 14, 2008 at 8:04 PM, Sean O'Rourke <seano@cs.ucla.edu> wrote: >>> Adrian Robert <adrian.b.robert@gmail.com> writes: >>>> 3) for a read-only version: >>>> >>>> bzr get http://arch.sv.gnu.org/archives/emacs/bzr/emacs.app >>> >>> Is it just me, or is there nothing at this URL? I thought it >>> might be a temporary outage at first, but this still looks like >>> an empty directory. Does anyone know where the real Emacs.app >>> branch lives? >> >> You won't see anything on the web, you need to clone it with bzr first >> and work on that repository. > > Hm... Here's what I see when following Adrian's directions > (mostly -- bzr doesn't handle the HTTP redirect): > > $ pwd > /Users/seano/src/emacs/branches > $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ > bzr: ERROR: Transport error: Server refuses to fullfil the request > $ bzr --version > Bazaar (bzr) 1.5 > Python interpreter: /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python 2.5.1 > Python standard library: /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 > bzrlib: /Library/Python/2.5/site-packages/bzrlib > Bazaar configuration: /Users/seano/.bazaar > Bazaar log file: /Users/seano/.bzr.log > > Does this work for others? You'll have to patch bzr, Google for that error. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: NeXTstep (GNUstep/Cocoa) port and merging 2008-06-14 17:22 ` İsmail Dönmez @ 2008-06-14 17:41 ` Sean O'Rourke 0 siblings, 0 replies; 22+ messages in thread From: Sean O'Rourke @ 2008-06-14 17:41 UTC (permalink / raw) To: İsmail Dönmez; +Cc: emacs-devel "İsmail Dönmez" <ismail@namtrac.org> writes: > On Sat, Jun 14, 2008 at 8:21 PM, Sean O'Rourke <seano@cs.ucla.edu> wrote: >> $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ >> bzr: ERROR: Transport error: Server refuses to fullfil the request >> [...] >> Does this work for others? > > You'll have to patch bzr, Google for that error. The patch I found doesn't apply cleanly against 1.5: https://lists.ubuntu.com/archives/bazaar/2007q1/022319.html Is there a non-broken version of bzr somewhere? I'll try this stuff again when I have some more time. Man, I miss the "actually working" feature of CVS sometimes... Sean ^ permalink raw reply [flat|nested] 22+ messages in thread
* Bazaar and savannah don't like each other 2008-06-14 17:21 ` Sean O'Rourke 2008-06-14 17:22 ` İsmail Dönmez @ 2008-06-14 17:59 ` Stefan Monnier 2008-06-14 18:06 ` Sean O'Rourke ` (4 more replies) 1 sibling, 5 replies; 22+ messages in thread From: Stefan Monnier @ 2008-06-14 17:59 UTC (permalink / raw) To: savannah-hackers, bazaar; +Cc: Sean O'Rourke, emacs-devel > $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ > bzr: ERROR: Transport error: Server refuses to fullfil the request > $ bzr --version > Bazaar (bzr) 1.5 I thought it had been resolved in bzr-1.4 or thereabout, but it appears this is not the case (or maybe it's a new problem). Can we figure out whose fault it is and/or who's going to adapt so that the two can work together? Stefan PS: Of course, when I try it, the above works fine (tho very slow). ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Bazaar and savannah don't like each other 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier @ 2008-06-14 18:06 ` Sean O'Rourke 2008-06-14 18:11 ` İsmail Dönmez ` (3 subsequent siblings) 4 siblings, 0 replies; 22+ messages in thread From: Sean O'Rourke @ 2008-06-14 18:06 UTC (permalink / raw) To: Stefan Monnier; +Cc: bazaar, savannah-hackers, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ >> bzr: ERROR: Transport error: Server refuses to fullfil the request >> $ bzr --version >> Bazaar (bzr) 1.5 > > I thought it had been resolved in bzr-1.4 or thereabout, but it appears > this is not the case (or maybe it's a new problem). Can we figure out > whose fault it is and/or who's going to adapt so that the two can > work together? Ismail's one-line patch makes hurting stop for me: http://www.mail-archive.com/emacs-app-dev-@lists.sourceforge.net/msg00500.html > PS: Of course, when I try it, the above works fine (tho very slow). Heh. Less than 10 minutes in my case, which is "instantaneous" in Bazaar time... Sean ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Bazaar and savannah don't like each other 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier 2008-06-14 18:06 ` Sean O'Rourke @ 2008-06-14 18:11 ` İsmail Dönmez 2008-06-14 18:20 ` James Westby ` (2 subsequent siblings) 4 siblings, 0 replies; 22+ messages in thread From: İsmail Dönmez @ 2008-06-14 18:11 UTC (permalink / raw) To: Stefan Monnier; +Cc: bazaar, savannah-hackers, Sean O'Rourke, emacs-devel Hi, On Sat, Jun 14, 2008 at 8:59 PM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ >> bzr: ERROR: Transport error: Server refuses to fullfil the request >> $ bzr --version >> Bazaar (bzr) 1.5 > > I thought it had been resolved in bzr-1.4 or thereabout, but it appears > this is not the case (or maybe it's a new problem). Can we figure out > whose fault it is and/or who's going to adapt so that the two can > work together? > > > Stefan > > > PS: Of course, when I try it, the above works fine (tho very slow). This is getting really silly btw, just because bzr is a GNU project doesn't mean Emacs have to use it though its slow and well doesn't even work with GNU's own Savannah! GIT is Free Software too and its just way faster than bzr. We really have to stop being political about this and use the best _free software_ technology available today which is GIT for distributed development. Sorry for the rant but I am fed up with this, on my 2GB RAM laptop bzr goes out of memory when cloning emacs.app repo thats just insane. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Bazaar and savannah don't like each other 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier 2008-06-14 18:06 ` Sean O'Rourke 2008-06-14 18:11 ` İsmail Dönmez @ 2008-06-14 18:20 ` James Westby 2008-06-14 18:22 ` James Westby 2008-06-15 9:05 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] Sylvain Beucler 4 siblings, 0 replies; 22+ messages in thread From: James Westby @ 2008-06-14 18:20 UTC (permalink / raw) To: Stefan Monnier; +Cc: bazaar, savannah-hackers, Sean O'Rourke, emacs-devel On Sat, 2008-06-14 at 13:59 -0400, Stefan Monnier wrote: > > $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ > > bzr: ERROR: Transport error: Server refuses to fullfil the request > > $ bzr --version > > Bazaar (bzr) 1.5 > > I thought it had been resolved in bzr-1.4 or thereabout, but it appears > this is not the case (or maybe it's a new problem). Can we figure out > whose fault it is and/or who's going to adapt so that the two can > work together? > https://bugs.edge.launchpad.net/bzr/+bug/230223 is the original bug report. This may well be a different cause though. Is there a proxy in between you and the server? Could you provide the relevant section of your ~/.bzr.log from after running bzr -Dhpss -Dhttp get \ http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ please? Thanks, James ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Bazaar and savannah don't like each other 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier ` (2 preceding siblings ...) 2008-06-14 18:20 ` James Westby @ 2008-06-14 18:22 ` James Westby 2008-06-15 9:05 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] Sylvain Beucler 4 siblings, 0 replies; 22+ messages in thread From: James Westby @ 2008-06-14 18:22 UTC (permalink / raw) To: Stefan Monnier; +Cc: bazaar, savannah-hackers, Sean O'Rourke, emacs-devel On Sat, 2008-06-14 at 13:59 -0400, Stefan Monnier wrote: > > $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ > > bzr: ERROR: Transport error: Server refuses to fullfil the request > > $ bzr --version > > Bazaar (bzr) 1.5 > > I thought it had been resolved in bzr-1.4 or thereabout, but it appears > this is not the case (or maybe it's a new problem). Can we figure out > whose fault it is and/or who's going to adapt so that the two can > work together? Ah, looking at the activity log of the bug shows that the milestone was set to 1.6 when it was set to "Fix Released", so this may just be fixed in bzr.dev. As the bug says you should be able to use "nosmart+http://..." to work around the problem. Thanks, James ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier ` (3 preceding siblings ...) 2008-06-14 18:22 ` James Westby @ 2008-06-15 9:05 ` Sylvain Beucler 2008-06-15 9:12 ` Lennart Borgman (gmail) 2008-06-16 2:32 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting Stefan Monnier 4 siblings, 2 replies; 22+ messages in thread From: Sylvain Beucler @ 2008-06-15 9:05 UTC (permalink / raw) To: Stefan Monnier; +Cc: savannah-hackers, emacs-devel On Sat, Jun 14, 2008 at 01:59:43PM -0400, Stefan Monnier wrote: > > $ bzr get http://arch.savannah.gnu.org/archives/emacs/bzr/emacs.app/ > > bzr: ERROR: Transport error: Server refuses to fullfil the request > > $ bzr --version > > Bazaar (bzr) 1.5 > > I thought it had been resolved in bzr-1.4 or thereabout, but it appears > this is not the case (or maybe it's a new problem). Can we figure out > whose fault it is and/or who's going to adapt so that the two can > work together? > > > Stefan > > > PS: Of course, when I try it, the above works fine (tho very slow). Please note that bzr repositories are not to be uploaded in the GNU Arch subsystem, and are not supported there. If you want to use bzr at Savannah, we're looking for beta-testers (I think I had mentioned this to you some times ago). (Plus, sftp access is so slow that it is bad advertising for bzr ;)) -- Sylvain ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] 2008-06-15 9:05 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] Sylvain Beucler @ 2008-06-15 9:12 ` Lennart Borgman (gmail) 2008-06-16 2:32 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting Stefan Monnier 1 sibling, 0 replies; 22+ messages in thread From: Lennart Borgman (gmail) @ 2008-06-15 9:12 UTC (permalink / raw) To: Stefan Monnier, savannah-hackers, emacs-devel Sylvain Beucler wrote: > (Plus, sftp access is so slow that it is bad advertising for bzr ;)) What is the problem with sftp? I know nothing about this but I searched and found a message on CPAN saying sftp would be faster if Math::BigInt::GMP was installed: http://www.cpanforum.com/posts/3778 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Savannah-help-public] Bazaar does not fit in GNU Arch hosting 2008-06-15 9:05 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] Sylvain Beucler 2008-06-15 9:12 ` Lennart Borgman (gmail) @ 2008-06-16 2:32 ` Stefan Monnier 1 sibling, 0 replies; 22+ messages in thread From: Stefan Monnier @ 2008-06-16 2:32 UTC (permalink / raw) To: savannah-hackers; +Cc: emacs-devel > Please note that bzr repositories are not to be uploaded in the GNU > Arch subsystem, and are not supported there. That's OK, it's just part of the experimentation with Bzr, it doesn't need to be supported. > If you want to use bzr at Savannah, we're looking for beta-testers > (I think I had mentioned this to you some times ago). Yes, I remember you offering that, and I stiall may take you up on this. > (Plus, sftp access is so slow that it is bad advertising for bzr ;)) Actually, my experience and the impression I get also from reading the bazaar list is that the sftp access is sometimes slower sometimes faster. Stefan ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2008-06-16 2:32 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-06-04 1:44 NeXTstep (GNUstep/Cocoa) port and merging Adrian Robert 2008-06-04 2:34 ` Stefan Monnier 2008-06-08 0:29 ` Chong Yidong 2008-06-08 4:48 ` Chong Yidong 2008-06-04 16:02 ` Sean O'Rourke 2008-06-07 12:21 ` Thomas Christensen 2008-06-08 4:08 ` İsmail Dönmez 2008-06-08 12:18 ` Thomas Christensen 2008-06-08 12:25 ` İsmail Dönmez 2008-06-14 17:04 ` Sean O'Rourke 2008-06-14 17:07 ` İsmail Dönmez 2008-06-14 17:21 ` Sean O'Rourke 2008-06-14 17:22 ` İsmail Dönmez 2008-06-14 17:41 ` Sean O'Rourke 2008-06-14 17:59 ` Bazaar and savannah don't like each other Stefan Monnier 2008-06-14 18:06 ` Sean O'Rourke 2008-06-14 18:11 ` İsmail Dönmez 2008-06-14 18:20 ` James Westby 2008-06-14 18:22 ` James Westby 2008-06-15 9:05 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting [Was: Bazaar and savannah don't like each other] Sylvain Beucler 2008-06-15 9:12 ` Lennart Borgman (gmail) 2008-06-16 2:32 ` [Savannah-help-public] Bazaar does not fit in GNU Arch hosting Stefan Monnier
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).