Mercurial > emacs
comparison src/indent.c @ 2017:ffa43acb7de7
(current_column, Fmove_to_column, compute_motion):
Expect display table elts to be vectors.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 05 Mar 1993 23:56:43 +0000 |
parents | 73ce9dd21093 |
children | 7b5299f3a8fc |
comparison
equal
deleted
inserted
replaced
2016:02792f3b7336 | 2017:ffa43acb7de7 |
---|---|
135 if (BEGV >= GPT) break; | 135 if (BEGV >= GPT) break; |
136 } | 136 } |
137 | 137 |
138 c = *--ptr; | 138 c = *--ptr; |
139 if (c >= 040 && c < 0177 | 139 if (c >= 040 && c < 0177 |
140 && (dp == 0 || XTYPE (DISP_CHAR_ROPE (dp, c)) != Lisp_String)) | 140 && (dp == 0 || XTYPE (DISP_CHAR_VECTOR (dp, c)) != Lisp_Vector)) |
141 { | 141 { |
142 col++; | 142 col++; |
143 } | 143 } |
144 else if (c == '\n') | 144 else if (c == '\n') |
145 break; | 145 break; |
152 | 152 |
153 post_tab += col; | 153 post_tab += col; |
154 col = 0; | 154 col = 0; |
155 tab_seen = 1; | 155 tab_seen = 1; |
156 } | 156 } |
157 else if (dp != 0 && XTYPE (DISP_CHAR_ROPE (dp, c)) == Lisp_String) | 157 else if (dp != 0 && XTYPE (DISP_CHAR_VECTOR (dp, c)) == Lisp_Vector) |
158 col += XSTRING (DISP_CHAR_ROPE (dp, c))->size / sizeof (GLYPH); | 158 col += XVECTOR (DISP_CHAR_VECTOR (dp, c))->size; |
159 else | 159 else |
160 col += (ctl_arrow && c < 0200) ? 2 : 4; | 160 col += (ctl_arrow && c < 0200) ? 2 : 4; |
161 } | 161 } |
162 | 162 |
163 if (tab_seen) | 163 if (tab_seen) |
327 { | 327 { |
328 prev_col = col; | 328 prev_col = col; |
329 col += tab_width; | 329 col += tab_width; |
330 col = col / tab_width * tab_width; | 330 col = col / tab_width * tab_width; |
331 } | 331 } |
332 else if (dp != 0 && XTYPE (DISP_CHAR_ROPE (dp, c)) == Lisp_String) | 332 else if (dp != 0 && XTYPE (DISP_CHAR_VECTOR (dp, c)) == Lisp_Vector) |
333 col += XSTRING (DISP_CHAR_ROPE (dp, c))->size / sizeof (GLYPH); | 333 col += XVECTOR (DISP_CHAR_VECTOR (dp, c))->size; |
334 else if (ctl_arrow && (c < 040 || c == 0177)) | 334 else if (ctl_arrow && (c < 040 || c == 0177)) |
335 col++; | 335 col++; |
336 else if (c < 040 || c >= 0177) | 336 else if (c < 040 || c >= 0177) |
337 col += 3; | 337 col += 3; |
338 else | 338 else |
432 = XTYPE (current_buffer->selective_display) == Lisp_Int | 432 = XTYPE (current_buffer->selective_display) == Lisp_Int |
433 ? XINT (current_buffer->selective_display) | 433 ? XINT (current_buffer->selective_display) |
434 : !NILP (current_buffer->selective_display) ? -1 : 0; | 434 : !NILP (current_buffer->selective_display) ? -1 : 0; |
435 int prev_vpos, prev_hpos; | 435 int prev_vpos, prev_hpos; |
436 int selective_rlen | 436 int selective_rlen |
437 = (selective && dp && XTYPE (DISP_INVIS_ROPE (dp)) == Lisp_String | 437 = (selective && dp && XTYPE (DISP_INVIS_VECTOR (dp)) == Lisp_Vector |
438 ? XSTRING (DISP_INVIS_ROPE (dp))->size / sizeof (GLYPH) : 0); | 438 ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0); |
439 | 439 |
440 if (tab_width <= 0 || tab_width > 20) tab_width = 8; | 440 if (tab_width <= 0 || tab_width > 20) tab_width = 8; |
441 for (pos = from; pos < to; pos++) | 441 for (pos = from; pos < to; pos++) |
442 { | 442 { |
443 /* Stop if past the target screen position. */ | 443 /* Stop if past the target screen position. */ |
448 prev_vpos = vpos; | 448 prev_vpos = vpos; |
449 prev_hpos = hpos; | 449 prev_hpos = hpos; |
450 | 450 |
451 c = FETCH_CHAR (pos); | 451 c = FETCH_CHAR (pos); |
452 if (c >= 040 && c < 0177 | 452 if (c >= 040 && c < 0177 |
453 && (dp == 0 || XTYPE (DISP_CHAR_ROPE (dp, c)) != Lisp_String)) | 453 && (dp == 0 || XTYPE (DISP_CHAR_VECTOR (dp, c)) != Lisp_Vector)) |
454 hpos++; | 454 hpos++; |
455 else if (c == '\t') | 455 else if (c == '\t') |
456 { | 456 { |
457 hpos += tab_width - ((hpos + tab_offset + hscroll - (hscroll > 0) | 457 hpos += tab_width - ((hpos + tab_offset + hscroll - (hscroll > 0) |
458 /* Add tab_width here to make sure positive. | 458 /* Add tab_width here to make sure positive. |
504 hpos += selective_rlen; | 504 hpos += selective_rlen; |
505 if (hpos >= width) | 505 if (hpos >= width) |
506 hpos = width; | 506 hpos = width; |
507 } | 507 } |
508 } | 508 } |
509 else if (dp != 0 && XTYPE (DISP_CHAR_ROPE (dp, c)) == Lisp_String) | 509 else if (dp != 0 && XTYPE (DISP_CHAR_VECTOR (dp, c)) == Lisp_Vector) |
510 hpos += XSTRING (DISP_CHAR_ROPE (dp, c))->size / sizeof (GLYPH); | 510 hpos += XVECTOR (DISP_CHAR_VECTOR (dp, c))->size; |
511 else | 511 else |
512 hpos += (ctl_arrow && c < 0200) ? 2 : 4; | 512 hpos += (ctl_arrow && c < 0200) ? 2 : 4; |
513 | 513 |
514 /* Handle right margin. */ | 514 /* Handle right margin. */ |
515 if (hpos >= width | 515 if (hpos >= width |