Now on revision 111385. ------------------------------------------------------------ revno: 111385 committer: Stefan Monnier branch nick: trunk timestamp: Sun 2012-12-30 23:43:35 -0500 message: * lisp/subr.el (special-form-p): Don't signal errors on undef aliases. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-31 02:58:57 +0000 +++ lisp/ChangeLog 2012-12-31 04:43:35 +0000 @@ -1,8 +1,12 @@ +2012-12-31 Stefan Monnier + + * subr.el (special-form-p): Don't signal errors on undef aliases. + 2012-12-31 Jay Belanger * calc/calc-forms.el (math-parse-date): Try using - `math-parse-iso-date' when it looks like it might be needed. Allow - times of 24:00. + `math-parse-iso-date' when it looks like it might be needed. + Allow times of 24:00. (math-parse-date-validate, math-parse-iso-date-validate): Allow times of 24:00. @@ -25,8 +29,8 @@ 2012-12-30 Mark Lillibridge - * mail/rmailmm.el (rmail-insert-mime-forwarded-message): Insert - the undecoded text of the message being forwarded. (Bug#9521) + * mail/rmailmm.el (rmail-insert-mime-forwarded-message): + Insert the undecoded text of the message being forwarded. (Bug#9521) 2012-12-30 Michael Albinus @@ -36,8 +40,8 @@ * net/tramp-sh.el (tramp-sh-handle-set-file-selinux-context): Return `t' on success. - * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add - handler for `set-file-selinux-context'. + * net/tramp-smb.el (tramp-smb-file-name-handler-alist): + Add handler for `set-file-selinux-context'. 2012-12-29 Michael Albinus @@ -46,8 +50,8 @@ 2012-12-29 Eli Zaretskii - * files.el (backup-buffer-copy, basic-save-buffer-2): If - set-file-extended-attributes fails, fall back on set-file-modes + * files.el (backup-buffer-copy, basic-save-buffer-2): + If set-file-extended-attributes fails, fall back on set-file-modes instead of signaling an error. (Bug#13298) (basic-save-buffer): Likewise. @@ -75,8 +79,8 @@ 2012-12-28 Martin Rudalics - * mail/rmail.el (rmail-maybe-display-summary): Rewrite - (Bug#13066). + * mail/rmail.el (rmail-maybe-display-summary): + Rewrite (Bug#13066). 2012-12-28 Andreas Schwab @@ -131,8 +135,8 @@ 2012-12-27 Dmitry Gutov * progmodes/ruby-mode.el (ruby-indent-beg-re): Only allow "class", - "module" and "def" to have indentation before them. Regression - from revno:109911 (see the new test). + "module" and "def" to have indentation before them. + Regression from revno:109911 (see the new test). * progmodes/ruby-mode.el: Bump the version to 1.2 (Bug#13200). @@ -145,8 +149,8 @@ 2012-12-27 Vitalie Spinu (tiny change) * comint.el (comint-adjust-window-point): New function. - (comint-postoutput-scroll-to-bottom): Call - comint-adjust-window-point (Bug#13248). + (comint-postoutput-scroll-to-bottom): + Call comint-adjust-window-point (Bug#13248). 2012-12-26 Dmitry Gutov @@ -157,8 +161,8 @@ 2012-12-26 Jürgen Hötzel - * net/tramp-adb.el (tramp-adb-get-ls-command): New defun. Suppress - coloring, if possible (required for BusyBox based systems like + * net/tramp-adb.el (tramp-adb-get-ls-command): New defun. + Suppress coloring, if possible (required for BusyBox based systems like CynagenMod). (tramp-adb-handle-file-attributes) (tramp-adb-handle-insert-directory) @@ -187,8 +191,8 @@ * notifications.el (notifications-notify): Protect body with `with-demoted-errors'. - * net/tramp-adb.el (tramp-adb-maybe-open-connection): Check - properties of remote device. Restart connection, if there is a + * net/tramp-adb.el (tramp-adb-maybe-open-connection): + Check properties of remote device. Restart connection, if there is a change. 2012-12-21 Chong Yidong === modified file 'lisp/subr.el' --- lisp/subr.el 2012-12-10 12:08:02 +0000 +++ lisp/subr.el 2012-12-31 04:43:35 +0000 @@ -2805,7 +2805,7 @@ (defun special-form-p (object) "Non-nil if and only if OBJECT is a special form." (if (and (symbolp object) (fboundp object)) - (setq object (indirect-function object))) + (setq object (indirect-function object t))) (and (subrp object) (eq (cdr (subr-arity object)) 'unevalled))) (defun field-at-pos (pos) ------------------------------------------------------------ revno: 111384 committer: Jay Belanger branch nick: trunk timestamp: Sun 2012-12-30 20:58:57 -0600 message: * calc/calc-forms.el (math-parse-date): Try using `math-parse-iso-date' when it looks like it might be needed. Allow times of 24:00. (math-parse-date-validate, math-parse-iso-date-validate): Allow times of 24:00. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-30 18:09:01 +0000 +++ lisp/ChangeLog 2012-12-31 02:58:57 +0000 @@ -1,3 +1,11 @@ +2012-12-31 Jay Belanger + + * calc/calc-forms.el (math-parse-date): Try using + `math-parse-iso-date' when it looks like it might be needed. Allow + times of 24:00. + (math-parse-date-validate, math-parse-iso-date-validate): Allow times + of 24:00. + 2012-12-30 Glenn Morris * net/mairix.el (rmail, rmail-summary-displayed, rmail-summary): === modified file 'lisp/calc/calc-forms.el' --- lisp/calc/calc-forms.el 2012-12-11 02:37:36 +0000 +++ lisp/calc/calc-forms.el 2012-12-31 02:58:57 +0000 @@ -918,7 +918,7 @@ (catch 'syntax (or (math-parse-standard-date math-pd-str t) (math-parse-standard-date math-pd-str nil) - (and (or (memq 'IYYY calc-date-format) (memq 'Iww calc-date-format)) + (and (string-match "W[0-9][0-9]" math-pd-str) (math-parse-iso-date math-pd-str)) (and (string-match "\\`[^-+/0-9a-zA-Z]*\\([-+]?[0-9]+\\.?[0-9]*\\([eE][-+]?[0-9]+\\)?\\)[^-+/0-9a-zA-Z]*\\'" math-pd-str) (list 'date (math-read-number (math-match-substring math-pd-str 1)))) @@ -943,8 +943,12 @@ (setq second 0) (setq second (math-read-number second))) (if (equal ampm "") - (if (> hour 23) - (throw 'syntax "Hour value out of range")) + (if (or + (> hour 24) + (and (= hour 24) + (not (= minute 0)) + (not (eq second 0)))) + (throw 'syntax "Hour value is out of range")) (setq ampm (upcase (aref ampm 0))) (if (memq ampm '(?N ?M)) (if (and (= hour 12) (= minute 0) (eq second 0)) @@ -952,7 +956,7 @@ (throw 'syntax "Time must be 12:00:00 in this context")) (if (or (= hour 0) (> hour 12)) - (throw 'syntax "Hour value out of range")) + (throw 'syntax "Hour value is out of range")) (if (eq (= ampm ?A) (= hour 12)) (setq hour (% (+ hour 12) 24))))))) @@ -1075,7 +1079,11 @@ (throw 'syntax "Day value is out of range")) (and hour (progn - (if (or (< hour 0) (> hour 23)) + (if (or (< hour 0) + (> hour 24) + (and (= hour 24) + (not (= minute 0)) + (not (eq second 0)))) (throw 'syntax "Hour value is out of range")) (if (or (< minute 0) (> minute 59)) (throw 'syntax "Minute value is out of range")) @@ -1091,7 +1099,11 @@ (throw 'syntax "Weekday value is out of range")) (and hour (progn - (if (or (< hour 0) (> hour 23)) + (if (or (< hour 0) + (> hour 24) + (and (= hour 24) + (not (= minute 0)) + (not (eq second 0)))) (throw 'syntax "Hour value is out of range")) (if (or (< minute 0) (> minute 59)) (throw 'syntax "Minute value is out of range")) ------------------------------------------------------------ revno: 111383 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-12-30 13:34:39 -0800 message: * coding.c (Qmac): Now static. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-30 19:08:15 +0000 +++ src/ChangeLog 2012-12-30 21:34:39 +0000 @@ -1,3 +1,7 @@ +2012-12-30 Paul Eggert + + * coding.c (Qmac): Now static. + 2012-12-30 Jan Djärv * gtkutil.c (TOOLBAR_TOP_WIDGET): New macro. === modified file 'src/coding.c' --- src/coding.c 2012-12-26 09:40:45 +0000 +++ src/coding.c 2012-12-30 21:34:39 +0000 @@ -301,7 +301,8 @@ static Lisp_Object Qcoding_system, Qeol_type; static Lisp_Object Qcoding_aliases; -Lisp_Object Qunix, Qdos, Qmac; +Lisp_Object Qunix, Qdos; +static Lisp_Object Qmac; Lisp_Object Qbuffer_file_coding_system; static Lisp_Object Qpost_read_conversion, Qpre_write_conversion; static Lisp_Object Qdefault_char; === modified file 'src/coding.h' --- src/coding.h 2012-10-30 01:56:38 +0000 +++ src/coding.h 2012-12-30 21:34:39 +0000 @@ -767,7 +767,7 @@ extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided; extern Lisp_Object Qbuffer_file_coding_system; -extern Lisp_Object Qunix, Qdos, Qmac; +extern Lisp_Object Qunix, Qdos; extern Lisp_Object Qtranslation_table; extern Lisp_Object Qtranslation_table_id; ------------------------------------------------------------ revno: 111382 committer: Jan D. branch nick: trunk timestamp: Sun 2012-12-30 20:34:25 +0100 message: Silence Gtk deprecation warnings by default. * configure.ac: New enable: --enable-gtk-deprecation-warnings, default off. (HAVE_GTK3): If above enable is off, add -DGDK_DISABLE_DEPRECATION_WARNINGS to GTK_CFLAGS. diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-30 19:08:15 +0000 +++ ChangeLog 2012-12-30 19:34:25 +0000 @@ -2,6 +2,9 @@ * configure.ac: Check for GtkHandlebox. Check for GtkTearoffMenuItem. + New enable: --enable-gtk-deprecation-warnings, default off. + (HAVE_GTK3): If above enable is off, add + -DGDK_DISABLE_DEPRECATION_WARNINGS to GTK_CFLAGS. 2012-12-30 Andreas Schwab === modified file 'configure.ac' --- configure.ac 2012-12-30 19:08:15 +0000 +++ configure.ac 2012-12-30 19:34:25 +0000 @@ -359,6 +359,11 @@ found])], [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes]) +AC_ARG_ENABLE(gtk-deprecation-warnings, +[AS_HELP_STRING([--enable-gtk-deprecation-warnings], + [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])], +[ac_enable_gtk_deprecation_warnings="${enableval}"],[]) + #### Make srcdir absolute, if it isn't already. It's important to #### avoid running the file name through pwd unnecessarily, since pwd can #### give you automounter prefixes, which can go away. We do all this @@ -1996,6 +2001,9 @@ GTK_OBJ=emacsgtkfixed.o term_header=gtkutil.h USE_GTK_TOOLKIT="GTK3" + if test "x$ac_enable_gtk_deprecation_warnings" = x; then + GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS" + fi else check_gtk2=yes gtk3_pkg_errors="$GTK_PKG_ERRORS " ------------------------------------------------------------ revno: 111381 committer: Jan D. branch nick: trunk timestamp: Sun 2012-12-30 20:08:15 +0100 message: Check for deprecated gtk tearoff menu item in configure. * configure.ac: Check for GtkHandlebox. Check for GtkTearoffMenuItem. * src/gtkutil.c (TOOLBAR_TOP_WIDGET): New macro. (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of handlebox_widget. Set toolbar_in_hbox to false/true, set toolbar_is_packed to true. (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET. (update_frame_tool_bar): Check toolbar_is_packed for packing. Show all on TOOLBAR_TOP_WIDGET. (free_frame_tool_bar): Check toolbar_is_packed. Use widget returned by TOOLBAR_TOP_WIDGET. (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET. Check toolbar_is_packed. (xg_have_tear_offs, tearoff_remove, tearoff_activate): Condition on HAVE_GTK_TEAROFF_MENU_ITEM_NEW. (xg_have_tear_offs): When ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW, return false. (create_menus): Create tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. (xg_update_menubar): Update title only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. (xg_update_submenu): Skip tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. (xg_initialize): Initialize xg_detached_menus only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-30 18:44:00 +0000 +++ ChangeLog 2012-12-30 19:08:15 +0000 @@ -1,6 +1,7 @@ 2012-12-30 Jan Djärv * configure.ac: Check for GtkHandlebox. + Check for GtkTearoffMenuItem. 2012-12-30 Andreas Schwab === modified file 'configure.ac' --- configure.ac 2012-12-30 18:44:00 +0000 +++ configure.ac 2012-12-30 19:08:15 +0000 @@ -2080,6 +2080,15 @@ AC_CHECK_FUNCS(gtk_handle_box_new) fi + dnl Same as above for gtk_tearoff_menu_item. + HAVE_GTK_TEAROFF_MENU_ITEM=no + AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes, + HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT +#include ]) + if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then + AC_CHECK_FUNCS(gtk_tearoff_menu_item_new) + fi + dnl Check for functions introduced in 2.14 and later. AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \ gtk_dialog_get_action_area gtk_widget_get_sensitive \ === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-30 18:44:00 +0000 +++ src/ChangeLog 2012-12-30 19:08:15 +0000 @@ -11,6 +11,17 @@ by TOOLBAR_TOP_WIDGET. (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET. Check toolbar_is_packed. + (xg_have_tear_offs, tearoff_remove, tearoff_activate): Condition on + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_have_tear_offs): When ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW, return + false. + (create_menus): Create tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_update_menubar): Update title only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_update_submenu): Skip tearoff only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_initialize): Initialize xg_detached_menus only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. * xterm.h (struct x_output): Surround handlebox_widget with #ifdef HAVE_GTK_HANDLE_BOX_NEW. toolbar_is_packed is new, === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-12-30 18:44:00 +0000 +++ src/gtkutil.c 2012-12-30 19:08:15 +0000 @@ -2416,6 +2416,8 @@ return w; } +#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW + static int xg_detached_menus; /* Return true if there are detached menus. */ @@ -2454,7 +2456,13 @@ G_CALLBACK (tearoff_remove), 0); } } - +#else /* ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW */ +bool +xg_have_tear_offs (void) +{ + return false; +} +#endif /* ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW */ /* Create a menu item widget, and connect the callbacks. ITEM describes the menu item. @@ -2526,7 +2534,8 @@ HIGHLIGHT_CB is the callback to call when entering/leaving menu items. If POP_UP_P, create a popup menu. If MENU_BAR_P, create a menu bar. - If ADD_TEAROFF_P, add a tearoff menu item. Ignored if MENU_BAR_P. + If ADD_TEAROFF_P, add a tearoff menu item. Ignored if MENU_BAR_P or + the Gtk+ version used does not have tearoffs. TOPMENU is the topmost GtkWidget that others shall be placed under. It may be NULL, in that case we create the appropriate widget (menu bar or menu item depending on POP_UP_P and MENU_BAR_P) @@ -2599,6 +2608,7 @@ "selection-done", deactivate_cb, 0); } +#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW if (! menu_bar_p && add_tearoff_p) { GtkWidget *tearoff = gtk_tearoff_menu_item_new (); @@ -2607,6 +2617,7 @@ g_signal_connect (G_OBJECT (tearoff), "activate", G_CALLBACK (tearoff_activate), 0); } +#endif for (item = data; item; item = item->next) { @@ -2897,11 +2908,13 @@ gtk_label_set_text (wlabel, utf8_label); +#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW /* If this item has a submenu that has been detached, change the title in the WM decorations also. */ if (submenu && gtk_menu_get_tearoff_state (GTK_MENU (submenu))) /* Set the title of the detached window. */ gtk_menu_set_title (GTK_MENU (submenu), utf8_label); +#endif if (utf8_label) g_free (utf8_label); iter = g_list_next (iter); @@ -3129,7 +3142,8 @@ { GtkWidget *w = GTK_WIDGET (iter->data); - /* Skip tearoff items, they have no counterpart in val. */ +#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW + /* Skip tearoff items, they have no counterpart in val. */ if (GTK_IS_TEAROFF_MENU_ITEM (w)) { has_tearoff_p = 1; @@ -3137,6 +3151,7 @@ if (iter) w = GTK_WIDGET (iter->data); else break; } +#endif /* Remember first radio button in a group. If we get a mismatch in a radio group we must rebuild the whole group so that the connections @@ -4987,7 +5002,9 @@ gdpy_def = NULL; xg_ignore_gtk_scrollbar = 0; +#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW xg_detached_menus = 0; +#endif xg_menu_cb_list.prev = xg_menu_cb_list.next = xg_menu_item_cb_list.prev = xg_menu_item_cb_list.next = 0; ------------------------------------------------------------ revno: 111380 committer: Jan D. branch nick: trunk timestamp: Sun 2012-12-30 19:44:00 +0100 message: Check for deprecated gtk_handle_box in configure. * configure.ac: Check for GtkHandlebox. * src/gtkutil.c (TOOLBAR_TOP_WIDGET): New macro. (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of handlebox_widget. Set toolbar_in_hbox to false/true, set toolbar_is_packed to true. (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET. (update_frame_tool_bar): Check toolbar_is_packed for packing. Show all on TOOLBAR_TOP_WIDGET. (free_frame_tool_bar): Check toolbar_is_packed. Use widget returned by TOOLBAR_TOP_WIDGET. (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET. Check toolbar_is_packed. * src/xterm.h (struct x_output): Surround handlebox_widget with #ifdef HAVE_GTK_HANDLE_BOX_NEW. toolbar_is_packed is new, toolbar_in_hbox is bool. diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-30 18:09:01 +0000 +++ ChangeLog 2012-12-30 18:44:00 +0000 @@ -1,3 +1,7 @@ +2012-12-30 Jan Djärv + + * configure.ac: Check for GtkHandlebox. + 2012-12-30 Andreas Schwab * configure.ac (TEMACS_LDFLAGS2): Don't define. === modified file 'configure.ac' --- configure.ac 2012-12-30 18:09:01 +0000 +++ configure.ac 2012-12-30 18:44:00 +0000 @@ -2071,6 +2071,14 @@ AC_CHECK_FUNCS(gtk_file_selection_new) fi + dnl Same as above for gtk_handle_box. + HAVE_GTK_HANDLE_BOX=no + AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes, + HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT +#include ]) + if test "$HAVE_GTK_HANDLE_BOX" = yes; then + AC_CHECK_FUNCS(gtk_handle_box_new) + fi dnl Check for functions introduced in 2.14 and later. AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \ === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-30 18:09:01 +0000 +++ src/ChangeLog 2012-12-30 18:44:00 +0000 @@ -1,3 +1,21 @@ +2012-12-30 Jan Djärv + + * gtkutil.c (TOOLBAR_TOP_WIDGET): New macro. + (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of + handlebox_widget. Set toolbar_in_hbox to false/true, set + toolbar_is_packed to true. + (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET. + (update_frame_tool_bar): Check toolbar_is_packed for packing. + Show all on TOOLBAR_TOP_WIDGET. + (free_frame_tool_bar): Check toolbar_is_packed. Use widget returned + by TOOLBAR_TOP_WIDGET. + (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET. + Check toolbar_is_packed. + + * xterm.h (struct x_output): Surround handlebox_widget with + #ifdef HAVE_GTK_HANDLE_BOX_NEW. toolbar_is_packed is new, + toolbar_in_hbox is bool. + 2012-12-30 Andreas Schwab * src/Makefile.in (TEMACS_LDFLAGS2): Remove. === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-12-25 15:07:59 +0000 +++ src/gtkutil.c 2012-12-30 18:44:00 +0000 @@ -4269,6 +4269,12 @@ gtk_toolbar_set_orientation (GTK_TOOLBAR (w), o) #endif +#ifdef HAVE_GTK_HANDLE_BOX_NEW +#define TOOLBAR_TOP_WIDGET(x) ((x)->handlebox_widget) +#else +#define TOOLBAR_TOP_WIDGET(x) ((x)->toolbar_widget) +#endif + /* Attach a tool bar to frame F. */ static void @@ -4276,14 +4282,16 @@ { struct x_output *x = f->output_data.x; bool into_hbox = EQ (pos, Qleft) || EQ (pos, Qright); + GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x); toolbar_set_orientation (x->toolbar_widget, into_hbox ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); +#ifdef HAVE_GTK_HANDLE_BOX_NEW if (!x->handlebox_widget) { - x->handlebox_widget = gtk_handle_box_new (); + top_widget = x->handlebox_widget = gtk_handle_box_new (); g_signal_connect (G_OBJECT (x->handlebox_widget), "child-detached", G_CALLBACK (xg_tool_bar_detach_callback), f); g_signal_connect (G_OBJECT (x->handlebox_widget), "child-attached", @@ -4291,34 +4299,40 @@ gtk_container_add (GTK_CONTAINER (x->handlebox_widget), x->toolbar_widget); } +#endif if (into_hbox) { +#ifdef HAVE_GTK_HANDLE_BOX_NEW gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget), GTK_POS_TOP); - gtk_box_pack_start (GTK_BOX (x->hbox_widget), x->handlebox_widget, +#endif + gtk_box_pack_start (GTK_BOX (x->hbox_widget), top_widget, FALSE, FALSE, 0); if (EQ (pos, Qleft)) gtk_box_reorder_child (GTK_BOX (x->hbox_widget), - x->handlebox_widget, + top_widget, 0); - x->toolbar_in_hbox = 1; + x->toolbar_in_hbox = true; } else { bool vbox_pos = x->menubar_widget != 0; +#ifdef HAVE_GTK_HANDLE_BOX_NEW gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget), GTK_POS_LEFT); - gtk_box_pack_start (GTK_BOX (x->vbox_widget), x->handlebox_widget, +#endif + gtk_box_pack_start (GTK_BOX (x->vbox_widget), top_widget, FALSE, FALSE, 0); if (EQ (pos, Qtop)) gtk_box_reorder_child (GTK_BOX (x->vbox_widget), - x->handlebox_widget, + top_widget, vbox_pos); - x->toolbar_in_hbox = 0; + x->toolbar_in_hbox = false; } + x->toolbar_is_packed = true; } /* Create a tool bar for frame F. */ @@ -4561,13 +4575,14 @@ struct x_output *x = f->output_data.x; GtkRequisition req; int nl = 0, nr = 0, nt = 0, nb = 0; + GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x); - gtk_widget_get_preferred_size (GTK_WIDGET (x->handlebox_widget), NULL, &req); + gtk_widget_get_preferred_size (GTK_WIDGET (top_widget), NULL, &req); if (x->toolbar_in_hbox) { int pos; gtk_container_child_get (GTK_CONTAINER (x->hbox_widget), - x->handlebox_widget, + top_widget, "position", &pos, NULL); if (pos == 0) nl = req.width; else nr = req.width; @@ -4576,7 +4591,7 @@ { int pos; gtk_container_child_get (GTK_CONTAINER (x->vbox_widget), - x->handlebox_widget, + top_widget, "position", &pos, NULL); if (pos == 0 || (pos == 1 && x->menubar_widget)) nt = req.height; else nb = req.height; @@ -4611,7 +4626,6 @@ GtkToolbar *wtoolbar; GtkToolItem *ti; GtkTextDirection dir; - bool pack_tool_bar = x->handlebox_widget == NULL; Lisp_Object style; bool text_image, horiz; struct xg_frame_tb_info *tbinfo; @@ -4865,9 +4879,9 @@ if (f->n_tool_bar_items != 0) { - if (pack_tool_bar) + if (! x->toolbar_is_packed) xg_pack_tool_bar (f, f->tool_bar_position); - gtk_widget_show_all (GTK_WIDGET (x->handlebox_widget)); + gtk_widget_show_all (TOOLBAR_TOP_WIDGET (x)); if (xg_update_tool_bar_sizes (f)) xg_height_or_width_changed (f); } @@ -4886,24 +4900,26 @@ if (x->toolbar_widget) { struct xg_frame_tb_info *tbinfo; - bool is_packed = x->handlebox_widget != 0; + GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x); + block_input (); /* We may have created the toolbar_widget in xg_create_tool_bar, but not the x->handlebox_widget which is created in xg_pack_tool_bar. */ - if (is_packed) + if (x->toolbar_is_packed) { if (x->toolbar_in_hbox) gtk_container_remove (GTK_CONTAINER (x->hbox_widget), - x->handlebox_widget); + top_widget); else gtk_container_remove (GTK_CONTAINER (x->vbox_widget), - x->handlebox_widget); + top_widget); } else gtk_widget_destroy (x->toolbar_widget); x->toolbar_widget = 0; - x->handlebox_widget = 0; + TOOLBAR_TOP_WIDGET (x) = 0; + x->toolbar_is_packed = false; FRAME_TOOLBAR_TOP_HEIGHT (f) = FRAME_TOOLBAR_BOTTOM_HEIGHT (f) = 0; FRAME_TOOLBAR_LEFT_WIDTH (f) = FRAME_TOOLBAR_RIGHT_WIDTH (f) = 0; @@ -4927,20 +4943,25 @@ xg_change_toolbar_position (FRAME_PTR f, Lisp_Object pos) { struct x_output *x = f->output_data.x; + GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x); - if (! x->toolbar_widget || ! x->handlebox_widget) + if (! x->toolbar_widget || ! top_widget) return; block_input (); - g_object_ref (x->handlebox_widget); - if (x->toolbar_in_hbox) - gtk_container_remove (GTK_CONTAINER (x->hbox_widget), - x->handlebox_widget); - else - gtk_container_remove (GTK_CONTAINER (x->vbox_widget), - x->handlebox_widget); + g_object_ref (top_widget); + if (x->toolbar_is_packed) + { + if (x->toolbar_in_hbox) + gtk_container_remove (GTK_CONTAINER (x->hbox_widget), + top_widget); + else + gtk_container_remove (GTK_CONTAINER (x->vbox_widget), + top_widget); + } + xg_pack_tool_bar (f, pos); - g_object_unref (x->handlebox_widget); + g_object_unref (top_widget); if (xg_update_tool_bar_sizes (f)) xg_height_or_width_changed (f); === modified file 'src/xterm.h' --- src/xterm.h 2012-12-25 15:07:59 +0000 +++ src/xterm.h 2012-12-30 18:44:00 +0000 @@ -473,10 +473,13 @@ GtkWidget *menubar_widget; /* The tool bar in this frame */ GtkWidget *toolbar_widget; - /* The handle box that makes the tool bar detachable. */ +#ifdef HAVE_GTK_HANDLE_BOX_NEW +/* The handle box that makes the tool bar detachable. */ GtkWidget *handlebox_widget; +#endif /* Non-zero if tool bar is packed into the hbox widget (i.e. vertical). */ - int toolbar_in_hbox; + bool toolbar_in_hbox; + bool toolbar_is_packed; /* The last size hints set. */ GdkGeometry size_hints; ------------------------------------------------------------ revno: 111379 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sun 2012-12-30 10:09:01 -0800 message: Merge from emacs-24; up to r111099 diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-27 17:59:21 +0000 +++ ChangeLog 2012-12-30 18:09:01 +0000 @@ -1,3 +1,9 @@ +2012-12-30 Andreas Schwab + + * configure.ac (TEMACS_LDFLAGS2): Don't define. + (LIBS_GNUSTEP): Set for GNUstep and substitute. + (LD_SWITCH_SYSTEM_TEMACS): Don't set for GNUstep. + 2012-12-27 Glenn Morris * configure.ac (emacs_config_options): New. === modified file 'configure.ac' --- configure.ac 2012-12-27 17:59:21 +0000 +++ configure.ac 2012-12-30 18:09:01 +0000 @@ -1475,8 +1475,8 @@ tmp_CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS -x objective-c" CFLAGS="$CFLAGS -x objective-c" -TEMACS_LDFLAGS2="\${LDFLAGS}" GNU_OBJC_CFLAGS= +LIBS_GNUSTEP= if test "${with_ns}" != no; then if test "${opsys}" = darwin; then NS_IMPL_COCOA=yes @@ -1503,9 +1503,9 @@ CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}" + LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread" LIB_STANDARD= START_FILES= - TEMACS_LDFLAGS2= dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1. dnl If they had chosen to either define it or not, we could have dnl just used AC_CHECK_DECL here. @@ -1556,7 +1556,7 @@ fi fi -AC_SUBST(TEMACS_LDFLAGS2) +AC_SUBST(LIBS_GNUSTEP) INSTALL_ARCH_INDEP_EXTRA=install-etc ns_self_contained=no @@ -4287,10 +4287,6 @@ *) LD_SWITCH_SYSTEM_TEMACS= ;; esac -if test "$NS_IMPL_GNUSTEP" = "yes"; then - LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread" -fi - AC_SUBST(LD_SWITCH_SYSTEM_TEMACS) === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-12-29 14:32:36 +0000 +++ doc/lispref/ChangeLog 2012-12-30 18:09:01 +0000 @@ -1,3 +1,11 @@ +2012-12-30 Wolfgang Jenkner + + * functions.texi (Declare Form): + * intro.texi (A Sample Function Description): + * syntax.texi (Syntax Table Internals, Syntax Table Functions): + * variables.texi (Using Lexical Binding): Don't use @var or CAPS + in @def.. commands. (Bug#13292) + 2012-12-29 Eli Zaretskii * files.texi (Changing Files): Document the return values of === modified file 'doc/lispref/functions.texi' --- doc/lispref/functions.texi 2012-12-05 22:27:56 +0000 +++ doc/lispref/functions.texi 2012-12-29 08:23:21 +0000 @@ -1266,7 +1266,7 @@ convention in Emacs Lisp mode. @anchor{Definition of declare} -@defmac declare @var{specs}@dots{} +@defmac declare specs@dots{} This macro ignores its arguments and evaluates to @code{nil}; it has no run-time effect. However, when a @code{declare} form occurs in the @var{declare} argument of a @code{defun} or @code{defsubst} function === modified file 'doc/lispref/intro.texi' --- doc/lispref/intro.texi 2012-12-05 22:27:56 +0000 +++ doc/lispref/intro.texi 2012-12-29 08:23:21 +0000 @@ -408,7 +408,7 @@ arguments are grouped into additional levels of list structure. Here is an example: -@defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{} +@defspec count-loop (var [from to [inc]]) body@dots{} This imaginary special form implements a loop that executes the @var{body} forms and then increments the variable @var{var} on each iteration. On the first iteration, the variable has the value === modified file 'doc/lispref/syntax.texi' --- doc/lispref/syntax.texi 2012-12-05 22:27:56 +0000 +++ doc/lispref/syntax.texi 2012-12-29 08:23:21 +0000 @@ -506,7 +506,7 @@ the current buffer. @end defun -@defmac with-syntax-table @var{table} @var{body}@dots{} +@defmac with-syntax-table table body@dots{} This macro executes @var{body} using @var{table} as the current syntax table. It returns the value of the last form in @var{body}, after restoring the old current syntax table. @@ -998,7 +998,7 @@ @samp{4} @tab @code{(lsh 1 19)} @end multitable -@defun string-to-syntax @var{desc} +@defun string-to-syntax desc Given a syntax descriptor @var{desc} (a string), this function returns the corresponding raw syntax descriptor. @end defun === modified file 'doc/lispref/variables.texi' --- doc/lispref/variables.texi 2012-12-05 22:27:56 +0000 +++ doc/lispref/variables.texi 2012-12-29 08:23:21 +0000 @@ -1057,7 +1057,7 @@ (@pxref{Defining Variables}). All other variables are subject to lexical binding. -@defun special-variable-p SYMBOL +@defun special-variable-p symbol This function returns non-@code{nil} if @var{symbol} is a special variable (i.e., it has a @code{defvar}, @code{defcustom}, or @code{defconst} variable definition). Otherwise, the return value is === modified file 'etc/NEWS' --- etc/NEWS 2012-12-27 20:09:45 +0000 +++ etc/NEWS 2012-12-30 18:09:01 +0000 @@ -231,323 +231,263 @@ * Installation Changes in Emacs 24.3 ---- -** The default toolkit has been changed to Gtk+ version 3. -If you don't pass --with-x-toolkit to configure or if you pass ---with-x-toolkit=gtk or --with-x-toolkit=yes, configure will try to build -with Gtk+ version 3, and if that fails, try Gtk+ version 2. +** The default X toolkit is now Gtk+ version 3. +If you don't pass `--with-x-toolkit' to configure, or if you use +`--with-x-toolkit=gtk' or `--with-x-toolkit=yes', configure will try +to build with Gtk+ version 3, and if that fails, try Gtk+ version 2. You can explicitly require a specific version by passing ---with-x-toolkit=gtk2 or --with-x-toolkit=gtk3 to configure. - ---- -** New configure option '--without-all' to disable additional features. -This disables most of the features that are normally enabled by default. - ---- -** New configure option '--enable-link-time-optimization' to utilize +`--with-x-toolkit=gtk2' or `--with-x-toolkit=gtk3' to configure. + +** New configure option `--enable-link-time-optimization', to utilize an appropriate feature provided by GCC since version 4.5.0. ---- -** New configure option '--enable-gcc-warnings', intended for developers. -If building with GCC, this enables compile-time checks that warn about -possibly-questionable C code. On a recent GNU system there should be -no warnings; on older and on non-GNU systems the generated warnings -may be useful. - ---- -** The configure option '--enable-use-lisp-union-type' has been -renamed to '--enable-check-lisp-object-type', as the resulting +** New configure option `--without-all' to disable most of the optional +features (image support, etc.) that are normally enabled by default. + +** New configure option `--enable-gcc-warnings' (for developing/debugging +Emacs). If building with GCC, this enables compile-time checks that +warn about possibly-questionable C code. On a recent GNU system there +should be no warnings; on older and on non-GNU systems the generated +warnings may be useful. + +** The configure option `--enable-use-lisp-union-type' has been +renamed to `--enable-check-lisp-object-type', as the resulting Lisp_Object type no longer uses a union to implement the compile time check that this option enables. ---- -** The configure option '--disable-maintainer-mode' has been removed, +** The configure option `--disable-maintainer-mode' has been removed, as it was confusingly-named and rarely useful. ---- -** You can use `NO_BIN_LINK=t make install' to prevent the installation -overwriting "emacs" in the installation bin/ directory with a link -to emacs-VERSION. - ---- ** The configure options `--program-prefix', `--program-suffix', and `--program-transform-name' apply to more than just the installed binaries. Now they also affect the man pages, icons, and the etc/emacs.desktop file; but not the info pages, since this would break links between the various manuals. ---- +** You can use `NO_BIN_LINK=t make install' to prevent the installation +overwriting "emacs" in the installation bin/ directory with a link +to "emacs-VERSION". + ** Emacs uses libtinfo in preference to libncurses, if available. ---- ** On FreeBSD and NetBSD, configure no longer adds /usr/local/lib and /usr/pkg/lib to the linker search path. You must add them yourself if you want them. ---- -** The standalone scripts rcs-checkin and vcdiff have been removed +** The standalone scripts `rcs-checkin' and `vcdiff' have been removed (from the bin and libexec directories, respectively). The former is no longer relevant, the latter is replaced by lisp (in vc-sccs.el). * Startup Changes in Emacs 24.3 -+++ ** Emacs no longer searches for `leim-list.el' files beneath the standard lisp/ directory. There should not be any there anyway. If you have -been adding them there, put them somewhere else, eg site-lisp. +been adding them there, put them somewhere else; e.g., site-lisp. ---- ** The `--no-site-lisp' command line option now works for Nextstep builds. * Changes in Emacs 24.3 -+++ -** Most y-or-n prompts now allow you to scroll the selected window. -Typing C-v or M-v at a y-or-n prompt scrolls forward or backward -respectively, without exiting from the prompt. - -** Mode line changes ---- -*** New option `mode-line-default-help-echo' specifies the help text -(shown in a tooltip or in the echo area) for any part of the mode line -that does not have its own specialized help text. -+++ -*** You can now click mouse-3 in the coding system indicator to invoke -`set-buffer-file-coding-system'. - -** Help changes - -+++ -*** `C-h f' (describe-function) can now perform autoloading. +** Help + +*** `C-h f' (`describe-function') can now perform autoloading. When this command is called for an autoloaded function whose docstring contains a key substitution construct, that function's library is automatically loaded, so that the documentation can be shown correctly. To disable this, set `help-enable-auto-load' to nil. ---- *** `C-h f' now reports previously-autoloaded functions as "autoloaded", even after their associated libraries have been loaded (and the autoloads have been redefined as functions). -** Minibuffer changes ---- -*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the -next and previous path separator, respectively. -+++ -*** minibuffer-electric-default-mode can rewrite (default ...) to [...]. -Just set minibuffer-eldef-shorten-default to t before enabling the mode. - -+++ -** ImageMagick support, if available, is automatically enabled. +** ImageMagick + +*** Images displayed via ImageMagick now support transparency and the +:background image specification property. + +*** When available, ImageMagick support is automatically enabled. It is no longer necessary to call `imagemagick-register-types' explicitly to install ImageMagick image types; that function is called automatically at startup, or when customizing an imagemagick- option. -+++ + *** Setting `imagemagick-types-inhibit' to t now disables the use of -ImageMagick to view images. You must call imagemagick-register-types -afterwards if you do not use customize to change this. -+++ +ImageMagick to view images. (You must call `imagemagick-register-types' +afterwards if you do not use customize to change this.) + *** The new variable `imagemagick-enabled-types' also affects which ImageMagick types are treated as images. The function `imagemagick-filter-types' returns the list of types that will be treated as images. ---- -*** Images displayed via ImageMagick now support transparency and the -:background image spec property. - -** Server and client changes -+++ + +** Minibuffer + +*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the +next and previous path separator, respectively. + +*** `minibuffer-electric-default-mode' can shorten "(default ...)" to "[...]" +in minibuffer prompts. Just set `minibuffer-eldef-shorten-default' +non-nil before enabling the mode. + +** Mode line + +*** New option `mode-line-default-help-echo' specifies the help text +(shown in a tooltip or in the echo area) for any part of the mode line +that does not have its own specialized help text. + +*** You can now click mouse-3 in the coding system indicator to invoke +`set-buffer-file-coding-system'. + +** Server and client + *** emacsclient now obeys string values for `initial-buffer-choice', if it is told to open a new frame without specifying any file to visit or expression to evaluate. ---- + *** New option `server-auth-key' specifies a shared server key. -+++ -** In the Package Menu, newly-available packages are listed as "new", -and sorted above the other "available" packages by default. - -+++ -** `C-x C-q' is now bound to the new minor mode `read-only-mode'. -This minor mode replaces `toggle-read-only', which is now obsolete. - -+++ ** Emacs now generates backtraces on fatal errors. On encountering a fatal error, Emacs now outputs a textual description of the fatal signal, and a short backtrace on platforms like glibc that support backtraces. ---- +** `C-x C-q' is now bound to the new minor mode `read-only-mode'. +This minor mode replaces `toggle-read-only', which is now obsolete. + +** Most `y-or-n' prompts now allow you to scroll the selected window. +Typing `C-v' or `M-v' at a y-or-n prompt scrolls forward or backward +respectively, without exiting from the prompt. + +** In the Package Menu, newly-available packages are listed as "new", +and sorted above the other "available" packages by default. + ** If your Emacs was built from a bzr checkout, the new variable `emacs-bzr-version' contains information about the bzr revision used. -+++ -** New variable `create-lockfiles' specifies usage of lockfiles. +** New option `create-lockfiles' specifies usage of lockfiles. It defaults to t. Changing it to nil inhibits the creation of lock files (use this with caution). -+++ +** New option `enable-remote-dir-locals', if non-nil, allows directory-local +variables on remote hosts. + +** The entry for PCL-CVS has been removed from the Tools menu. +The PCL-CVS commands are still available via the keyboard. + ** Using "unibyte: t" in Lisp source files is obsolete. Use "coding: raw-text" instead. -+++ -** Setting `enable-remote-dir-locals' to non-nil allows directory -local variables on remote hosts. - ---- -** The entry for PCL-CVS has been removed from the Tools menu. -The PCL-CVS commands are still available via the keyboard. - -** Internationalization changes ---- +** Internationalization + *** New language environment: Persian. ---- + *** New input method `vietnamese-vni'. -** Nextstep (GNUstep / Mac OS X) port changes ---- -*** Fullscreen and frame parameter fullscreen is supported. ---- +** Nextstep (GNUstep / Mac OS X) port + +*** Support for fullscreen and the frame parameter fullscreen. + *** A file dialog is used for open/save operations initiated from the menu/toolbar. * Editing Changes in Emacs 24.3 -** Navigation command changes -+++ -*** New binding `M-g c' for `goto-char'. -+++ -*** New binding `M-g TAB' for `move-to-column'. -+++ -*** `M-g TAB' (`move-to-column') prompts for a column number if called -interactively with no prefix arg. Previously, it moved to column 1. +** Search and Replace -** Search and Replace changes -+++ *** Non-regexp Isearch now performs "lax" space matching. Each sequence of spaces in the supplied search string may match any sequence of one or more whitespace characters, as specified by the variable `search-whitespace-regexp'. (This variable is also used by a -similar existing feature for regexp Isearch). -+++ +similar existing feature for regexp Isearch.) + *** New Isearch command `M-s SPC' toggles lax space matching. This applies to both ordinary and regexp Isearch. -+++ + *** New option `replace-lax-whitespace'. If non-nil, `query-replace' uses flexible whitespace matching too. The default is nil. -+++ + *** Global `M-s _' starts a symbol (identifier) incremental search, and `M-s _' in Isearch toggles symbol search mode. `M-s c' in Isearch toggles search case-sensitivity. -+++ +** Navigation commands + +*** New binding `M-g c' for `goto-char'. + +*** New binding `M-g TAB' for `move-to-column'. + +*** `M-g TAB' (`move-to-column') prompts for a column number if called +interactively with no prefix arg. Previously, it moved to column 1. + +** New option `yank-handled-properties' allows processing of text +properties on yanked text, in ways that are more general than just +removing them (as is done by `yank-excluded-properties'). + +** New option `delete-trailing-lines' specifies whether +M-x delete-trailing-whitespace should delete trailing lines at the end +of the buffer. It defaults to t. + +** `C-u M-=' now counts lines/words/characters in the entire buffer. + ** `C-x 8 RET' is now bound to `insert-char', which is now a command. `ucs-insert' is now an obsolete alias for `insert-char'. ---- ** The `z' key no longer has a binding in most special modes. It used to be bound to `kill-this-buffer', but `z' is too easy to accidentally type. -+++ -** New option `delete-trailing-lines' specifies whether -M-x delete-trailing-whitespace should delete trailing lines at the end -of the buffer. It defaults to t. - -** Register changes -+++ -*** `C-x r +' is now overloaded to invoke `append-to-register. -+++ +** New command `C-x r M-w' (`copy-rectangle-as-kill'). +It copies the region-rectangle as the last rectangle kill. + +** Registers + +*** `C-x r +' is now overloaded to invoke `append-to-register'. + *** New option `register-separator' specifies the register containing -the text to put between collected texts for use with M-x -append-to-register and M-x prepend-to-register. - -+++ -** `C-u M-=' now counts lines/words/characters in the entire buffer. - -+++ -** New command `C-x r M-w' (copy-rectangle-as-kill). -It copies the region-rectangle as the last rectangle kill. - -+++ -** New option `yank-handled-properties' allows processing of text -properties on yanked text, in more ways that are more general than -just removing them, as done by `yank-excluded-properties'. +the text to put between collected texts for use with +M-x append-to-register and M-x prepend-to-register. * Changes in Specialized Modes and Packages in Emacs 24.3 -** Apropos ---- -*** The faces used by Apropos are now directly customizable. -These faces are named `apropos-symbol', `apropos-keybinding', and so on; -see the `apropos' Custom group for details. ---- -*** The old options whose values specified faces to use were removed -(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.). - -** Buffer Menu -This package has been rewritten to use Tabulated List mode. ---- -*** Option `Buffer-menu-buffer+size-width' is now obsolete. -Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead. - -** Calendar - -+++ -*** You can customize the header text that appears above each calendar month. -See the variable `calendar-month-header'. - -+++ -*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'. - -+++ -*** The calendars produced by cal-html include holidays. -Customize `cal-html-holidays' to change this. - -** CL - -+++ +** Common Lisp emulation (CL) + *** CL's main entry is now (require 'cl-lib). -`cl-lib' is like the old `cl' except that it uses the namespace cleanly, -i.e. all its definitions have the "cl-" prefix (and internal definitions use -the "cl--" prefix). +`cl-lib' is like the old `cl' except that it uses the namespace cleanly; +i.e., all its definitions have the "cl-" prefix (and internal definitions +use the "cl--" prefix). -If `cl' provided a feature under the name `foo', then `cl-lib' provides it -under the name `cl-foo' instead, with the exceptions of the few definitions -that had to use `foo*' to avoid conflicts with pre-existing Elisp entities, -which have not been renamed to `cl-foo*' but just `cl-foo'. +If `cl' provided a feature under the name `foo', then `cl-lib' +provides it under the name `cl-foo' instead; with the exceptions of the +few `cl' definitions that had to use `foo*' to avoid conflicts with +pre-existing Elisp entities. These have been renamed to `cl-foo' +rather than `cl-foo*'. The old `cl' is now deprecated and is mainly just a bunch of aliases that -provide the old non-prefixed names. Some exceptions are listed below. +provide the old, non-prefixed names. Some exceptions are listed below: -+++ *** `cl-flet' is not like `flet' (which is deprecated). Instead it obeys the behavior of Common-Lisp's `flet'. In particular, in cl-flet function definitions are lexically scoped, whereas in flet the scoping is dynamic. -+++ *** `cl-labels' is slightly different from `labels'. -The difference is that it relies on the `lexical-binding' machinery (as opposed -to the `lexical-let' machinery used previously) to capture definitions in -closures, so such closures will only work if `lexical-binding' is in use. +The difference is that it relies on the `lexical-binding' machinery +(as opposed to the `lexical-let' machinery used previously) to capture +definitions in closures, so such closures will only work if `lexical-binding' +is in use. -+++ *** `cl-letf' is not exactly like `letf'. The only difference is in details that relate to some deprecated usage of `symbol-function' in place forms. -+++ *** `progv' was rewritten to use the `let' machinery. -A side effect is that vars without corresponding value are bound to nil -rather than making them unbound. +A side effect is that variables without corresponding values are bound +to nil rather than being made unbound. -+++ *** The following methods of extending `setf' are obsolete (use features from gv.el instead): `define-modify-macro' (use `gv-letplace') @@ -555,203 +495,134 @@ `define-setf-expander' (use `gv-define-setter' or `gv-define-expander') `get-setf-method' no longer exists (see "Incompatible Lisp Changes") -+++ -** New compilation option `compilation-always-kill'. - -** Customize ---- -*** `custom-reset-button-menu' now defaults to t. ---- -*** Non-option variables are never matched in `customize-apropos' and -`customize-apropos-options' (i.e. the prefix argument does nothing for -these commands now). - ---- -** `desktop-path' no longer includes the "." directory. -Desktop files are now located in ~/.emacs.d by default. - -** D-Bus - -+++ -*** New variables `dbus-compiled-version' and `dbus-runtime-version'. - -+++ -*** The D-Bus object manager interface is implemented. - -+++ -*** Variables of type :(u)int32 and :(u)int64 accept floating points, -if their value does not fit into Emacs's integer range. - -+++ -*** The function `dbus-call-method' works non-blocking now, it can be -interrupted by C-g. `dbus-call-method-non-blocking' is obsolete. - -+++ -*** Signals can be sent also as unicast message. - -+++ -*** The argument list of `dbus-register-signal' has been extended, -according to the new match rule types of D-Bus. See the manual for -details. - -+++ -*** `dbus-init-bus' supports private connections. - -+++ -*** There is a new function `dbus-setenv'. - ** Diff mode ---- *** Changes are now highlighted using the same color scheme as in modern VCSes. Deletions are displayed in red (new faces `diff-refine-removed' and `smerge-refined-removed', and new definition of `diff-removed'), insertions in green (new faces `diff-refine-added' and `smerge-refined-added', and new definition of `diff-added'). ---- *** The variable `diff-use-changed-face' defines whether to use the face `diff-changed', or `diff-removed' and `diff-added' to highlight changes in context diffs. -+++ *** The new command `diff-delete-trailing-whitespace' removes trailing whitespace introduced by a diff. +** Ediff now uses the same color scheme as Diff mode. + +** Python mode + +A new version of python.el, which provides several new features, including: +per-buffer shells, better indentation, Python 3 support, and improved +shell-interaction compatible with iPython (and virtually any other +text based shell). + +*** Some user options have been replaced/renamed, including (old -> new): +**** python-indent -> python-indent-offset +**** python-guess-indent -> python-indent-guess-indent-offset +**** python-pdbtrack-do-tracking-p -> python-pdbtrack-activate +**** python-use-skeletons -> python-skeleton-autoinsert + +*** Some user options have been removed, including: + +**** `python-indent-string-contents': Strings are never indented. + +**** `python-honour-comment-indentation': +Comments are always considered as indentation markers. + +**** `python-continuation-offset': Indentation is automatically +calculated in a pep8 compliant way depending on the context. + +**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist': +Have no direct mapping as the shell interaction is completely different. + +**** `python-python-command', `python-jython-command': +Replaced by `python-shell-interpreter'. + +**** `inferior-python-filter-regexp', `python-remove-cwd-from-path', +`python-pdbtrack-minor-mode-string', `python-source-modes': +No longer relevant. + +*** Some commands have been replaced (old -> new): +**** python-insert-class -> python-skeleton-class +**** python-insert-def -> python-skeleton-def +**** python-insert-for -> python-skeleton-for +**** python-insert-if -> python-skeleton-if +**** python-insert-try/except -> python-skeleton-try +**** python-insert-try/finally -> python-skeleton-try +**** python-insert-while -> python-skeleton-while +**** python-find-function -> python-nav-jump-to-defun +**** python-next-statement -> python-nav-forward-sentence +**** python-previous-statement -> python-nav-backward-sentence +**** python-beginning-of-defun-function -> python-nav-beginning-of-defun +**** python-end-of-defun-function -> python-nav-end-of-defun +**** python-send-buffer -> python-shell-send-buffer +**** python-send-defun -> python-shell-send-defun +**** python-send-region -> python-shell-send-region +**** python-send-region-and-go -> emulate with python-shell-send-region +and python-shell-switch-to-shell +**** python-send-string -> python-shell-send-string +**** python-switch-to-python -> python-shell-switch-to-shell +**** python-describe-symbol -> python-eldoc-at-point + +** D-Bus + +*** New variables `dbus-compiled-version' and `dbus-runtime-version'. + +*** The D-Bus object manager interface is implemented. + +*** Variables of type :(u)int32 and :(u)int64 accept floating points, +if their value does not fit into Emacs's integer range. + +*** The function `dbus-call-method' is now non-blocking. +It can be interrupted by `C-g'. `dbus-call-method-non-blocking' is obsolete. + +*** Signals can also be sent as unicast messages. + +*** The argument list of `dbus-register-signal' has been extended, +according to the new match rule types of D-Bus. + +*** `dbus-init-bus' supports private connections. + +*** There is a new function `dbus-setenv'. + +** `desktop-path' no longer includes the "." directory. +Desktop files are now located in ~/.emacs.d by default. + ** Dired -+++ + *** `dired-do-async-shell-command' executes each file sequentially if the command ends in `;' (when operating on multiple files). Otherwise, it executes the command on each file in parallel. ---- -*** Typing M-n in the minibuffer of `dired-do-chmod', `dired-do-chgrp', -`dired-do-chown', `dired-do-touch' pulls the file attributes of the + +*** Typing `M-n' in the minibuffer of `dired-do-chmod', `dired-do-chgrp', +`dired-do-chown', and `dired-do-touch' yanks the attributes of the file at point. -+++ + *** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'), -`DEL' (`dired-unmark-backward'), `d' (`dired-flag-file-deletion') +`DEL' (`dired-unmark-backward'), and `d' (`dired-flag-file-deletion') mark/unmark/flag all files in the active region. -+++ + *** The minibuffer default for `=' (`dired-diff) has changed. It is now the backup file for the file at point, if one exists. In Transient Mark mode the default is the file at the active mark. -+++ + *** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers. The global binding for `M-=', `count-words-region' is in effect. ---- -** Ediff now uses the same color scheme as Diff mode. - ** ERC -+++ *** New module "notifications", which can send a notification when you receive a private message or your nickname is mentioned. -+++ *** ERC will look up server/channel names via auth-source and use any channel keys found. -+++ *** New option `erc-lurker-hide-list', similar to `erc-hide-list', but only applies to messages sent by lurkers. -+++ -** Flymake uses fringe bitmaps to indicate errors and warnings. -See `flymake-fringe-indicator-position', `flymake-error-bitmap' and -`flymake-warning-bitmap'. - ---- -** Follow mode no longer works by using advice. -The option `follow-intercept-processes' has been removed. - ---- -** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings, -specifying URL types that should be converted to remote file names at -the FFAP prompt. The default is now '("ftp"). - ---- -** New Ibuffer `derived-mode' filter, bound to `/ M'. -The old binding for `/ M' (filter by used-mode) is now bound to `/ m'. - ---- -** `javascript-generic-mode' is now an obsolete alias for `js-mode'. - -+++ -** New option `mouse-avoidance-banish-position' specifies where the -`banish' mouse avoidance setting moves the mouse. - -+++ -** notifications.el supports now version 1.2 of the Notifications API. -The function `notifications-get-capabilities' returns the supported -server properties. - ---- -** In Perl mode, new option `perl-indent-parens-as-block' causes non-block -closing brackets to be aligned with the line of the opening bracket. - ---- -** In Proced mode, new command `proced-renice' renices marked processes. - ---- -** Python mode - -A new version of python.el, which provides several new features, including: -per-buffer shells, better indentation, Python 3 support, and improved -shell-interaction compatible with iPython (and virtually any other -text based shell). - -*** Some user options have been replaced/renamed: -Old defcustom: | New defcustom: -python-indent | python-indent-offset -python-guess-indent | python-indent-guess-indent-offset -python-pdbtrack-do-tracking-p | python-pdbtrack-activate -python-use-skeletons | python-skeleton-autoinsert - -*** Some user options have been removed: - -**** `python-indent-string-contents': Strings are never indented. - -**** `python-honour-comment-indentation': -Comments are never considered as indentation markers themselves. - -**** `python-continuation-offset': Indentation is automatically -calculated in a pep8 compliant way depending on the context. - -**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist': -Have no direct mapping as the shell interaction is completely different. - -**** `python-python-command', `python-jython-command': -Replaced by `python-shell-interpreter'. - -**** `inferior-python-filter-regexp', `python-remove-cwd-from-path', -`python-pdbtrack-minor-mode-string', `python-source-modes': -No longer relevant. - -*** Some commands have been replaced: -Old command | New command -python-insert-class | python-skeleton-class -python-insert-def | python-skeleton-def -python-insert-for | python-skeleton-for -python-insert-if | python-skeleton-if -python-insert-try/except | python-skeleton-try -python-insert-try/finally | python-skeleton-try -python-insert-while | python-skeleton-while -python-find-function | python-nav-jump-to-defun -python-next-statement | python-nav-forward-sentence -python-previous-statement | python-nav-backward-sentence -python-beginning-of-defun-function | python-nav-beginning-of-defun -python-end-of-defun-function | python-nav-end-of-defun -python-send-buffer | python-shell-send-buffer -python-send-defun | python-shell-send-defun -python-send-region | python-shell-send-region -python-send-region-and-go | Emulate with python-shell-send-region and - python-shell-switch-to-shell -python-send-string | python-shell-send-string -python-switch-to-python | python-shell-switch-to-shell -python-describe-symbol | python-eldoc-at-point - ---- ** reStructuredText mode *** Keybindings (see `C-c C-h'), TAB indentation, filling and auto-filling, @@ -771,79 +642,134 @@ *** The constant `rst-version' describes the rst.el package version. ---- ** Shell Script mode -*** Pairing of parens/quotes uses electric-pair-mode instead of skeleton-pair. +*** Pairing of parens/quotes uses `electric-pair-mode' instead of skeleton-pair. *** `sh-electric-here-document-mode' now controls auto-insertion of here-docs. *** `sh-use-smie' lets you choose a new indentation and navigation code. -+++ -** New option `async-shell-command-buffer' specifies the buffer to use -for a new asynchronous `shell-command' when the default output buffer -`*Async Shell Command*' is already in use. - ---- -** SQL mode has a new option `sql-db2-escape-newlines'. -If non-nil, newlines sent to the command interpreter will be escaped -by a backslash. The default does not escape the newlines and assumes -that the sql statement will be terminated by a semicolon. - -** Tabulated List and packages derived from it -+++ -*** New command `tabulated-list-sort', bound to `S', sorts the column -at point, or the Nth column if a numeric prefix argument is given. +** VHDL mode + +*** The free software compiler GHDL is supported (and now the default). + +*** Support for the VHDL-AMS packages has been added/updated. + +*** Updated to the 2002 revision of the VHDL standard. + +*** Accepts \r and \f as whitespace. + +** Apropos + +*** The faces used by Apropos are now directly customizable. +These faces are named `apropos-symbol', `apropos-keybinding', and so on; +see the `apropos' Custom group for details. + +*** The old options whose values specified faces to use have been removed +(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.). + +** Buffer Menu + +*** This package has been rewritten to use Tabulated List mode. + +*** Option `Buffer-menu-buffer+size-width' is now obsolete. +Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead. + +** Calendar + +*** You can customize the header text that appears above each calendar month. +See the variable `calendar-month-header'. + +*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'. + +*** The calendars produced by cal-html include holidays. +Customize `cal-html-holidays' to change this. + +** Compile has a new option `compilation-always-kill'. + +** Customize + +*** `custom-reset-button-menu' now defaults to t. + +*** Non-option variables are never matched in `customize-apropos' and +`customize-apropos-options' (i.e., the prefix argument does nothing for +these commands now). ** Term -+++ -*** The variables `term-default-fg-color' and `term-default-bg-color' are -now deprecated in favor of the customizable face `term'. -+++ + +*** The variables `term-default-fg-color' and `term-default-bg-color' +are now deprecated in favor of the customizable face `term'. + *** You can customize how to display ANSI terminal colors and styles by customizing the corresponding `term-color-', `term-color-underline' and `term-color-bold' faces. ** Tramp -+++ + *** The syntax has been extended in order to allow ad-hoc proxy definitions. -See the manual for details. -+++ -*** Remote processes are now supported also on remote Windows host. + +*** Remote processes are now also supported on remote MS-Windows hosts. ** URL -+++ + *** Structs made by `url-generic-parse-url' have nil `attributes' slot. Previously, this slot stored semicolon-separated attribute-value pairs appended to some imap URLs, but this is not compatible with RFC 3986. -So now the `filename' slot stores the entire path and query components +So now the `filename' slot stores the entire path and query components, and the `attributes' slot is always nil. -+++ + *** New function `url-encode-url' for encoding a URI string. The `url-retrieve' function now uses this to encode its URL argument, in case that is not properly encoded. ---- -** VHDL mode - -*** The free software compiler GHDL is supported (and now the default). - -*** Support for the VHDL-AMS packages has been added/updated. - -*** Updated to the 2002 revision of the VHDL standard. - -*** Accepts \r and \f as whitespace. - -+++ +** notifications.el supports now version 1.2 of the Notifications API. +The function `notifications-get-capabilities' returns the supported +server properties. + +** Flymake uses fringe bitmaps to indicate errors and warnings. +See `flymake-fringe-indicator-position', `flymake-error-bitmap' and +`flymake-warning-bitmap'. + +** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings, +specifying URL types that should be converted to remote file names at +the FFAP prompt. The default is now '("ftp"). + +** New Ibuffer `derived-mode' filter, bound to `/ M'. +The old binding for `/ M' (filter by used-mode) is now bound to `/ m'. + +** New option `mouse-avoidance-banish-position' specifies where the +`banish' mouse avoidance setting moves the mouse. + +** In Perl mode, new option `perl-indent-parens-as-block' causes non-block +closing brackets to be aligned with the line of the opening bracket. + +** In Proced mode, new command `proced-renice' renices marked processes. + +** New option `async-shell-command-buffer' specifies the buffer to use +for a new asynchronous `shell-command' when the default output buffer +`*Async Shell Command*' is already in use. + +** SQL mode has a new option `sql-db2-escape-newlines'. +If non-nil, newlines sent to the command interpreter will be escaped +by a backslash. The default does not escape the newlines and assumes +that the sql statement will be terminated by a semicolon. + +** New command `tabulated-list-sort', bound to `S' in Tabulated List mode +(and modes that derive from it), sorts the column at point, or the Nth +column if a numeric prefix argument is given. + ** `which-func-modes' now defaults to t, so Which Function mode, when enabled, applies to all applicable major modes. ---- -** winner-mode-hook now runs when the mode is disabled, as well as when it is -enabled. - -+++ +** `winner-mode-hook' now runs when the mode is disabled, as well as when +it is enabled. + +** Follow mode no longer works by using advice. +The option `follow-intercept-processes' has been removed. + +** `javascript-generic-mode' is now an obsolete alias for `js-mode'. + ** Hooks renamed to avoid obsolete "-hooks" suffix: *** semantic-lex-reset-hooks -> semantic-lex-reset-functions *** semantic-change-hooks -> semantic-change-functions @@ -868,86 +794,68 @@ *** nndiary-request-accept-article-hooks -> nndiary-request-accept-article-functions *** gnus-subscribe-newsgroup-hooks -> gnus-subscribe-newsgroup-functions -** Obsolete packages: -+++ +** Obsolete packages + *** assoc.el In most cases, assoc+member+push+delq work just as well. And in any case it's just a terrible package: ugly semantics, terrible inefficiency, and not namespace-clean. ---- *** bruce.el -+++ *** cust-print.el ---- *** ledit.el ---- *** mailpost.el -+++ *** mouse-sel.el ---- *** patcomp.el * Incompatible Lisp Changes in Emacs 24.3 -+++ -** set-buffer-multibyte now signals an error in narrowed buffers. - -+++ -** (random) by default now returns a different random sequence in -every Emacs run. Use (random S), where S is a string, to set the -random seed to a value based on S, in order to get a repeatable -sequence in later calls. - ---- -** The function `x-select-font' can return a font spec, instead of a -font name as a string. Whether it returns a font spec or a font name -depends on the graphical library. - -+++ -** If the NEWTEXT arg to `replace-match' contains a substring "\?", -that substring is inserted literally even if the LITERAL arg is -non-nil, instead of causing an error to be signaled. - -+++ -** `select-window' now always makes the window's buffer current. -It does so even if the window was selected before. - -+++ ** Docstrings starting with `*' no longer indicate user options. Only variables defined using `defcustom' are considered user options. The function `user-variable-p' is now an obsolete alias for `custom-variable-p'. -+++ ** The return values of `defalias', `defun' and `defmacro' have changed, and are now undefined. For backwards compatibility, `defun' and `defmacro' currently return the name of the newly defined function/macro, but this should not be relied upon. ---- +** `random' by default now returns a different random sequence in +every Emacs run. Use `(random S)', where S is a string, to set the +random seed to a value based on S, in order to get a repeatable +sequence in later calls. + +** If the NEWTEXT arg to `replace-match' contains a substring "\?", +that substring is inserted literally even if the LITERAL arg is +non-nil, instead of causing an error to be signaled. + +** `select-window' now always makes the window's buffer current. +It does so even if the window was selected before. + +** The function `x-select-font' can return a font spec, instead of a +font name as a string. Whether it returns a font spec or a font name +depends on the graphical library. + ** `face-spec-set' no longer sets frame-specific attributes when the third argument is a frame (that usage was obsolete since Emacs 22.2). -+++ -** The arguments of `dbus-register-signal' are no longer just strings, -but keywords or keyword-string pairs. The old argument list will -still be supported for Emacs 24.x. +** `set-buffer-multibyte' now signals an error in narrowed buffers. -+++ ** The CL package's `get-setf-method' function no longer exists. Generalized variables are now part of core Emacs Lisp, and implemented differently to the way cl.el used to do it. It is not possible to define a compatible replacement for `get-setf-method'. See the file gv.el for internal details of the new implementation. -** Spelling changes. -Some Lisp symbols have been renamed to avoid problems with spelling -that is incorrect or inconsistent with how Emacs normally spells a word. - ---- +** The arguments of `dbus-register-signal' are no longer just strings, +but keywords or keyword-string pairs. The old argument list will +still be supported for Emacs 24.x. + +** Miscellaneous name changes +Some Lisp symbols have been renamed to correct their spelling, +or to be more consistent with standard Emacs terminology. + *** Renamed functions - **** hangul-input-method-inactivate -> hangul-input-method-deactivate **** inactivate-input-method -> deactivate-input-method **** quail-inactivate -> quail-deactivate @@ -957,7 +865,6 @@ viper-deactivate-input-method-action **** ucs-input-inactivate -> ucs-input-deactivate ---- *** Renamed hooks The old hooks are still supported for backward compatibility, but they are deprecated and will be removed eventually. @@ -965,13 +872,11 @@ **** robin-inactivate-hook -> robin-deactivate-hook **** quail-inactivate-hook -> quail-deactivate-hook ---- -*** Renamed Lisp variables +*** Renamed variables **** follow-deactive-menu -> follow-inactive-menu **** inactivate-current-input-method-function -> deactivate-current-input-method-function -+++ ** Some obsolete functions, variables, and faces have been removed: *** `last-input-char', `last-command-char', `unread-command-char' *** `facemenu-unlisted-faces' @@ -996,26 +901,34 @@ * Lisp changes in Emacs 24.3 +** CL-style generalized variables are now in core Elisp. +`setf' is autoloaded; `push' and `pop' accept generalized variables. +You can define your own generalized variables using `gv-define-simple-setter', +`gv-define-setter', etc. + +** Emacs tries to macroexpand interpreted (non-compiled) files during load. +This can significantly speed up execution of non-byte-compiled code, +but can also bump into previously unnoticed cyclic dependencies. +These are generally harmless: they will simply cause the macro calls +to be left for later expansion (as before), but will result in a +warning ("Eager macro-expansion skipped due to cycle") describing the cycle. +You may wish to restructure your code so this does not happen. + ** New sampling-based Elisp profiler. Try M-x profiler-start, do some work, and then call M-x profiler-report. When finished, use M-x profiler-stop. The sampling rate can be based on CPU time or memory allocations. -+++ -** CL-style generalized variables are now in core Elisp. -`setf' is autoloaded; `push' and `pop' accept generalized variables. -You can define your own generalized variables using `gv-define-simple-setter', -`gv-define-setter', etc. - -+++ ** `defun' also accepts a (declare DECLS) form, like `defmacro'. The interpretation of the DECLS is determined by `defun-declarations-alist'. -** Minibuffer -+++ -*** `read-regexp' has a new argument HISTORY; the first argument PROMPT +** New macros `setq-local' and `defvar-local'. + +** Face underlining can now use a wave. + +** `read-regexp' has a new argument HISTORY; the first argument PROMPT of `read-regexp' accepts a string ending with a colon and space, and its -second argument DEFAULTS can be a list of strings accessible via M-n +second argument DEFAULTS can be a list of strings accessible via `M-n' in the minibuffer ahead of other hard-coded useful regexp-related values. More commands use `read-regexp' now to read their regexp arguments. @@ -1024,211 +937,164 @@ *** New function `completion-table-with-quoting' to handle completion in the presence of quoting, such as file completion in shell buffers. -+++ *** New function `completion-table-subvert' to use an existing completion table, but with a different prefix. -** Debugger changes +** Debugger -+++ *** New error type and new function `user-error'. These do not trigger the debugger. -+++ *** New option `debugger-bury-or-kill', saying what to do with the debugger buffer when exiting debug. -+++ *** Set `debug-on-message' to enter the debugger when a certain message is displayed in the echo area. This can be useful when trying to work out which code is doing something. ---- + *** New var `inhibit-debugger', automatically set to prevent accidental recursive invocations. -** Window changes -+++ -*** The functions get-lru-window, get-mru-window and get-largest-window -now accept a third argument to avoid choosing the selected window. -+++ -*** Additional values recognized for option `window-combination-limit'. - -+++ +** Window handling + +*** New command `fit-frame-to-buffer' adjusts the frame height to +fit the contents. + +*** The command `fit-window-to-buffer' can adjust the frame height +if the new option `fit-frame-to-buffer' is non-nil. + *** New macro `with-temp-buffer-window', similar to `with-output-to-temp-buffer'. ---- *** `temp-buffer-resize-mode' no longer resizes windows that have been reused. -+++ -*** New command `fit-frame-to-buffer' adjusts the frame height to -fit the contents. - -+++ -*** The command `fit-window-to-buffer' can adjust the frame height -if the new option `fit-frame-to-buffer' is non-nil. - -+++ -*** New option switch-to-buffer-preserve-window-point to restore a +*** New option `switch-to-buffer-preserve-window-point' to restore a window's point when switching buffers. -+++ -*** New display action functions `display-buffer-below-selected', -and `display-buffer-in-previous-window'. -+++ + +*** New display action alist entries `window-height' and `window-width' +specify the size of new windows created by `display-buffer'. + +*** New display action alist entry `pop-up-frame-parameters', if +non-nil, specifies frame parameters to give any newly-created frame. + *** New display action alist entry `inhibit-switch-frame', if non-nil, tells display action functions to avoid changing which frame is selected. -+++ -*** New display action alist entry `pop-up-frame-parameters', if -non-nil, specifies frame parameters to give any newly-created frame. -+++ + *** New display action alist entry `previous-window', if non-nil, specifies window to reuse in `display-buffer-in-previous-window'. -+++ -*** New display action alist entries `window-height' and `window-width' -to specify size of new window created by `display-buffer'. + +*** New display action functions `display-buffer-below-selected', +and `display-buffer-in-previous-window'. + +*** The functions `get-lru-window', `get-mru-window' and `get-largest-window' +now accept a third argument to avoid choosing the selected window. + +*** Additional values recognized for option `window-combination-limit'. *** The following variables are obsolete, as they can be replaced by appropriate entries in the `display-buffer-alist' function introduced in Emacs 24.1: -+++ +**** `dired-shrink-to-fit' **** `display-buffer-reuse-frames' -+++ -**** `special-display-regexps' -+++ +**** `display-buffer-function' +**** `special-display-buffer-names' **** `special-display-frame-alist' -+++ -**** `special-display-buffer-names' -+++ **** `special-display-function' -+++ -**** `display-buffer-function' ---- -**** `dired-shrink-to-fit' +**** `special-display-regexps' ** Time ---- + *** `current-time-string' no longer requires that its argument's year must be in the range 1000..9999. It now works with any year supported by the underlying C implementation. -+++ + *** `current-time' now returns extended-format time stamps (HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds. PSEC is typically a multiple of 1000 on current machines. Other -functions that use this format, such as file-attributes and -format-time-string, have been changed accordingly. Old-format time +functions that use this format, such as `file-attributes' and +`format-time-string', have been changed accordingly. Old-format time stamps are still accepted. ---- -*** The format of timers in timer-list and timer-idle-list is now + +*** The format of timers in `timer-list' and `timer-idle-list' is now [TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS]. The PSECS slot is new, and uses picosecond resolution. It can be -accessed via the new timer--psecs accessor. -+++ +accessed via the new `timer--psecs' accessor. + *** Last-modified time stamps in undo lists now are of the form (t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS). -+++ ** Floating point functions now always return special values like NaN, -instead of signaling errors, if given invalid args, e.g. (log -1.0). +instead of signaling errors, if given invalid args; e.g., (log -1.0). Previously, they returned NaNs on some platforms but signaled errors on others. The affected functions are acos, asin, tan, exp, expt, log, log10, sqrt, and mod. -+++ -** Emacs tries to macroexpand interpreted (non-compiled) files during load. -This can significantly speed up execution of non-byte-compiled code, -but can also bump into previously unnoticed cyclic dependencies. -These are generally harmless: they will simply cause the macro calls -to be left for later expansion (as before), but will result in a -warning ("Eager macro-expansion skipped due to cycle") describing the cycle. -You may wish to restructure your code so this does not happen. - -** Miscellaneous new functions: -+++ +** New fringe bitmap `exclamation-mark'. + +** Miscellaneous changes to special forms and macros + +*** `defun' and `defmacro' are now macros rather than special forms. + +*** `kbd' is now a function rather than a macro. + +** Miscellaneous new functions + +*** `set-temporary-overlay-map' sets up a temporary keymap that +takes precedence over most other maps for a short while (normally one key). + *** `autoloadp' tests if its argument is an autoloaded object. -+++ + *** `autoload-do-load' performs the autoloading operation. -+++ + *** `buffer-narrowed-p' tests if the buffer is narrowed. -+++ + *** `file-name-base' returns a file name sans directory and extension. -+++ + *** `function-get' fetches a function property, following aliases. -+++ + *** `posnp' tests if an object is a `posn'. -+++ -*** `set-temporary-overlay-map' sets up a temporary keymap that -takes precedence over most other maps for a short while (normally one key). -+++ + *** `system-users' returns the user names on the system. -+++ + *** `system-groups' returns the group names on the system. -+++ + *** `tty-top-frame' returns the topmost frame of a text terminal. -+++ -** New macros `setq-local' and `defvar-local'. - -** Changes to special forms and macros -+++ -*** `defun' and `defmacro' are now macros rather than special forms -+++ -*** `kbd' is now a function rather than a macro. - -+++ -** New fringe bitmap `exclamation-mark'. - -+++ -** Face underlining can now use a wave. - ** The following functions and variables are obsolete: ---- *** `automount-dir-prefix' (use `directory-abbrev-alist') -+++ *** `buffer-has-markers-at' ---- *** `macro-declaration-function' (use `macro-declarations-alist') ---- *** `window-system-version' (provides no useful information) ---- *** `dired-pop-to-buffer' (use `dired-mark-pop-up') ---- *** `query-replace-interactive' ---- *** `font-list-limit' (has had no effect since Emacs < 23) * Changes in Emacs 24.3 on non-free operating systems ---- ** Cygwin builds can use the native MS Windows user interface. -Pass --with-w32 to configure. The default remains the X11 interface. +Pass `--with-w32' to configure. The default remains the X11 interface. -+++ ** Two new functions are available in Cygwin builds: `cygwin-convert-file-name-from-windows' and `cygwin-convert-file-name-to-windows'. These functions allow Lisp code to access the Cygwin file-name mapping machinery to convert between Cygwin and Windows-native file and directory names. ---- ** When invoked with the -nw switch to run on the Windows text-mode terminal, Emacs now supports `mouse-highlight', help-echo (in the echo area), and `mouse-autoselect-window'. -+++ ** On MS Windows Vista and later Emacs now supports symbolic links. -+++ -** On MS Windows, you can pass --without-libxml2 to configure.bat to omit +** On MS Windows, you can pass `--without-libxml2' to configure.bat to omit support for libxml2, even if its presence is detected. ---- ** On Mac OS X, the Nextstep port requires OS X 10.4 or later. ---- -** On Mac OS X, configure no longer automatically adds the Fink /sw +** On Mac OS X, configure no longer automatically adds the Fink "/sw" directories to the search path. You must add them yourself if you want them. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-30 10:58:13 +0000 +++ lisp/ChangeLog 2012-12-30 18:09:01 +0000 @@ -1,5 +1,30 @@ +2012-12-30 Glenn Morris + + * net/mairix.el (rmail, rmail-summary-displayed, rmail-summary): + Remove unnecessary/buggy autoloads (missing interactive). (Bug#13294) + (rmail-summary-displayed, rmail-summary): Declare. + (mairix-rmail-display): Just require rmail. + +2012-12-30 Chong Yidong + + * emacs-lisp/package.el (package-untar-buffer): Improve integrity + check for the tarball contents. + +2012-12-30 Matt Fidler (tiny change) + + * emacs-lisp/package.el (package-untar-buffer): Handle problematic + tarfile content listings (Bug#13136). + +2012-12-30 Mark Lillibridge + + * mail/rmailmm.el (rmail-insert-mime-forwarded-message): Insert + the undecoded text of the message being forwarded. (Bug#9521) + 2012-12-30 Michael Albinus + * net/tramp-sh.el (tramp-set-file-uid-gid): Convert UID and GID to + integers, if they are real numbers. (Bug#13282) + * net/tramp-sh.el (tramp-sh-handle-set-file-selinux-context): Return `t' on success. === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2012-10-28 20:41:49 +0000 +++ lisp/emacs-lisp/package.el 2012-12-29 11:06:10 +0000 @@ -596,6 +596,8 @@ (defvar tar-parse-info) (declare-function tar-untar-buffer "tar-mode" ()) +(declare-function tar-header-name "tar-mode" (tar-header)) +(declare-function tar-header-link-type "tar-mode" (tar-header)) (defun package-untar-buffer (dir) "Untar the current buffer. @@ -604,10 +606,16 @@ (require 'tar-mode) (tar-mode) ;; Make sure everything extracts into DIR. - (let ((regexp (concat "\\`" (regexp-quote dir) "/"))) + (let ((regexp (concat "\\`" (regexp-quote (expand-file-name dir)) "/")) + (case-fold-search (memq system-type '(windows-nt ms-dos cygwin)))) (dolist (tar-data tar-parse-info) - (unless (string-match regexp (aref tar-data 2)) - (error "Package does not untar cleanly into directory %s/" dir)))) + (let ((name (expand-file-name (tar-header-name tar-data)))) + (or (string-match regexp name) + ;; Tarballs created by some utilities don't list + ;; directories with a trailing slash (Bug#13136). + (and (string-equal dir name) + (eq (tar-header-link-type tar-data) 5)) + (error "Package does not untar cleanly into directory %s/" dir))))) (tar-untar-buffer)) (defun package-unpack (package version) === modified file 'lisp/mail/rmailmm.el' --- lisp/mail/rmailmm.el 2012-10-07 07:49:16 +0000 +++ lisp/mail/rmailmm.el 2012-12-29 08:50:27 +0000 @@ -1368,8 +1368,8 @@ (let ((message-buffer (with-current-buffer forward-buffer (if rmail-buffer-swapped - forward-buffer - rmail-view-buffer)))) + rmail-view-buffer + forward-buffer)))) (save-restriction (narrow-to-region (point) (point)) (message-forward-make-body-mime message-buffer)))) === modified file 'lisp/net/mairix.el' --- lisp/net/mairix.el 2012-07-11 23:13:41 +0000 +++ lisp/net/mairix.el 2012-12-30 03:28:52 +0000 @@ -222,14 +222,12 @@ ;;; RMail -;; Display function: -(autoload 'rmail "rmail") -(autoload 'rmail-summary-displayed "rmail") -(autoload 'rmail-summary "rmailsum") -(defvar rmail-buffer) +(declare-function rmail-summary-displayed "rmail" ()) +(declare-function rmail-summary "rmailsum" ()) ; autoloaded in rmail (defun mairix-rmail-display (folder) "Display mbox file FOLDER with RMail." + (require 'rmail) (let (show-summary) ;; If it exists, select existing RMail window (when (and (boundp 'rmail-buffer) @@ -249,6 +247,8 @@ (when show-summary (rmail-summary)))) +(defvar rmail-buffer) + ;; Fetching mail header field: (defun mairix-rmail-fetch-field (field) "Get mail header FIELD for current message using RMail." === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2012-12-30 10:58:13 +0000 +++ lisp/net/tramp-sh.el 2012-12-30 18:09:01 +0000 @@ -1458,7 +1458,9 @@ ;; working with su(do)? when it is needed, so it shall succeed in ;; the majority of cases. ;; Don't modify `last-coding-system-used' by accident. - (let ((last-coding-system-used last-coding-system-used)) + (let ((last-coding-system-used last-coding-system-used) + (uid (and (numberp uid) (round uid))) + (gid (and (numberp gid) (round gid)))) (if (file-remote-p filename) (with-parsed-tramp-file-name filename nil (if (and (zerop (user-uid)) (tramp-local-host-p v)) === modified file 'lisp/org/ChangeLog' --- lisp/org/ChangeLog 2012-12-20 13:15:43 +0000 +++ lisp/org/ChangeLog 2012-12-30 18:09:01 +0000 @@ -4583,12 +4583,7 @@ (org-set-autofill-regexps): Add previous function to `fill-nobreak-predicate'. -2012-04-01 Vitalie Spinu - - * ob-R.el (org-babel-R-evaluate-session): Inhibit R evaluation - visibility regardless of local user customization. - -2012-04-01 Vitalie Spinu +2012-04-01 Vitalie Spinu (tiny change) * ob-R.el (org-babel-R-evaluate-session): Inhibit R evaluation visibility regardless of local user customization. === modified file 'msdos/ChangeLog' --- msdos/ChangeLog 2012-12-03 01:08:31 +0000 +++ msdos/ChangeLog 2012-12-30 18:09:01 +0000 @@ -1,3 +1,8 @@ +2012-12-30 Eli Zaretskii + + * sed1v2.inp (TEMACS_LDFLAGS2): Remove editing. + (LIBS_GNUSTEP): Edit to empty. + 2012-12-03 Eli Zaretskii * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before === modified file 'msdos/sed1v2.inp' --- msdos/sed1v2.inp 2012-12-01 11:50:05 +0000 +++ msdos/sed1v2.inp 2012-12-30 05:33:03 +0000 @@ -49,7 +49,6 @@ /^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@// /^LD_SWITCH_X_SITE_AUX_RPATH *=/s/@LD_SWITCH_X_SITE_AUX_RPATH@// /^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@// -/^TEMACS_LDFLAGS2 *=/s/@TEMACS_LDFLAGS2@/$(LDFLAGS)/ /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@// /^LIB_GCC *=/s/@LIB_GCC@// /^LIB_STANDARD *=/s/@LIB_STANDARD@// @@ -86,6 +85,7 @@ /^XOBJ *=/s/@XOBJ@// /^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@// /^LIBSOUND *=/s/@LIBSOUND@// +/^LIBS_GNUSTEP *=/s/@LIBS_GNUSTEP@// /^CFLAGS_SOUND *=/s/@CFLAGS_SOUND@// /^RSVG_LIBS *=/s/@RSVG_LIBS@// /^RSVG_CFLAGS *=/s/@RSVG_CFLAGS@// === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-29 17:47:39 +0000 +++ src/ChangeLog 2012-12-30 18:09:01 +0000 @@ -1,3 +1,16 @@ +2012-12-30 Andreas Schwab + + * src/Makefile.in (TEMACS_LDFLAGS2): Remove. + (LIBS_GNUSTEP): Define. + (LIBES): Add $(LIBS_GNUSTEP). + (temacs$(EXEEXT)): Use $(LDFLAGS) instead of $(TEMACS_LDFLAGS2). + +2012-12-30 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): Don't confuse a truncation or + continuation glyph on a TTY with an indication of an empty line. + (Bug#13277) + 2012-12-29 Eli Zaretskii * fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if === modified file 'src/Makefile.in' --- src/Makefile.in 2012-12-16 18:22:27 +0000 +++ src/Makefile.in 2012-12-30 18:09:01 +0000 @@ -111,9 +111,6 @@ ## Flags to pass to ld only for temacs. TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_TEMACS) -## $LDFLAGS or empty if NS_IMPL_GNUSTEP (for some reason). -TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@ - ## If available, the full path to the paxctl program. ## On grsecurity/PaX systems, unexec will fail due to a gap between ## the bss section and the heap. This can be prevented by disabling @@ -230,6 +227,9 @@ ## configure, which should set it to nil in non-X builds. LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE) +## Only used for GNUstep +LIBS_GNUSTEP=@LIBS_GNUSTEP@ + LIBSOUND= @LIBSOUND@ CFLAGS_SOUND= @CFLAGS_SOUND@ @@ -400,7 +400,7 @@ ## Note that SunOS needs -lm to come before -lc; otherwise, you get ## duplicated symbols. If the standard libraries were compiled ## with GCC, we might need LIB_GCC again after them. -LIBES = $(LIBS) $(W32_LIBS) $(LIBX_BASE) $(LIBIMAGE) \ +LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \ $(LIBX_OTHER) $(LIBSOUND) \ $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_CLOCK_GETTIME) \ $(LIB_EACCESS) $(LIB_TIMER_TIME) $(DBUS_LIBS) \ @@ -475,7 +475,7 @@ temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) \ $(lib)/libgnu.a $(W32_RES) - $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ + $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \ -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) \ $(W32_RES_LINK) test "$(CANNOT_DUMP)" = "yes" || \ === modified file 'src/dispextern.h' --- src/dispextern.h 2012-11-29 16:26:25 +0000 +++ src/dispextern.h 2012-12-30 18:09:01 +0000 @@ -317,13 +317,18 @@ Lisp string, this is a position in that string. If it is a buffer, this is a position in that buffer. A value of -1 together with a null object means glyph is a truncation glyph at - the start of a row. */ + the start of a row. Right truncation and continuation glyphs at + the right edge of a row have their position set to the next + buffer position that is not shown on this row. Glyphs inserted + by redisplay, such as the empty space after the end of a line on + TTYs, or the overlay-arrow on a TTY, have this set to -1. */ ptrdiff_t charpos; - /* Lisp object source of this glyph. Currently either a buffer or - a string, if the glyph was produced from characters which came from + /* Lisp object source of this glyph. Currently either a buffer or a + string, if the glyph was produced from characters which came from a buffer or a string; or 0 if the glyph was inserted by redisplay - for its own purposes such as padding. */ + for its own purposes, such as padding or truncation/continuation + glyphs, or the overlay-arrow glyphs on TTYs. */ Lisp_Object object; /* Width in pixels. */ === modified file 'src/xdisp.c' --- src/xdisp.c 2012-12-25 11:37:21 +0000 +++ src/xdisp.c 2012-12-30 18:09:01 +0000 @@ -14189,7 +14189,12 @@ CHARPOS is zero or negative. */ int empty_line_p = (row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end) - && INTEGERP (glyph->object) && glyph->charpos > 0; + && INTEGERP (glyph->object) && glyph->charpos > 0 + /* On a TTY, continued and truncated rows also have a glyph at + their end whose OBJECT is zero and whose CHARPOS is + positive (the continuation and truncation glyphs), but such + rows are obviously not "empty". */ + && !(row->continued_p || row->truncated_on_right_p); if (row->ends_in_ellipsis_p && pos_after == last_pos) { ------------------------------------------------------------ revno: 111378 committer: Michael Albinus branch nick: trunk timestamp: Sun 2012-12-30 11:58:13 +0100 message: * net/tramp-sh.el (tramp-sh-handle-set-file-selinux-context): Return `t' on success. * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add handler for `set-file-selinux-context'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-29 19:11:11 +0000 +++ lisp/ChangeLog 2012-12-30 10:58:13 +0000 @@ -1,3 +1,11 @@ +2012-12-30 Michael Albinus + + * net/tramp-sh.el (tramp-sh-handle-set-file-selinux-context): + Return `t' on success. + + * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add + handler for `set-file-selinux-context'. + 2012-12-29 Michael Albinus * net/tramp-sh.el (tramp-sh-handle-file-acl): Suppress basic attributes. === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2012-12-29 19:11:11 +0000 +++ lisp/net/tramp-sh.el 2012-12-30 10:58:13 +0000 @@ -1530,10 +1530,11 @@ (if (stringp (nth 3 context)) (format "--range=%s" (nth 3 context)) "") (tramp-shell-quote-argument localname)))) - (tramp-set-file-property v localname "file-selinux-context" context) - (tramp-set-file-property v localname "file-selinux-context" 'undef))) - ;; We always return nil. - nil) + (progn + (tramp-set-file-property v localname "file-selinux-context" context) + t) + (tramp-set-file-property v localname "file-selinux-context" 'undef) + nil))) (defun tramp-remote-acl-p (vec) "Check, whether ACL is enabled on the remote host." === modified file 'lisp/net/tramp-smb.el' --- lisp/net/tramp-smb.el 2012-12-17 14:38:07 +0000 +++ lisp/net/tramp-smb.el 2012-12-30 10:58:13 +0000 @@ -230,7 +230,7 @@ (rename-file . tramp-smb-handle-rename-file) (set-file-acl . ignore) (set-file-modes . tramp-smb-handle-set-file-modes) - ;; `set-file-selinux-context' performed by default handler. + (set-file-selinux-context . ignore) (set-file-times . ignore) (set-visited-file-modtime . ignore) (shell-command . tramp-handle-shell-command) ------------------------------------------------------------ revno: 111377 author: Lars Magne Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2012-12-29 23:18:05 +0000 message: lisp/gnus/nnfolder.el: Allow regenerating recursive nnfolder names diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-29 15:16:37 +0000 +++ lisp/gnus/ChangeLog 2012-12-29 23:18:05 +0000 @@ -1,3 +1,9 @@ +2012-12-29 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-recursive-directory-files): New function. + (nnfolder-generate-active-file): Make this function work with recursive + folder names. + 2012-12-27 Lars Ingebrigtsen * nntp.el (nntp-open-connection): Use HELP as the capability command === modified file 'lisp/gnus/nnfolder.el' --- lisp/gnus/nnfolder.el 2012-06-26 22:52:31 +0000 +++ lisp/gnus/nnfolder.el 2012-12-29 23:18:05 +0000 @@ -1004,6 +1004,28 @@ (nnfolder-save-nov)) (current-buffer)))))) +(defun nnfolder-recursive-directory-files (dir prefix) + (let ((files nil)) + (dolist (file (directory-files dir)) + (cond + ((or (file-symlink-p (expand-file-name file dir)) + (member file '("." ".."))) + ;; Ignore + ) + ((file-directory-p (expand-file-name file dir)) + (setq files (nconc (nnfolder-recursive-directory-files + (expand-file-name file dir) + (if prefix + (concat prefix "." (directory-file-name file)) + (file-name-nondirectory file))) + files))) + ((file-regular-p (expand-file-name file dir)) + (push (if prefix + (concat prefix "." file) + file) + files)))) + files)) + ;;;###autoload (defun nnfolder-generate-active-file () "Look for mbox folders in the nnfolder directory and make them into groups. @@ -1020,10 +1042,13 @@ (when (not (message-mail-file-mbox-p file)) (ignore-errors (delete-file file))))) - (dolist (file (directory-files nnfolder-directory)) + (dolist (file (if nnmail-use-long-file-names + (directory-files nnfolder-directory) + (nnfolder-recursive-directory-files + nnfolder-directory nil))) (when (and (not (backup-file-name-p file)) (message-mail-file-mbox-p - (nnheader-concat nnfolder-directory file))) + (nnfolder-group-pathname file))) (let ((oldgroup (assoc file nnfolder-group-alist))) (if oldgroup (nnheader-message 5 "Refreshing group %s..." file) ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.