]> git.eshelyaron.com Git - emacs.git/commitdiff
(current_column): Fix column computation in the
authorGerd Moellmann <gerd@gnu.org>
Mon, 23 Jul 2001 14:47:42 +0000 (14:47 +0000)
committerGerd Moellmann <gerd@gnu.org>
Mon, 23 Jul 2001 14:47:42 +0000 (14:47 +0000)
presence of display table entries.
(current_column_1, Fmove_to_column, compute_motion): Likewise.

src/ChangeLog
src/indent.c

index 790b79e07cdb75663aac849b308ec3fab0ed33ef..b8702273e7fbdd3964fb36fc2cd9fcaab8197e86 100644 (file)
@@ -1,5 +1,9 @@
 2001-07-23  Gerd Moellmann  <gerd@gnu.org>
 
+       * indent.c (current_column): Fix column computation in the 
+       presence of display table entries.
+       (current_column_1, Fmove_to_column, compute_motion): Likewise.
+
        * dispnew.c (adjust_glyph_matrix): In the optimization for
        windows whose height has changed, use the new window height
        to compute which rows to invalidate.
index 49768ea52064928e5f01922a127fa68ed0906def..2d0ea9fcae96ad3632baf4669b8d331fbd2dbc89 100644 (file)
@@ -465,6 +465,13 @@ current_column ()
              col = 0;
              tab_seen = 1;
            }
+         else if (VECTORP (charvec))
+           /* With a display table entry, C is displayed as is, and
+              not displayed as \NNN or as ^N.  If C is a single-byte
+              character, it takes one column.  If C is multi-byte in
+              an unibyte buffer, it's translated to unibyte, so it
+              also takes one column.  */
+           ++col;
          else
            col += (ctl_arrow && c < 0200) ? 2 : 4;
        }
@@ -607,6 +614,8 @@ current_column_1 ()
              scan_byte += bytes;
              col += width;
            }
+         else if (VECTORP (charvec))
+           ++col;
          else if (ctl_arrow && (c < 040 || c == 0177))
            col += 2;
          else if (c < 040 || c >= 0177)
@@ -1016,6 +1025,8 @@ The return value is the current column.")
              col += tab_width;
              col = col / tab_width * tab_width;
            }
+         else if (VECTORP (charvec))
+           ++col;
          else if (ctl_arrow && (c < 040 || c == 0177))
            col += 2;
          else if (c < 040 || c == 0177)
@@ -1654,6 +1665,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
                    wide_column_end_hpos = hpos + wide_column;
                  hpos += width;
                }
+             else if (VECTORP (charvec))
+               ++hpos;
              else
                hpos += (ctl_arrow && c < 0200) ? 2 : 4;
            }