Now on revision 113593. ------------------------------------------------------------ revno: 113593 committer: Xue Fuqiao branch nick: trunk timestamp: Tue 2013-07-30 14:08:33 +0800 message: ChangeLog fix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-07-30 03:46:06 +0000 +++ lisp/ChangeLog 2013-07-30 06:08:33 +0000 @@ -193,7 +193,7 @@ (vc-dir-ignore): New function. * vc/vc-cvs.el (vc-cvs-ignore): New function. - (cvs-append-to-ignore): Moved from pcvs.el. + (cvs-append-to-ignore): Move here from pcvs.el. * vc/vc-bzr.el (vc-bzr-ignore): New function. ------------------------------------------------------------ revno: 113592 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2013-07-30 09:56:18 +0400 message: * fringe.c (draw_window_fringes, update_window_fringes) (compute_fringe_widths): * w32term.c (x_draw_glyph_string): * window.c (candidate_window_p, Frecenter): * xfaces.c (realize_basic_faces, realize_default_face) (Fbitmap_space_p, Finternal_set_lisp_face_attribute) (x_update_menu_appearance, face_attr_equal_p, lface_equal_p): * xfns.c (x_set_cursor_color, xic_free_xfontset): * xmenu.c (Fx_menu_bar_open_internal): * xselect.c (x_reply_selection_request, Fx_get_atom_name): * xsettings.c (xft_settings_event): * xterm.c (x_draw_glyph_string, x_had_errors_p): Use bool for booleans. Adjust style and comments where appropriate. * dispextern.h (draw_window_fringes, update_window_fringes) (compute_fringe_widths): * xterm.h (x_had_errors_p): Adjust prototype. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-07-30 04:35:44 +0000 +++ src/ChangeLog 2013-07-30 05:56:18 +0000 @@ -1,5 +1,25 @@ 2013-07-30 Dmitry Antipov + * fringe.c (draw_window_fringes, update_window_fringes) + (compute_fringe_widths): + * w32term.c (x_draw_glyph_string): + * window.c (candidate_window_p, Frecenter): + * xfaces.c (realize_basic_faces, realize_default_face) + (Fbitmap_space_p, Finternal_set_lisp_face_attribute) + (x_update_menu_appearance, face_attr_equal_p, lface_equal_p): + * xfns.c (x_set_cursor_color, xic_free_xfontset): + * xmenu.c (Fx_menu_bar_open_internal): + * xselect.c (x_reply_selection_request, Fx_get_atom_name): + * xsettings.c (xft_settings_event): + * xterm.c (x_draw_glyph_string, x_had_errors_p): + Use bool for booleans. Adjust style and comments where + appropriate. + * dispextern.h (draw_window_fringes, update_window_fringes) + (compute_fringe_widths): + * xterm.h (x_had_errors_p): Adjust prototype. + +2013-07-30 Dmitry Antipov + * frame.c (Fmodify_frame_parameters): Always check 2nd arg with CHECK_LIST. Rewrite the loop to avoid useless local variable. === modified file 'src/dispextern.h' --- src/dispextern.h 2013-07-11 02:17:47 +0000 +++ src/dispextern.h 2013-07-30 05:56:18 +0000 @@ -3235,9 +3235,9 @@ int lookup_fringe_bitmap (Lisp_Object); void draw_fringe_bitmap (struct window *, struct glyph_row *, int); void draw_row_fringe_bitmaps (struct window *, struct glyph_row *); -int draw_window_fringes (struct window *, int); -int update_window_fringes (struct window *, int); -void compute_fringe_widths (struct frame *, int); +bool draw_window_fringes (struct window *, bool); +bool update_window_fringes (struct window *, bool); +void compute_fringe_widths (struct frame *, bool); #ifdef HAVE_NTGUI void w32_init_fringe (struct redisplay_interface *); === modified file 'src/fringe.c' --- src/fringe.c 2013-03-28 14:04:49 +0000 +++ src/fringe.c 2013-07-30 05:56:18 +0000 @@ -890,31 +890,32 @@ /* Draw the fringes of window W. Only fringes for rows marked for update in redraw_fringe_bitmaps_p are drawn. - Return >0 if left or right fringe was redrawn in any way. - - If NO_FRINGE is non-zero, also return >0 if either fringe has zero width. - - A return value >0 indicates that the vertical line between windows - needs update (as it may be drawn in the fringe). + Return nonzero if left or right fringe was redrawn in any way. + + If NO_FRINGE_P is non-zero, also return nonzero if either fringe + has zero width. + + A return nonzero value indicates that the vertical line between + windows needs update (as it may be drawn in the fringe). */ -int -draw_window_fringes (struct window *w, int no_fringe) +bool +draw_window_fringes (struct window *w, bool no_fringe_p) { struct glyph_row *row; int yb = window_text_bottom_y (w); int nrows = w->current_matrix->nrows; int y, rn; - int updated = 0; + bool updated_p = 0; if (w->pseudo_window_p) - return 0; + return updated_p; /* Must draw line if no fringe */ - if (no_fringe + if (no_fringe_p && (WINDOW_LEFT_FRINGE_WIDTH (w) == 0 || WINDOW_RIGHT_FRINGE_WIDTH (w) == 0)) - updated++; + updated_p = 1; for (y = w->vscroll, rn = 0, row = w->current_matrix->rows; y < yb && rn < nrows; @@ -924,10 +925,10 @@ continue; draw_row_fringe_bitmaps (w, row); row->redraw_fringe_bitmaps_p = 0; - updated++; + updated_p = 1; } - return updated; + return updated_p; } @@ -936,14 +937,14 @@ If KEEP_CURRENT_P is 0, update current_matrix too. */ -int -update_window_fringes (struct window *w, int keep_current_p) +bool +update_window_fringes (struct window *w, bool keep_current_p) { struct glyph_row *row, *cur = 0; int yb = window_text_bottom_y (w); int rn, nrows = w->current_matrix->nrows; int y; - int redraw_p = 0; + bool redraw_p = 0; Lisp_Object boundary_top = Qnil, boundary_bot = Qnil; Lisp_Object arrow_top = Qnil, arrow_bot = Qnil; Lisp_Object empty_pos; @@ -1169,7 +1170,7 @@ int left, right; unsigned left_face_id, right_face_id; int left_offset, right_offset; - int periodic_p; + bool periodic_p; row = w->desired_matrix->rows + rn; cur = w->current_matrix->rows + rn; @@ -1285,7 +1286,7 @@ || periodic_p != cur->fringe_bitmap_periodic_p || cur->redraw_fringe_bitmaps_p) { - redraw_p = row->redraw_fringe_bitmaps_p = 1; + redraw_p = 1, row->redraw_fringe_bitmaps_p = 1; if (!keep_current_p) { cur->redraw_fringe_bitmaps_p = 1; @@ -1304,7 +1305,7 @@ if (row->overlay_arrow_bitmap != cur->overlay_arrow_bitmap) { - redraw_p = row->redraw_fringe_bitmaps_p = 1; + redraw_p = 1, row->redraw_fringe_bitmaps_p = 1; if (!keep_current_p) { cur->redraw_fringe_bitmaps_p = 1; @@ -1339,7 +1340,7 @@ */ void -compute_fringe_widths (struct frame *f, int redraw) +compute_fringe_widths (struct frame *f, bool redraw_p) { int o_left = FRAME_LEFT_FRINGE_WIDTH (f); int o_right = FRAME_RIGHT_FRINGE_WIDTH (f); @@ -1410,7 +1411,7 @@ FRAME_FRINGE_COLS (f) = 0; } - if (redraw && FRAME_VISIBLE_P (f)) + if (redraw_p && FRAME_VISIBLE_P (f)) if (o_left != FRAME_LEFT_FRINGE_WIDTH (f) || o_right != FRAME_RIGHT_FRINGE_WIDTH (f) || o_cols != FRAME_FRINGE_COLS (f)) === modified file 'src/w32term.c' --- src/w32term.c 2013-07-27 13:08:03 +0000 +++ src/w32term.c 2013-07-30 05:56:18 +0000 @@ -2360,7 +2360,7 @@ static void x_draw_glyph_string (struct glyph_string *s) { - int relief_drawn_p = 0; + bool relief_drawn_p = 0; /* If S draws into the background of its successor, draw the background of the successor first so that S can draw into it. @@ -4629,7 +4629,7 @@ { /* If we decide we want to generate an event to be seen by the rest of Emacs, we put it here. */ - int tool_bar_p = 0; + bool tool_bar_p = 0; int button; int up; === modified file 'src/window.c' --- src/window.c 2013-07-16 21:35:45 +0000 +++ src/window.c 2013-07-30 05:56:18 +0000 @@ -72,8 +72,6 @@ static int freeze_window_start (struct window *, void *); static Lisp_Object window_list (void); static int add_window_to_list (struct window *, void *); -static int candidate_window_p (Lisp_Object, Lisp_Object, Lisp_Object, - Lisp_Object); static Lisp_Object next_window (Lisp_Object, Lisp_Object, Lisp_Object, int); static void decode_next_window_args (Lisp_Object *, Lisp_Object *, @@ -2213,12 +2211,13 @@ a window means search the frame that window belongs to, a frame means consider windows on that frame, only. */ -static int -candidate_window_p (Lisp_Object window, Lisp_Object owindow, Lisp_Object minibuf, Lisp_Object all_frames) +static bool +candidate_window_p (Lisp_Object window, Lisp_Object owindow, + Lisp_Object minibuf, Lisp_Object all_frames) { struct window *w = XWINDOW (window); struct frame *f = XFRAME (w->frame); - int candidate_p = 1; + bool candidate_p = 1; if (!BUFFERP (w->contents)) candidate_p = 0; @@ -5172,7 +5171,7 @@ struct window *w = XWINDOW (selected_window); struct buffer *buf = XBUFFER (w->contents); struct buffer *obuf = current_buffer; - int center_p = 0; + bool center_p = 0; ptrdiff_t charpos, bytepos; EMACS_INT iarg IF_LINT (= 0); int this_scroll_margin; === modified file 'src/xfaces.c' --- src/xfaces.c 2013-07-19 18:09:23 +0000 +++ src/xfaces.c 2013-07-30 05:56:18 +0000 @@ -448,8 +448,8 @@ struct face *); static struct face *realize_x_face (struct face_cache *, Lisp_Object *); static struct face *realize_tty_face (struct face_cache *, Lisp_Object *); -static int realize_basic_faces (struct frame *); -static int realize_default_face (struct frame *); +static bool realize_basic_faces (struct frame *); +static bool realize_default_face (struct frame *); static void realize_named_face (struct frame *, Lisp_Object, int); static struct face_cache *make_face_cache (struct frame *); static void clear_face_gcs (struct face_cache *); @@ -819,7 +819,7 @@ \(WIDTH + 7)/8 bytes. */) (Lisp_Object object) { - int pixmap_p = 0; + bool pixmap_p = 0; if (STRINGP (object)) /* If OBJECT is a string, it's a file name. */ @@ -2854,7 +2854,7 @@ } else if (EQ (attr, QCunderline)) { - int valid_p = 0; + bool valid_p = 0; if (UNSPECIFIEDP (value) || IGNORE_DEFFACE_P (value)) valid_p = 1; @@ -2941,7 +2941,7 @@ } else if (EQ (attr, QCbox)) { - int valid_p; + bool valid_p; /* Allow t meaning a simple box of width 1 in foreground color of the face. */ @@ -3510,7 +3510,7 @@ Lisp_Object lface = lface_from_face_name (f, Qmenu, 1); struct face *face = FACE_FROM_ID (f, MENU_FACE_ID); const char *myname = SSDATA (Vx_resource_name); - int changed_p = 0; + bool changed_p = 0; #ifdef USE_MOTIF const char *popup_path = "popup_menu"; #else @@ -3858,7 +3858,7 @@ all attributes are `equal'. Tries to be fast because this function is called quite often. */ -static int +static bool face_attr_equal_p (Lisp_Object v1, Lisp_Object v2) { /* Type can differ, e.g. when one attribute is unspecified, i.e. nil, @@ -3891,10 +3891,11 @@ all attributes are `equal'. Tries to be fast because this function is called quite often. */ -static int +static bool lface_equal_p (Lisp_Object *v1, Lisp_Object *v2) { - int i, equal_p = 1; + int i; + bool equal_p = 1; for (i = 1; i < LFACE_VECTOR_SIZE && equal_p; ++i) equal_p = face_attr_equal_p (v1[i], v2[i]); @@ -5201,10 +5202,10 @@ of F don't contain enough information needed to realize the default face. */ -static int +static bool realize_basic_faces (struct frame *f) { - int success_p = 0; + bool success_p = 0; ptrdiff_t count = SPECPDL_INDEX (); /* Block input here so that we won't be surprised by an X expose @@ -5249,7 +5250,7 @@ specified, make it fully-specified. Attributes of the default face that are not explicitly specified are taken from frame parameters. */ -static int +static bool realize_default_face (struct frame *f) { struct face_cache *c = FRAME_FACE_CACHE (f); === modified file 'src/xfns.c' --- src/xfns.c 2013-07-16 21:35:45 +0000 +++ src/xfns.c 2013-07-30 05:56:18 +0000 @@ -942,7 +942,7 @@ x_set_cursor_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval) { unsigned long fore_pixel, pixel; - int fore_pixel_allocated_p = 0, pixel_allocated_p = 0; + bool fore_pixel_allocated_p = 0, pixel_allocated_p = 0; struct x_output *x = f->output_data.x; if (!NILP (Vx_cursor_fore_pixel)) @@ -2066,7 +2066,7 @@ xic_free_xfontset (struct frame *f) { Lisp_Object rest, frame; - int shared_p = 0; + bool shared_p = 0; if (!FRAME_XIC_FONTSET (f)) return; === modified file 'src/xmenu.c' --- src/xmenu.c 2013-07-19 01:24:35 +0000 +++ src/xmenu.c 2013-07-30 05:56:18 +0000 @@ -493,7 +493,7 @@ if (menubar) { Window child; - int error_p = 0; + bool error_p = 0; x_catch_errors (FRAME_X_DISPLAY (f)); memset (&ev, 0, sizeof ev); === modified file 'src/xselect.c' --- src/xselect.c 2013-07-16 21:35:45 +0000 +++ src/xselect.c 2013-07-30 05:56:18 +0000 @@ -654,7 +654,7 @@ if (cs->wait_object) { int format_bytes = cs->format / 8; - int had_errors = x_had_errors_p (display); + bool had_errors_p = x_had_errors_p (display); unblock_input (); bytes_remaining = cs->size; @@ -662,7 +662,7 @@ /* Wait for the requestor to ack by deleting the property. This can run Lisp code (process handlers) or signal. */ - if (! had_errors) + if (! had_errors_p) { TRACE1 ("Waiting for ACK (deletion of %s)", XGetAtomName (display, cs->property)); @@ -694,10 +694,10 @@ cs->data += i * ((cs->format == 32) ? sizeof (long) : format_bytes); XFlush (display); - had_errors = x_had_errors_p (display); + had_errors_p = x_had_errors_p (display); unblock_input (); - if (had_errors) break; + if (had_errors_p) break; /* Wait for the requestor to ack this chunk by deleting the property. This can run Lisp code or signal. */ @@ -2427,17 +2427,17 @@ Lisp_Object ret = Qnil; Display *dpy = FRAME_X_DISPLAY (f); Atom atom; - int had_errors; + bool had_errors_p; CONS_TO_INTEGER (value, Atom, atom); block_input (); x_catch_errors (dpy); name = atom ? XGetAtomName (dpy, atom) : empty; - had_errors = x_had_errors_p (dpy); + had_errors_p = x_had_errors_p (dpy); x_uncatch_errors (); - if (!had_errors) + if (!had_errors_p) ret = build_string (name); if (atom && name) XFree (name); === modified file 'src/xsettings.c' --- src/xsettings.c 2013-07-10 23:23:57 +0000 +++ src/xsettings.c 2013-07-30 05:56:18 +0000 @@ -756,8 +756,7 @@ void xft_settings_event (struct x_display_info *dpyinfo, XEvent *event) { - int check_window_p = 0; - int apply_settings = 0; + bool check_window_p = 0, apply_settings_p = 0; switch (event->type) { @@ -777,7 +776,7 @@ if (event->xproperty.window == dpyinfo->xsettings_window && event->xproperty.state == PropertyNewValue && event->xproperty.atom == dpyinfo->Xatom_xsettings_prop) - apply_settings = 1; + apply_settings_p = 1; break; } @@ -787,10 +786,10 @@ dpyinfo->xsettings_window = None; get_prop_window (dpyinfo); if (dpyinfo->xsettings_window != None) - apply_settings = 1; + apply_settings_p = 1; } - if (apply_settings) + if (apply_settings_p) read_and_apply_settings (dpyinfo, True); } === modified file 'src/xterm.c' --- src/xterm.c 2013-07-26 07:38:18 +0000 +++ src/xterm.c 2013-07-30 05:56:18 +0000 @@ -2691,7 +2691,7 @@ static void x_draw_glyph_string (struct glyph_string *s) { - int relief_drawn_p = 0; + bool relief_drawn_p = 0; /* If S draws into the background of its successors, draw the background of the successors first so that S can draw into it. @@ -6854,7 +6854,7 @@ { /* If we decide we want to generate an event to be seen by the rest of Emacs, we put it here. */ - int tool_bar_p = 0; + bool tool_bar_p = 0; memset (&compose_status, 0, sizeof (compose_status)); last_mouse_glyph_frame = 0; @@ -7663,7 +7663,7 @@ /* Nonzero if we had any X protocol errors since we did x_catch_errors on DPY. */ -int +bool x_had_errors_p (Display *dpy) { /* Make sure to catch any errors incurred so far. */ === modified file 'src/xterm.h' --- src/xterm.h 2013-07-05 16:58:01 +0000 +++ src/xterm.h 2013-07-30 05:56:18 +0000 @@ -947,7 +947,7 @@ extern void x_catch_errors (Display *); extern void x_check_errors (Display *, const char *) ATTRIBUTE_FORMAT_PRINTF (2, 0); -extern int x_had_errors_p (Display *); +extern bool x_had_errors_p (Display *); extern void x_uncatch_errors (void); extern void x_clear_errors (Display *); extern void x_set_window_size (struct frame *, int, int, int); ------------------------------------------------------------ revno: 113591 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2013-07-30 08:35:44 +0400 message: * frame.c (Fmodify_frame_parameters): Always check 2nd arg with CHECK_LIST. Rewrite the loop to avoid useless local variable. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-07-29 17:28:07 +0000 +++ src/ChangeLog 2013-07-30 04:35:44 +0000 @@ -1,3 +1,8 @@ +2013-07-30 Dmitry Antipov + + * frame.c (Fmodify_frame_parameters): Always check 2nd arg with + CHECK_LIST. Rewrite the loop to avoid useless local variable. + 2013-07-29 Dmitry Antipov * fns.c (toplevel): Remove comment before Fsafe_length because === modified file 'src/frame.c' --- src/frame.c 2013-07-28 19:36:23 +0000 +++ src/frame.c 2013-07-30 04:35:44 +0000 @@ -2253,7 +2253,9 @@ (Lisp_Object frame, Lisp_Object alist) { struct frame *f = decode_live_frame (frame); - register Lisp_Object tail, prop, val; + register Lisp_Object prop, val; + + CHECK_LIST (alist); /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM @@ -2278,12 +2280,11 @@ /* Extract parm names and values into those vectors. */ - i = 0; - for (tail = alist; CONSP (tail); tail = XCDR (tail)) + for (i = 0; CONSP (alist); alist = XCDR (alist)) { Lisp_Object elt; - elt = XCAR (tail); + elt = XCAR (alist); parms[i] = Fcar (elt); values[i] = Fcdr (elt); i++; ------------------------------------------------------------ revno: 113590 committer: Xue Fuqiao branch nick: trunk timestamp: Tue 2013-07-30 11:46:06 +0800 message: vc-ignore fixes. * vc/vc-svn.el (vc-svn-ignore): Remove `interactive'. Use `*vc*' buffer for output. * vc/vc-hg.el (vc-hg-ignore): Remove `interactive'; do not assume point-min==1; fix search string; fix parentheses missing. * vc/vc-git.el (vc-git-ignore): Remove `interactive'; do not assume point-min==1; fix search string; fix parentheses missing. * vc/vc-cvs.el (vc-cvs-ignore): Remove `interactive'. * vc/vc-bzr.el (vc-bzr-ignore): Remove `interactive'. Use `*vc*' buffer for output. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-07-30 00:29:09 +0000 +++ lisp/ChangeLog 2013-07-30 03:46:06 +0000 @@ -1,3 +1,19 @@ +2013-07-30 Xue Fuqiao + + * vc/vc-svn.el (vc-svn-ignore): Remove `interactive'. Use `*vc*' + buffer for output. + + * vc/vc-hg.el (vc-hg-ignore): Remove `interactive'; do not assume + point-min==1; fix search string; fix parentheses missing. + + * vc/vc-git.el (vc-git-ignore): Remove `interactive'; do not + assume point-min==1; fix search string; fix parentheses missing. + + * vc/vc-cvs.el (vc-cvs-ignore): Remove `interactive'. + + * vc/vc-bzr.el (vc-bzr-ignore): Remove `interactive'. Use `*vc*' + buffer for output. + 2013-07-29 Eli Zaretskii * frame.el (frame-notice-user-settings): Avoid inflooping when the === modified file 'lisp/vc/vc-bzr.el' --- lisp/vc/vc-bzr.el 2013-07-30 00:25:31 +0000 +++ lisp/vc/vc-bzr.el 2013-07-30 03:46:06 +0000 @@ -653,9 +653,7 @@ (defun vc-bzr-ignore (file) "Ignore FILE under Bazaar." - (interactive) - (vc-bzr-command "ignore" (get-buffer-create "*vc-ignore*") 0 - file)) + (vc-bzr-command "ignore" t 0 file)) (defun vc-bzr-checkout (_file &optional _editable rev) (if rev (error "Operation not supported") === modified file 'lisp/vc/vc-cvs.el' --- lisp/vc/vc-cvs.el 2013-07-30 00:25:31 +0000 +++ lisp/vc/vc-cvs.el 2013-07-30 03:46:06 +0000 @@ -1228,7 +1228,6 @@ (defun vc-cvs-ignore (file) "Ignore FILE under CVS." - (interactive) (cvs-append-to-ignore (file-name-directory file) file)) (defun cvs-append-to-ignore (dir str &optional old-dir) === modified file 'lisp/vc/vc-git.el' --- lisp/vc/vc-git.el 2013-07-30 00:25:31 +0000 +++ lisp/vc/vc-git.el 2013-07-30 03:46:06 +0000 @@ -682,15 +682,14 @@ (defun vc-git-ignore (file) "Ignore FILE under Git." - (interactive) (with-temp-buffer (insert-file-contents - (let (gitignore (concat (file-name-as-directory (vc-git-root - default-directory)) ".gitignore")) - (unless (search-forward file nil t) + (let ((gitignore (concat (file-name-as-directory (vc-git-root + default-directory)) ".gitignore"))) + (unless (search-forward (concat "\n" file "\n") nil t) (goto-char (point-max)) (insert (concat "\n" file "\n")) - (write-region 1 (point-max) gitignore)))))) + (write-region (point-min) (point-max) gitignore)))))) (defun vc-git-checkout (file &optional _editable rev) (vc-git-command nil 0 file "checkout" (or rev "HEAD"))) === modified file 'lisp/vc/vc-hg.el' --- lisp/vc/vc-hg.el 2013-07-30 00:25:31 +0000 +++ lisp/vc/vc-hg.el 2013-07-30 03:46:06 +0000 @@ -461,15 +461,14 @@ (defun vc-hg-ignore (file) "Ignore FILE under Mercurial." - (interactive) (with-temp-buffer (insert-file-contents - (let (hgignore (concat (file-name-as-directory (vc-hg-root - default-directory)) ".hgignore")) - (unless (search-forward file nil t) + (let ((hgignore (concat (file-name-as-directory (vc-hg-root + default-directory)) ".hgignore"))) + (unless (search-forward (concat "\n" file "\n") nil t) (goto-char (point-max)) (insert (concat "\n" file "\n")) - (write-region 1 (point-max) hgignore)))))) + (write-region (point-min) (point-max) hgignore)))))) ;; Modeled after the similar function in vc-bzr.el (defun vc-hg-checkout (file &optional _editable rev) === modified file 'lisp/vc/vc-svn.el' --- lisp/vc/vc-svn.el 2013-07-30 00:25:31 +0000 +++ lisp/vc/vc-svn.el 2013-07-30 03:46:06 +0000 @@ -354,9 +354,7 @@ (defun vc-svn-ignore (file) "Ignore FILE under Subversion." - (interactive) - (vc-svn-command (get-buffer-create "*vc-ignore*") 0 - file "propedit" "svn:ignore")) + (vc-svn-command t 0 file "propedit" "svn:ignore")) (defun vc-svn-checkout (file &optional editable rev) (message "Checking out %s..." file) ------------------------------------------------------------ revno: 113589 [merge] committer: Xue Fuqiao branch nick: trunk timestamp: Tue 2013-07-30 08:31:34 +0800 message: Merge: Add vc-ignore. diff: === modified file 'etc/NEWS' --- etc/NEWS 2013-07-27 00:09:51 +0000 +++ etc/NEWS 2013-07-30 00:29:09 +0000 @@ -237,6 +237,7 @@ *** `D' displays diffs between VC-controlled whole tree revisions. *** `L' lists the change log for the current VC controlled tree in a window. +*** `I' ignores the file under current version control system. ** cl-lib === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-07-29 16:34:53 +0000 +++ lisp/ChangeLog 2013-07-30 00:29:09 +0000 @@ -163,6 +163,26 @@ (desktop--make-frame): On cl-delete-if call, check parameter name, not full parameter. +2013-07-30 Xue Fuqiao + + * vc/vc.el (vc-ignore): New function. + + * vc/vc-svn.el (vc-svn-ignore): New function. + + * vc/vc-hg.el (vc-hg-ignore): New function. + + * vc/vc-git.el (vc-git-ignore): New function. + + * vc/vc-dir.el (vc-dir-mode-map): Add key binding for vc-dir-ignore + (vc-dir-ignore): New function. + + * vc/vc-cvs.el (vc-cvs-ignore): New function. + (cvs-append-to-ignore): Moved from pcvs.el. + + * vc/vc-bzr.el (vc-bzr-ignore): New function. + + * vc/pcvs.el (vc-cvs): Require 'vc-cvs. + 2013-07-24 Juanma Barranquero * desktop.el (desktop-restoring-frames-p): Return a true boolean. === modified file 'lisp/vc/pcvs.el' --- lisp/vc/pcvs.el 2013-01-08 17:34:35 +0000 +++ lisp/vc/pcvs.el 2013-07-30 00:25:31 +0000 @@ -122,6 +122,7 @@ (require 'pcvs-util) (require 'pcvs-parse) (require 'pcvs-info) +(require 'vc-cvs) ;;;; @@ -1970,25 +1971,6 @@ (declare-function vc-editable-p "vc" (file)) (declare-function vc-checkout "vc" (file &optional writable rev)) -(defun cvs-append-to-ignore (dir str &optional old-dir) - "Add STR to the .cvsignore file in DIR. -If OLD-DIR is non-nil, then this is a directory that we don't want -to hear about anymore." - (with-current-buffer - (find-file-noselect (expand-file-name ".cvsignore" dir)) - (when (ignore-errors - (and buffer-read-only - (eq 'CVS (vc-backend buffer-file-name)) - (not (vc-editable-p buffer-file-name)))) - ;; CVSREAD=on special case - (vc-checkout buffer-file-name t)) - (goto-char (point-max)) - (unless (bolp) (insert "\n")) - (insert str (if old-dir "/\n" "\n")) - (if cvs-sort-ignore-file (sort-lines nil (point-min) (point-max))) - (save-buffer))) - - (defun cvs-mode-find-file-other-window (e) "Select a buffer containing the file in another window." (interactive (list last-input-event)) === modified file 'lisp/vc/vc-bzr.el' --- lisp/vc/vc-bzr.el 2013-05-28 07:01:59 +0000 +++ lisp/vc/vc-bzr.el 2013-07-30 00:25:31 +0000 @@ -651,6 +651,12 @@ (vc-bzr-command "cat" t 0 file "-r" rev) (vc-bzr-command "cat" t 0 file)))) +(defun vc-bzr-ignore (file) + "Ignore FILE under Bazaar." + (interactive) + (vc-bzr-command "ignore" (get-buffer-create "*vc-ignore*") 0 + file)) + (defun vc-bzr-checkout (_file &optional _editable rev) (if rev (error "Operation not supported") ;; Else, there's nothing to do. === modified file 'lisp/vc/vc-cvs.el' --- lisp/vc/vc-cvs.el 2013-06-09 11:15:54 +0000 +++ lisp/vc/vc-cvs.el 2013-07-30 00:25:31 +0000 @@ -1226,6 +1226,28 @@ table (lambda () (vc-cvs-revision-table (car files)))))) table)) +(defun vc-cvs-ignore (file) + "Ignore FILE under CVS." + (interactive) + (cvs-append-to-ignore (file-name-directory file) file)) + +(defun cvs-append-to-ignore (dir str &optional old-dir) + "In DIR, add STR to the .cvsignore file. +If OLD-DIR is non-nil, then this is a directory that we don't want +to hear about anymore." + (with-current-buffer + (find-file-noselect (expand-file-name ".cvsignore" dir)) + (when (ignore-errors + (and buffer-read-only + (eq 'CVS (vc-backend buffer-file-name)) + (not (vc-editable-p buffer-file-name)))) + ;; CVSREAD=on special case + (vc-checkout buffer-file-name t)) + (goto-char (point-max)) + (unless (bolp) (insert "\n")) + (insert str (if old-dir "/\n" "\n")) + (if cvs-sort-ignore-file (sort-lines nil (point-min) (point-max))) + (save-buffer))) (provide 'vc-cvs) === modified file 'lisp/vc/vc-dir.el' --- lisp/vc/vc-dir.el 2013-07-27 00:09:51 +0000 +++ lisp/vc/vc-dir.el 2013-07-30 00:29:09 +0000 @@ -279,6 +279,7 @@ (define-key map "Q" 'vc-dir-query-replace-regexp) (define-key map (kbd "M-s a C-s") 'vc-dir-isearch) (define-key map (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp) + (define-key map "I" 'vc-dir-ignore) ;; Hook up the menu. (define-key map [menu-bar vc-dir-mode] @@ -791,6 +792,11 @@ (tags-query-replace from to delimited '(mapcar 'car (vc-dir-marked-only-files-and-states)))) +(defun vc-dir-ignore () + "Ignore the current file." + (interactive) + (vc-ignore (vc-dir-current-file))) + (defun vc-dir-current-file () (let ((node (ewoc-locate vc-ewoc))) (unless node === modified file 'lisp/vc/vc-git.el' --- lisp/vc/vc-git.el 2013-05-28 07:47:11 +0000 +++ lisp/vc/vc-git.el 2013-07-30 00:25:31 +0000 @@ -103,6 +103,8 @@ ;; - rename-file (old new) OK ;; - find-file-hook () NOT NEEDED +;;; Code: + (eval-when-compile (require 'cl-lib) (require 'vc) @@ -678,6 +680,18 @@ nil "cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname)))) +(defun vc-git-ignore (file) + "Ignore FILE under Git." + (interactive) + (with-temp-buffer + (insert-file-contents + (let (gitignore (concat (file-name-as-directory (vc-git-root + default-directory)) ".gitignore")) + (unless (search-forward file nil t) + (goto-char (point-max)) + (insert (concat "\n" file "\n")) + (write-region 1 (point-max) gitignore)))))) + (defun vc-git-checkout (file &optional _editable rev) (vc-git-command nil 0 file "checkout" (or rev "HEAD"))) === modified file 'lisp/vc/vc-hg.el' --- lisp/vc/vc-hg.el 2013-05-28 07:47:11 +0000 +++ lisp/vc/vc-hg.el 2013-07-30 00:25:31 +0000 @@ -459,6 +459,18 @@ (vc-hg-command buffer 0 file "cat" "-r" rev) (vc-hg-command buffer 0 file "cat")))) +(defun vc-hg-ignore (file) + "Ignore FILE under Mercurial." + (interactive) + (with-temp-buffer + (insert-file-contents + (let (hgignore (concat (file-name-as-directory (vc-hg-root + default-directory)) ".hgignore")) + (unless (search-forward file nil t) + (goto-char (point-max)) + (insert (concat "\n" file "\n")) + (write-region 1 (point-max) hgignore)))))) + ;; Modeled after the similar function in vc-bzr.el (defun vc-hg-checkout (file &optional _editable rev) "Retrieve a revision of FILE. === modified file 'lisp/vc/vc-svn.el' --- lisp/vc/vc-svn.el 2013-05-28 07:01:59 +0000 +++ lisp/vc/vc-svn.el 2013-07-30 00:25:31 +0000 @@ -352,6 +352,12 @@ (concat "-r" rev)) (vc-switches 'SVN 'checkout)))) +(defun vc-svn-ignore (file) + "Ignore FILE under Subversion." + (interactive) + (vc-svn-command (get-buffer-create "*vc-ignore*") 0 + file "propedit" "svn:ignore")) + (defun vc-svn-checkout (file &optional editable rev) (message "Checking out %s..." file) (with-current-buffer (or (get-file-buffer file) (current-buffer)) === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2013-06-11 22:14:30 +0000 +++ lisp/vc/vc.el 2013-07-30 00:25:31 +0000 @@ -1332,6 +1332,12 @@ (let ((vc-handled-backends (list backend))) (call-interactively 'vc-register))) +(defun vc-ignore (file) + "Ignore FILE under the current VCS." + (interactive "fIgnore file: ") + (let ((backend (vc-backend file))) + (vc-call-backend backend 'ignore file))) + (defun vc-checkout (file &optional writable rev) "Retrieve a copy of the revision REV of FILE. If WRITABLE is non-nil, make sure the retrieved file is writable. ------------------------------------------------------------ revno: 113588 [merge] committer: David Engster branch nick: trunk timestamp: Mon 2013-07-29 22:28:22 +0200 message: Merge CEDET upstream (rev. 8579) diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2013-07-29 09:07:30 +0000 +++ doc/misc/ChangeLog 2013-07-29 20:28:22 +0000 @@ -1,3 +1,11 @@ +2013-07-29 David Engster + + * eieio.texi (top): Make clear that EIEIO is not a full CLOS + implementation. + (Introduction): Add further missing features. + (Building Classes): Add introductory paragraph. + (Wish List): Add metaclasses and EQL specialization. + 2013-07-29 Michael Albinus * tramp.texi (Frequently Asked Questions): Mention === modified file 'doc/misc/eieio.texi' --- doc/misc/eieio.texi 2013-01-01 09:11:05 +0000 +++ doc/misc/eieio.texi 2013-07-29 20:26:19 +0000 @@ -46,10 +46,10 @@ @comment node-name, next, previous, up @top EIEIO -@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is -a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp. -It provides a framework for writing object-oriented applications in -Emacs. +@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') +provides an Object Oriented layer for Emacs Lisp, following the basic +concepts of the Common Lisp Object System (CLOS). It provides a +framework for writing object-oriented applications in Emacs. @ifnottex @insertcopying @@ -201,8 +201,6 @@ @item Help system extensions for classes and methods. @item -Automatic texinfo documentation generator. -@item Several base classes for interesting tasks. @item Simple test suite. @@ -212,20 +210,31 @@ Customization support in a class (extension to CLOS) @end enumerate -Here are some CLOS features that @eieio{} presently lacks: +Here are some important CLOS features that @eieio{} presently lacks: @table @asis -@item Complete @code{defclass} tag support -All CLOS tags are currently supported, but the following are not -currently implemented correctly: - -@table @code -@item :metaclass -There is only one base superclass for all @eieio{} classes, which is -the @code{eieio-default-superclass}. -@item :default-initargs + +@item Method dispatch +EIEO does not support method dispatch for built-in types and multiple +arguments types. In other words, method dispatch only looks at the +first argument, and this one must be an @eieio{} type. + +@item Support for metaclasses +There is just one default metaclass, @code{eieio-default-superclass}, +and you cannot define your own. The @code{:metaclass} tag in +@code{defclass} is ignored. Also, functions like `class-of' and +`find-class', which should return instances of the metaclass, behave +differently in @eieio{} in that they return symbols or plain structures +instead. + +@item EQL specialization +EIEIO does not support it. + +@item @code{:around} method tag +This CLOS method tag is non-functional. + +@item :default-initargs in @code{defclass} Each slot has an @code{:initarg} tag, so this is not really necessary. -@end table @item Mock object initializers Each class contains a mock object used for fast initialization of @@ -233,15 +242,23 @@ values can potentially cause modifications in the mock object. @eieio{} should use a deep copy but currently does not. -@item @code{:around} method tag -This CLOS method tag is non-functional. - @end table @node Building Classes @comment node-name, next, previous, up @chapter Building Classes +First off, please note that this manual cannot serve as a complete +introduction to object oriented programming and generic functions in +LISP. Although EIEIO is not a complete CLOS implementation and also +differs from CLOS in several aspects, it follows the same basic +concepts. Therefore, it is highly recommended to learn these from a +textbook or tutorial first, especially if you only know OOP from +languages like C++ or Java. If on the other hand you are already +familiar with CLOS, you should be aware that @eieio{} does not implement +the full CLOS specificiation and also differs in some other aspects +(@xref{Introduction}, and @ref{CLOS compatibility}). + A @dfn{class} is a definition for organizing data and methods together. An @eieio{} class has structures similar to the classes found in other object-oriented (OO) languages. @@ -1930,8 +1947,9 @@ @enumerate @item +Support for metaclasses and EQL specialization. +@item @code{:around} method key. - @item Method dispatch for built-in types. @item === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2013-07-27 21:09:43 +0000 +++ lisp/cedet/ChangeLog 2013-07-29 20:26:19 +0000 @@ -1,3 +1,20 @@ +2013-07-29 David Engster + + * lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its + development does no longer happens in CEDET upstream but in Emacs + proper. Also remove cedet-contrib and cogre since those are only + in upstream. + + * semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE + has a parent, return a fully qualified name. + + * semantic/decorate/mode.el + (semantic-decoration-on-includes-p-default) + (semantic-decoration-on-includes-highlight-default): Declare for + byte compiler. + + * semantic/wisent/python.el (semantic/format): New require. + 2013-07-27 Eric Ludlam * lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap === modified file 'lisp/cedet/cedet.el' --- lisp/cedet/cedet.el 2013-01-31 19:58:56 +0000 +++ lisp/cedet/cedet.el 2013-07-29 20:26:19 +0000 @@ -46,9 +46,6 @@ (semantic "2.2" nil "semantic/doc") (srecode "1.2" nil "srecode" ) (ede "1.2" nil "ede" ) - (speedbar "1.0.4" nil "speedbar" ) - (cogre "1.2" nil "cogre" ) - (cedet-contrib "1.2" "contrib" nil ) ) "Table of CEDET packages to install.") === modified file 'lisp/cedet/semantic/analyze/fcn.el' --- lisp/cedet/semantic/analyze/fcn.el 2013-06-01 18:02:58 +0000 +++ lisp/cedet/semantic/analyze/fcn.el 2013-07-29 20:26:19 +0000 @@ -165,7 +165,10 @@ The TYPE field in a tag can be nil (return nil) or a string, or a non-positional tag." (cond ((semantic-tag-p type) - (semantic-tag-name type)) + (if (semantic-tag-named-parent type) + (semantic-analyze-unsplit-name `(,(semantic-tag-named-parent type) + ,(semantic-tag-name type))) + (semantic-tag-name type))) ((stringp type) type) ((listp type) === modified file 'lisp/cedet/semantic/decorate/mode.el' --- lisp/cedet/semantic/decorate/mode.el 2013-06-19 07:28:47 +0000 +++ lisp/cedet/semantic/decorate/mode.el 2013-07-29 20:26:19 +0000 @@ -541,6 +541,10 @@ ;;; Decoration Modes in other files ;; +(declare-function semantic-decoration-on-includes-p-default + "semantic/decorate/include") +(declare-function semantic-decoration-on-includes-highlight-default + "semantic/decorate/include") (define-semantic-decoration-style semantic-decoration-on-includes "Highlight class members that are includes. This mode provides a nice context menu on the include statements." === modified file 'lisp/cedet/semantic/wisent/python.el' --- lisp/cedet/semantic/wisent/python.el 2013-06-02 13:33:09 +0000 +++ lisp/cedet/semantic/wisent/python.el 2013-07-29 20:26:19 +0000 @@ -39,6 +39,7 @@ (require 'semantic/find) (require 'semantic/dep) (require 'semantic/ctxt) +(require 'semantic/format) (eval-when-compile (require 'cl)) ------------------------------------------------------------ revno: 113587 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2013-07-29 21:28:07 +0400 message: * fns.c (toplevel): Remove comment before Fsafe_length because it checks for QUIT. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-07-28 19:36:23 +0000 +++ src/ChangeLog 2013-07-29 17:28:07 +0000 @@ -1,3 +1,8 @@ +2013-07-29 Dmitry Antipov + + * fns.c (toplevel): Remove comment before Fsafe_length because + it checks for QUIT. + 2013-07-28 Paul Eggert * frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970). === modified file 'src/fns.c' --- src/fns.c 2013-07-16 21:35:45 +0000 +++ src/fns.c 2013-07-29 17:28:07 +0000 @@ -146,8 +146,6 @@ return val; } -/* This does not check for quits. That is safe since it must terminate. */ - DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0, doc: /* Return the length of a list, but avoid error or infinite loop. This function never gets an error. If LIST is not really a list, ------------------------------------------------------------ revno: 113586 fixes bug: http://debbugs.gnu.org/14841 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2013-07-29 19:34:53 +0300 message: Fix infloop on MS-Windows when initial frame lacks minibuffer. lisp/frame.el (frame-notice-user-settings): Avoid inflooping when the initial frame is minibuffer-less. (Bug#14841) diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-07-29 07:47:53 +0000 +++ lisp/ChangeLog 2013-07-29 16:34:53 +0000 @@ -1,3 +1,8 @@ +2013-07-29 Eli Zaretskii + + * frame.el (frame-notice-user-settings): Avoid inflooping when the + initial frame is minibuffer-less. (Bug#14841) + 2013-07-29 Michael Albinus * net/tramp.el (tramp-use-ssh-controlmaster-options): New customer === modified file 'lisp/frame.el' --- lisp/frame.el 2013-07-21 04:22:33 +0000 +++ lisp/frame.el 2013-07-29 16:34:53 +0000 @@ -317,6 +317,9 @@ t)) ;; Create the new frame. (let (parms new) + ;; MS-Windows needs this to avoid inflooping below. + (if (eq system-type 'windows-nt) + (sit-for 0 t)) ;; If the frame isn't visible yet, wait till it is. ;; If the user has to position the window, ;; Emacs doesn't know its real position until ------------------------------------------------------------ revno: 113585 committer: Michael Albinus branch nick: trunk timestamp: Mon 2013-07-29 13:35:16 +0200 message: * INSTALL (DETAILED BUILDING AND INSTALLATION): Add --without-file-notification to --without-all. diff: === modified file 'ChangeLog' --- ChangeLog 2013-07-29 01:32:01 +0000 +++ ChangeLog 2013-07-29 11:35:16 +0000 @@ -1,3 +1,8 @@ +2013-07-29 Michael Albinus + + * INSTALL (DETAILED BUILDING AND INSTALLATION): Add + --without-file-notification to --without-all. + 2013-07-29 Xue Fuqiao * INSTALL: Fix description. === modified file 'INSTALL' --- INSTALL 2013-07-29 01:32:01 +0000 +++ INSTALL 2013-07-29 11:35:16 +0000 @@ -323,14 +323,15 @@ --without-selinux --without-xft --without-gsettings --without-gnutls --without-rsvg --without-xml2 --without-gconf --without-imagemagick --without-m17n-flt --without-jpeg --without-tiff --without-gif ---without-png --without-gpm. Note that --without-all leaves X support -enabled, and using the GTK2 or GTK3 toolkit creates a lot of library -dependencies. So if you want to build a small executable with very basic -X support, use --without-all --with-x-toolkit=no. For the smallest possible -executable without X, use --without-all --without-x. If you want to build -with just a few features enabled, you can combine --without-all with ---with-FEATURE. For example, you can use --without-all --with-dbus -to build with DBus support and nothing more. +--without-png --without-gpm --without-file-notification. Note that +--without-all leaves X support enabled, and using the GTK2 or GTK3 +toolkit creates a lot of library dependencies. So if you want to +build a small executable with very basic X support, use --without-all +--with-x-toolkit=no. For the smallest possible executable without X, +use --without-all --without-x. If you want to build with just a few +features enabled, you can combine --without-all with --with-FEATURE. +For example, you can use --without-all --with-dbus to build with DBus +support and nothing more. Use --with-wide-int to implement Emacs values with the type 'long long', even on hosts where a narrower type would do. With this option, on a ------------------------------------------------------------ revno: 113584 committer: Michael Albinus branch nick: trunk timestamp: Mon 2013-07-29 11:07:30 +0200 message: * tramp.texi (Frequently Asked Questions): Mention `tramp-use-ssh-controlmaster-options'. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2013-07-26 22:24:33 +0000 +++ doc/misc/ChangeLog 2013-07-29 09:07:30 +0000 @@ -1,3 +1,8 @@ +2013-07-29 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Mention + `tramp-use-ssh-controlmaster-options'. + 2013-07-26 Tassilo Horn * gnus.texi (Sorting the Summary Buffer): Document new defcustom === modified file 'doc/misc/tramp.texi' --- doc/misc/tramp.texi 2013-06-19 13:21:15 +0000 +++ doc/misc/tramp.texi 2013-07-29 09:07:30 +0000 @@ -3186,13 +3186,13 @@ @end lisp Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and -"%%p", respectively. The entries of @code{ControlPath}, -@code{ControlMaster} and @code{ControlPersist} can be removed from -this setting, if they are configured properly in your -@file{~/.ssh/config}: +"%%p", respectively. + +These settings can be suppressed, if they are configured properly in +your @file{~/.ssh/config}: @lisp -(setq tramp-ssh-controlmaster-options "") +(setq tramp-use-ssh-controlmaster-options nil) @end lisp ------------------------------------------------------------ revno: 113583 committer: Michael Albinus branch nick: trunk timestamp: Mon 2013-07-29 09:47:53 +0200 message: * net/tramp.el (tramp-use-ssh-controlmaster-options): New customer option. * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band) (tramp-maybe-open-connection): Use it. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-07-28 23:19:25 +0000 +++ lisp/ChangeLog 2013-07-29 07:47:53 +0000 @@ -1,3 +1,11 @@ +2013-07-29 Michael Albinus + + * net/tramp.el (tramp-use-ssh-controlmaster-options): New customer + option. + + * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band) + (tramp-maybe-open-connection): Use it. + 2013-07-28 Juanma Barranquero * desktop.el (desktop--make-frame): Include `minibuffer' in the === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2013-07-24 13:29:15 +0000 +++ lisp/net/tramp-sh.el 2013-07-29 07:47:53 +0000 @@ -2248,7 +2248,10 @@ spec (format-spec-make ?t (tramp-get-connection-property (tramp-get-connection-process v) "temp-file" "")) - options (format-spec tramp-ssh-controlmaster-options spec) + options (format-spec + (if tramp-use-ssh-controlmaster-options + tramp-ssh-controlmaster-options "") + spec) spec (format-spec-make ?h host ?u user ?p port ?c options ?k (if keep-date " " "")) @@ -4416,7 +4419,8 @@ (let* ((target-alist (tramp-compute-multi-hops vec)) ;; We will apply `tramp-ssh-controlmaster-options' ;; only for the first hop. - (options tramp-ssh-controlmaster-options) + (options (if tramp-use-ssh-controlmaster-options + tramp-ssh-controlmaster-options "")) (process-connection-type tramp-process-connection-type) (process-adaptive-read-buffering nil) (coding-system-for-read nil) === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2013-07-24 13:29:15 +0000 +++ lisp/net/tramp.el 2013-07-29 07:47:53 +0000 @@ -305,6 +305,14 @@ "Call ssh to detect whether it supports the Control* arguments. Return a string to be used in `tramp-methods'.") +;;;###tramp-autoload +(defcustom tramp-use-ssh-controlmaster-options + (not (zerop (length tramp-ssh-controlmaster-options))) + "Whether to use `tramp-ssh-controlmaster-options'." + :group 'tramp + :version "24.4" + :type 'boolean) + (defcustom tramp-default-method ;; An external copy method seems to be preferred, because it performs ;; much better for large files, and it hasn't too serious delays ------------------------------------------------------------ revno: 113582 committer: Xue Fuqiao branch nick: trunk timestamp: Mon 2013-07-29 09:32:01 +0800 message: * INSTALL: Fix description. diff: === modified file 'ChangeLog' --- ChangeLog 2013-07-27 01:18:21 +0000 +++ ChangeLog 2013-07-29 01:32:01 +0000 @@ -1,3 +1,7 @@ +2013-07-29 Xue Fuqiao + + * INSTALL: Fix description. + 2013-07-27 Glenn Morris * configure.ac: Extend the --with-sound option to allow === modified file 'INSTALL' --- INSTALL 2013-07-20 19:20:33 +0000 +++ INSTALL 2013-07-29 01:32:01 +0000 @@ -98,7 +98,6 @@ first clean the source directories: make distclean - ./configure Note that the install automatically saves space by compressing (provided you have the `gzip' program) those installed Lisp source (.el) ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.