emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r105820: Merge changes from emacs-23


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r105820: Merge changes from emacs-23 branch
Date: Sun, 18 Sep 2011 11:21:57 -0400
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 105820 [merge]
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sun 2011-09-18 11:21:57 -0400
message:
  Merge changes from emacs-23 branch
modified:
  src/ChangeLog
  src/search.c
  src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-09-18 15:16:47 +0000
+++ b/src/ChangeLog     2011-09-18 15:21:57 +0000
@@ -1,3 +1,13 @@
+2011-09-18  YAMAMOTO Mitsuharu  <address@hidden>
+
+       * xdisp.c (expose_window): Save original value of phys_cursor_on_p
+       and turn window cursor on if cleared (Bug#9415).
+
+2011-09-18  Andreas Schwab  <address@hidden>
+
+       * search.c (boyer_moore): Take unibyte characters from pattern
+       literally.  (Bug#9458)
+
 2011-09-18  Eli Zaretskii  <address@hidden>
 
        * xdisp.c (reseat_at_next_visible_line_start): Fix last change.

=== modified file 'src/search.c'
--- a/src/search.c      2011-09-04 17:27:38 +0000
+++ b/src/search.c      2011-09-18 15:20:30 +0000
@@ -1760,7 +1760,7 @@
                ch = -1;
            }
 
-         if (ch >= 0200)
+         if (ch >= 0200 && multibyte)
            j = (ch & 0x3F) | 0200;
          else
            j = *ptr;
@@ -1779,7 +1779,7 @@
              while (1)
                {
                  TRANSLATE (ch, inverse_trt, ch);
-                 if (ch >= 0200)
+                 if (ch >= 0200 && multibyte)
                    j = (ch & 0x3F) | 0200;
                  else
                    j = ch;

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2011-09-18 15:16:47 +0000
+++ b/src/xdisp.c       2011-09-18 15:21:57 +0000
@@ -27261,7 +27261,7 @@
     {
       int yb = window_text_bottom_y (w);
       struct glyph_row *row;
-      int cursor_cleared_p;
+      int cursor_cleared_p, phys_cursor_on_p;
       struct glyph_row *first_overlapping_row, *last_overlapping_row;
 
       TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n",
@@ -27281,6 +27281,13 @@
       else
        cursor_cleared_p = 0;
 
+      /* If the row containing the cursor extends face to end of line,
+        then expose_area might overwrite the cursor outside the
+        rectangle and thus notice_overwritten_cursor might clear
+        w->phys_cursor_on_p.  We remember the original value and
+        check later if it is changed.  */
+      phys_cursor_on_p = w->phys_cursor_on_p;
+
       /* Update lines intersecting rectangle R.  */
       first_overlapping_row = last_overlapping_row = NULL;
       for (row = w->current_matrix->rows;
@@ -27347,7 +27354,8 @@
          x_draw_vertical_border (w);
 
          /* Turn the cursor on again.  */
-         if (cursor_cleared_p)
+         if (cursor_cleared_p
+             || (phys_cursor_on_p && !w->phys_cursor_on_p))
            update_window_cursor (w, 1);
        }
     }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]