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