Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 104372. ------------------------------------------------------------ revno: 104372 committer: Leo Liu branch nick: trunk timestamp: Thu 2011-05-26 13:36:55 +0800 message: Allow empty regions in transpose-regions See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8699. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2011-05-25 03:45:04 +0000 +++ src/ChangeLog 2011-05-26 05:36:55 +0000 @@ -1,3 +1,7 @@ +2011-05-26 Leo Liu + + * editfns.c (Ftranspose_regions): Allow empty regions. (Bug#8699) + 2011-05-25 YAMAMOTO Mitsuharu * dispextern.h (struct glyph_row): New member fringe_bitmap_periodic_p. === modified file 'src/editfns.c' --- src/editfns.c 2011-05-15 17:17:44 +0000 +++ src/editfns.c 2011-05-26 05:36:55 +0000 @@ -4353,8 +4353,9 @@ if (start2 < end1) error ("Transposed regions overlap"); - else if (start1 == end1 || start2 == end2) - error ("Transposed region has length 0"); + /* Nothing to change for adjacent regions with one being empty */ + else if ((start1 == end1 || start2 == end2) && end1 == start2) + return Qnil; /* The possibilities are: 1. Adjacent (contiguous) regions, or separate but equal regions ------------------------------------------------------------ revno: 104371 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 19:57:08 -0700 message: Adjust prompt in previous emacsbug.el change. diff: === modified file 'lisp/mail/emacsbug.el' --- lisp/mail/emacsbug.el 2011-05-26 00:52:33 +0000 +++ lisp/mail/emacsbug.el 2011-05-26 02:57:08 +0000 @@ -355,9 +355,8 @@ (string-match (format "\\<%s@%s\\>" (user-login-name) (system-name)) from)) - (yes-or-no-p - (format "From address (`%s') looks suspicious. Edit it? " - from)) + (not (yes-or-no-p + (format "Is `%s' really your email address? " from))) (error "Please edit the From address and try again")))) ;; The last warning for novice users. (unless (or report-emacs-bug-no-confirmation ------------------------------------------------------------ revno: 104370 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 20:55:14 -0400 message: * configure.in: Comment fix. diff: === modified file 'configure.in' --- configure.in 2011-05-24 19:12:58 +0000 +++ configure.in 2011-05-26 00:55:14 +0000 @@ -3702,8 +3702,8 @@ exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`] dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES. -dnl You _can_ use that variable here, so long as any directory using -dnl automake (ie lib/) is explicitly listed and not "hidden" in a variable +dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory +dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable dnl (else you get "no `Makefile.am' found for any configure output"). dnl This will work, but you get a config.status that is not quite right dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html). ------------------------------------------------------------ revno: 104369 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 20:54:27 -0400 message: Tiny doc/lispref/variables.texi update. * doc/lispref/variables.texi (File Local Variables): Update hack-local-variables `mode-only' return value. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2011-05-19 06:59:50 +0000 +++ doc/lispref/ChangeLog 2011-05-26 00:54:27 +0000 @@ -1,3 +1,8 @@ +2011-05-26 Glenn Morris + + * variables.texi (File Local Variables): + Update hack-local-variables `mode-only' return value. + 2011-05-19 Glenn Morris * lists.texi (Sets And Lists): Mention cl provides union etc. === modified file 'doc/lispref/variables.texi' --- doc/lispref/variables.texi 2011-04-01 15:16:50 +0000 +++ doc/lispref/variables.texi 2011-05-26 00:54:27 +0000 @@ -1673,9 +1673,10 @@ variables, respectively. If the optional argument @var{mode-only} is non-@code{nil}, then all -this function does is return @code{t} if the @w{@samp{-*-}} line or -the local variables list specifies a mode and @code{nil} otherwise. -It does not set the mode nor any other file-local variable. +this function does is return a symbol specifying the major mode, +if the @w{@samp{-*-}} line or the local variables list specifies one, +and @code{nil} otherwise. It does not set the mode nor any other +file-local variable. @end defun @defvar file-local-variables-alist ------------------------------------------------------------ revno: 104368 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 20:52:33 -0400 message: Try to check From address in bug reports (bug#8038) * lisp/mail/emacsbug.el (report-emacs-bug): Mention checking From address. (report-emacs-bug-hook): Try to validate the From address. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-05-25 09:03:59 +0000 +++ lisp/ChangeLog 2011-05-26 00:52:33 +0000 @@ -1,3 +1,8 @@ +2011-05-26 Glenn Morris + + * mail/emacsbug.el (report-emacs-bug): Mention checking From address. + (report-emacs-bug-hook): Try to validate the From address. (Bug#8038) + 2011-05-25 Julien Danjou * textmodes/rst.el (rst-define-level-faces): Do not define face === modified file 'lisp/mail/emacsbug.el' --- lisp/mail/emacsbug.el 2011-05-23 17:57:17 +0000 +++ lisp/mail/emacsbug.el 2011-05-26 00:52:33 +0000 @@ -126,7 +126,7 @@ (if (and to subject body) (if (report-emacs-bug-can-use-osx-open) (start-process "/usr/bin/open" nil "open" - (concat "mailto:" to + (concat "mailto:" to "?subject=" (url-hexify-string subject) "&body=" (url-hexify-string body))) (start-process "xdg-email" nil "xdg-email" @@ -188,6 +188,7 @@ (overlay-put (make-overlay pos (point)) 'face 'highlight)) (insert " if possible, because the Emacs maintainers usually do not have translators to read other languages for them.\n\n") + (insert "Please check that the From: line gives an address where you can be reached.\n") (insert (format "Your report will be posted to the %s mailing list" report-emacs-bug-address)) (insert "\nand the gnu.emacs.bug news group, and at http://debbugs.gnu.org.\n\n")) @@ -330,6 +331,9 @@ (interactive) (info "(emacs)Bugs")) +;; It's the default mail mode, so it seems OK to use its features. +(autoload 'message-bogus-recipient-p "message") + (defun report-emacs-bug-hook () "Do some checking before sending a bug report." (save-excursion @@ -340,11 +344,25 @@ (string-equal (buffer-substring-no-properties (point-min) (point)) report-emacs-bug-orig-text) (error "No text entered in bug report")) - + (or report-emacs-bug-no-confirmation + ;; Not narrowing to the headers, but that's OK. + (let ((from (mail-fetch-field "From"))) + (and (or (not from) + (message-bogus-recipient-p from) + ;; This is the default user-mail-address. On today's + ;; systems, it seems more likely to be wrong than right, + ;; since most people don't run their own mail server. + (string-match (format "\\<%s@%s\\>" (user-login-name) + (system-name)) + from)) + (yes-or-no-p + (format "From address (`%s') looks suspicious. Edit it? " + from)) + (error "Please edit the From address and try again")))) ;; The last warning for novice users. (unless (or report-emacs-bug-no-confirmation - (yes-or-no-p - "Send this bug report to the Emacs maintainers? ")) + (yes-or-no-p + "Send this bug report to the Emacs maintainers? ")) (goto-char (point-min)) (if (search-forward "To: ") (delete-region (point) (line-end-position))) ------------------------------------------------------------ revno: 104367 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 20:49:54 -0400 message: Minor gnus-group.el change. * lisp/gnus/gnus-group.el (gnus-bug-group-download-format-alist): Use the "maintainer" version of debbugs.gnu.org reports. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-05-24 09:46:18 +0000 +++ lisp/gnus/ChangeLog 2011-05-26 00:49:54 +0000 @@ -1,3 +1,8 @@ +2011-05-26 Glenn Morris + + * gnus-group.el (gnus-bug-group-download-format-alist): + Use the "maintainer" version of debbugs.gnu.org reports. + 2011-05-24 Katsumi Yamaoka * gnus-art.el (gnus-mime-delete-part): Fix mm-handle-filename usage. === modified file 'lisp/gnus/gnus-group.el' --- lisp/gnus/gnus-group.el 2011-05-17 02:32:50 +0000 +++ lisp/gnus/gnus-group.el 2011-05-26 00:49:54 +0000 @@ -2410,14 +2410,17 @@ (gnus-read-ephemeral-gmane-group group start range))) (defcustom gnus-bug-group-download-format-alist - '((emacs . "http://debbugs.gnu.org/%s;mbox=yes") + '((emacs . "http://debbugs.gnu.org/%s;mbox=yes;mboxmaint=yes") (debian . "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%s&mbox=yes")) "Alist of symbols for bug trackers and the corresponding URL format string. The URL format string must contain a single \"%s\", specifying the bug number, and browsing the URL must return mbox output." :group 'gnus-group-foreign - :version "23.2" ;; No Gnus + ;; Added mboxmaint=yes for Emacs. This gets the version with the + ;; messages as they went out, not as they came in. + ;; Eg bug-gnu-emacs is replaced by ###@debbugs. + :version "24.1" :type '(repeat (cons (symbol) (string :tag "URL format string")))) (defun gnus-read-ephemeral-bug-group (number mbox-url) ------------------------------------------------------------ revno: 104366 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 06:19:20 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/configure' --- autogen/configure 2011-05-24 17:24:15 +0000 +++ autogen/configure 2011-05-25 10:19:20 +0000 @@ -20909,17 +20909,21 @@ test "${exec_prefix}" != NONE && exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'` -SUBDIR_MAKEFILES="lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile" +SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile" + +ac_config_files="$ac_config_files Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile" + opt_makefile=test/automated/Makefile -test -f $srcdir/${opt_makefile}.in && \ +if test -f $srcdir/${opt_makefile}.in; then SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile" - -SUBDIR_MAKEFILES_IN=`echo " lib/Makefile ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` - - -ac_config_files="$ac_config_files Makefile lib/Makefile ${SUBDIR_MAKEFILES}" + ac_config_files="$ac_config_files test/automated/Makefile" + +fi + +SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` + ac_config_commands="$ac_config_commands mkdirs" @@ -21720,7 +21724,17 @@ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "${SUBDIR_MAKEFILES}") CONFIG_FILES="$CONFIG_FILES ${SUBDIR_MAKEFILES}" ;; + "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;; + "oldXMenu/Makefile") CONFIG_FILES="$CONFIG_FILES oldXMenu/Makefile" ;; + "doc/emacs/Makefile") CONFIG_FILES="$CONFIG_FILES doc/emacs/Makefile" ;; + "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;; + "doc/lispintro/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispintro/Makefile" ;; + "doc/lispref/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispref/Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;; + "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;; + "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;; + "test/automated/Makefile") CONFIG_FILES="$CONFIG_FILES test/automated/Makefile" ;; "mkdirs") CONFIG_COMMANDS="$CONFIG_COMMANDS mkdirs" ;; "epaths") CONFIG_COMMANDS="$CONFIG_COMMANDS epaths" ;; "gdbinit") CONFIG_COMMANDS="$CONFIG_COMMANDS gdbinit" ;; ------------------------------------------------------------ revno: 104365 committer: Julien Danjou branch nick: trunk timestamp: Wed 2011-05-25 11:03:59 +0200 message: * textmodes/rst.el (rst-define-level-faces): Do not define face symbol if it is already defined. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-05-24 18:22:09 +0000 +++ lisp/ChangeLog 2011-05-25 09:03:59 +0000 @@ -1,3 +1,8 @@ +2011-05-25 Julien Danjou + + * textmodes/rst.el (rst-define-level-faces): Do not define face + symbol if it is already defined. + 2011-05-24 Vincent Belaïche * play/5x5.el (5x5-new-game, 5x5-randomize): === modified file 'lisp/textmodes/rst.el' --- lisp/textmodes/rst.el 2011-01-26 08:36:39 +0000 +++ lisp/textmodes/rst.el 2011-05-25 09:03:59 +0000 @@ -2800,11 +2800,12 @@ rst-level-face-base-color (+ (* (1- i) rst-level-face-step-light) rst-level-face-base-light)))) - (make-empty-face sym) - (set-face-doc-string sym doc) - (set-face-background sym col) - (set sym sym) - (setq i (1+ i)))))) + (unless (boundp sym) + (make-empty-face sym) + (set-face-doc-string sym doc) + (set-face-background sym col) + (set sym sym)) + (setq i (1+ i)))))) (rst-define-level-faces) ------------------------------------------------------------ revno: 104364 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-05-25 00:13:57 -0700 message: * lib-src/Makefile.in (all, clean): Use $EXE_FILES. diff: === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2011-05-25 02:33:35 +0000 +++ lib-src/ChangeLog 2011-05-25 07:13:57 +0000 @@ -5,6 +5,7 @@ (stamp-rcs2log, stamp-rcs-checkin, stamp-grep-changelog, stamp-vcdiff): Use $insrcdir to suppress unaesthetic ignored errors. (clean): Simplify list of things to delete. + (all, clean): Use $EXE_FILES. * Makefile.in (movemail${EXEEXT}): Build in one step, not via .o file. === modified file 'lib-src/Makefile.in' --- lib-src/Makefile.in 2011-05-25 02:33:35 +0000 +++ lib-src/Makefile.in 2011-05-25 07:13:57 +0000 @@ -178,7 +178,7 @@ LOADLIBES = ../lib/libgnu.a $(LIBS_SYSTEM) $(EXE_FILES): ../lib/libgnu.a -all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} ${STAMP_INST_SCRIPTS} ${STAMP_SCRIPTS} +all: ${EXE_FILES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} ${STAMP_INST_SCRIPTS} ${STAMP_SCRIPTS} ## These targets copy the scripts into the build directory so that ## they can be run from there in an uninstalled Emacs. @@ -275,7 +275,7 @@ -rm -f core *.o clean: mostlyclean - -rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL} + -rm -f ${EXE_FILES} -rm -f ${STAMP_INST_SCRIPTS} ${STAMP_SCRIPTS} distclean: clean ------------------------------------------------------------ revno: 104363 [merge] committer: Glenn Morris branch nick: trunk timestamp: Tue 2011-05-24 20:45:04 -0700 message: Merge from emacs-23; up to r100587. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2011-05-24 08:22:58 +0000 +++ src/ChangeLog 2011-05-25 03:45:04 +0000 @@ -1,3 +1,25 @@ +2011-05-25 YAMAMOTO Mitsuharu + + * dispextern.h (struct glyph_row): New member fringe_bitmap_periodic_p. + + * dispnew.c (shift_glyph_matrix, scrolling_window): Mark scrolled row + for fringe update if it has periodic bitmap. + (row_equal_p): Also compare left_fringe_offset, right_fringe_offset, + and fringe_bitmap_periodic_p. + + * fringe.c (get_fringe_bitmap_data): New function. + (draw_fringe_bitmap_1, update_window_fringes): Use it. + (update_window_fringes): Record periodicity of fringe bitmap in glyph + row. Mark glyph row for fringe update if periodicity changed. + + * xdisp.c (try_window_reusing_current_matrix): Don't mark scrolled row + for fringe update unless it has periodic bitmap. + +2011-05-25 Kenichi Handa + + * xdisp.c (get_next_display_element): Set correct it->face_id for + a static composition. + 2011-05-24 Leo Liu * deps.mk (fns.o): === modified file 'src/dispextern.h' --- src/dispextern.h 2011-05-13 01:10:46 +0000 +++ src/dispextern.h 2011-05-25 03:45:04 +0000 @@ -845,6 +845,10 @@ /* Vertical offset of the right fringe bitmap. */ signed right_fringe_offset : FRINGE_HEIGHT_BITS; + /* 1 means that at least one of the left and right fringe bitmaps is + periodic and thus depends on the y-position of the row. */ + unsigned fringe_bitmap_periodic_p : 1; + /* 1 means that we must draw the bitmaps of this row. */ unsigned redraw_fringe_bitmaps_p : 1; === modified file 'src/dispnew.c' --- src/dispnew.c 2011-05-21 02:15:34 +0000 +++ src/dispnew.c 2011-05-25 03:45:04 +0000 @@ -861,6 +861,8 @@ row->visible_height -= min_y - row->y; if (row->y + row->height > max_y) row->visible_height -= row->y + row->height - max_y; + if (row->fringe_bitmap_periodic_p) + row->redraw_fringe_bitmaps_p = 1; } } @@ -1339,8 +1341,11 @@ || a->cursor_in_fringe_p != b->cursor_in_fringe_p || a->left_fringe_bitmap != b->left_fringe_bitmap || a->left_fringe_face_id != b->left_fringe_face_id + || a->left_fringe_offset != b->left_fringe_offset || a->right_fringe_bitmap != b->right_fringe_bitmap || a->right_fringe_face_id != b->right_fringe_face_id + || a->right_fringe_offset != b->right_fringe_offset + || a->fringe_bitmap_periodic_p != b->fringe_bitmap_periodic_p || a->overlay_arrow_bitmap != b->overlay_arrow_bitmap || a->exact_window_width_line_p != b->exact_window_width_line_p || a->overlapped_p != b->overlapped_p @@ -4565,13 +4570,7 @@ to = MATRIX_ROW (current_matrix, r->desired_vpos + j); from = MATRIX_ROW (desired_matrix, r->desired_vpos + j); to_overlapped_p = to->overlapped_p; - if (!from->mode_line_p && !w->pseudo_window_p - && (to->left_fringe_bitmap != from->left_fringe_bitmap - || to->right_fringe_bitmap != from->right_fringe_bitmap - || to->left_fringe_face_id != from->left_fringe_face_id - || to->right_fringe_face_id != from->right_fringe_face_id - || to->overlay_arrow_bitmap != from->overlay_arrow_bitmap)) - from->redraw_fringe_bitmaps_p = 1; + from->redraw_fringe_bitmaps_p = from->fringe_bitmap_periodic_p; assign_row (to, from); to->enabled_p = 1, from->enabled_p = 0; to->overlapped_p = to_overlapped_p; === modified file 'src/fringe.c' --- src/fringe.c 2011-05-12 07:07:06 +0000 +++ src/fringe.c 2011-05-25 03:45:04 +0000 @@ -521,6 +521,20 @@ return num; } +/* Get fringe bitmap data for bitmap number BN. */ + +static struct fringe_bitmap * +get_fringe_bitmap_data (int bn) +{ + struct fringe_bitmap *fb; + + fb = fringe_bitmaps[bn]; + if (fb == NULL) + fb = &standard_bitmaps[bn < MAX_STANDARD_FRINGE_BITMAPS + ? bn : UNDEF_FRINGE_BITMAP]; + + return fb; +} /* Draw the bitmap WHICH in one of the left or right fringes of window W. ROW is the glyph row for which to display the bitmap; it @@ -568,10 +582,7 @@ face_id = FRINGE_FACE_ID; } - fb = fringe_bitmaps[which]; - if (fb == NULL) - fb = &standard_bitmaps[which < MAX_STANDARD_FRINGE_BITMAPS - ? which : UNDEF_FRINGE_BITMAP]; + fb = get_fringe_bitmap_data (which); period = fb->period; @@ -1041,12 +1052,8 @@ if (bn != NO_FRINGE_BITMAP) { - struct fringe_bitmap *fb; + struct fringe_bitmap *fb = get_fringe_bitmap_data (bn); - fb = fringe_bitmaps[bn]; - if (fb == NULL) - fb = &standard_bitmaps[bn < MAX_STANDARD_FRINGE_BITMAPS - ? bn : UNDEF_FRINGE_BITMAP]; if (fb->align == ALIGN_BITMAP_TOP && fb->period == 0) { struct glyph_row *row1; @@ -1100,12 +1107,8 @@ if (bn != NO_FRINGE_BITMAP) { - struct fringe_bitmap *fb; + struct fringe_bitmap *fb = get_fringe_bitmap_data (bn); - fb = fringe_bitmaps[bn]; - if (fb == NULL) - fb = &standard_bitmaps[bn < MAX_STANDARD_FRINGE_BITMAPS - ? bn : UNDEF_FRINGE_BITMAP]; if (fb->align == ALIGN_BITMAP_BOTTOM && fb->period == 0) { struct glyph_row *row1; @@ -1141,6 +1144,7 @@ int left, right; unsigned left_face_id, right_face_id; int left_offset, right_offset; + int periodic_p; row = w->desired_matrix->rows + rn; cur = w->current_matrix->rows + rn; @@ -1149,6 +1153,7 @@ left_face_id = right_face_id = DEFAULT_FACE_ID; left_offset = right_offset = 0; + periodic_p = 0; /* Decide which bitmap to draw in the left fringe. */ if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0) @@ -1240,6 +1245,9 @@ else right = NO_FRINGE_BITMAP; + periodic_p = (get_fringe_bitmap_data (left)->period != 0 + || get_fringe_bitmap_data (right)->period != 0); + if (row->y != cur->y || row->visible_height != cur->visible_height || row->ends_at_zv_p != cur->ends_at_zv_p @@ -1249,6 +1257,7 @@ || right_face_id != cur->right_fringe_face_id || left_offset != cur->left_fringe_offset || right_offset != cur->right_fringe_offset + || periodic_p != cur->fringe_bitmap_periodic_p || cur->redraw_fringe_bitmaps_p) { redraw_p = row->redraw_fringe_bitmaps_p = 1; @@ -1261,6 +1270,7 @@ cur->right_fringe_face_id = right_face_id; cur->left_fringe_offset = left_offset; cur->right_fringe_offset = right_offset; + cur->fringe_bitmap_periodic_p = periodic_p; } } @@ -1279,6 +1289,7 @@ row->right_fringe_face_id = right_face_id; row->left_fringe_offset = left_offset; row->right_fringe_offset = right_offset; + row->fringe_bitmap_periodic_p = periodic_p; } return redraw_p && !keep_current_p; === modified file 'src/xdisp.c' --- src/xdisp.c 2011-05-12 07:07:06 +0000 +++ src/xdisp.c 2011-05-25 03:45:04 +0000 @@ -5890,11 +5890,23 @@ else { EMACS_INT pos = (it->s ? -1 - : STRINGP (it->string) ? IT_STRING_CHARPOS (*it) - : IT_CHARPOS (*it)); - - it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display, pos, - it->string); + : STRINGP (it->string) ? IT_STRING_CHARPOS (*it) + : IT_CHARPOS (*it)); + int c; + + if (it->what == IT_CHARACTER) + c = it->char_to_display; + else + { + struct composition *cmp = composition_table[it->cmp_it.id]; + int i; + + c = ' '; + for (i = 0; i < cmp->glyph_len; i++) + if ((c = COMPOSITION_GLYPH (cmp, i)) != '\t') + break; + } + it->face_id = FACE_FOR_CHAR (it->f, face, c, pos, it->string); } } @@ -14817,7 +14829,8 @@ row->visible_height -= min_y - row->y; if (row->y + row->height > max_y) row->visible_height -= row->y + row->height - max_y; - row->redraw_fringe_bitmaps_p = 1; + if (row->fringe_bitmap_periodic_p) + row->redraw_fringe_bitmaps_p = 1; it.current_y += row->height; @@ -14979,7 +14992,8 @@ row->visible_height -= min_y - row->y; if (row->y + row->height > max_y) row->visible_height -= row->y + row->height - max_y; - row->redraw_fringe_bitmaps_p = 1; + if (row->fringe_bitmap_periodic_p) + row->redraw_fringe_bitmaps_p = 1; } /* Scroll the current matrix. */ ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.