diff options
author | Karl Heuer <kwzh@gnu.org> | 1994-02-14 19:44:36 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1994-02-14 19:44:36 +0000 |
commit | 56bd0b6365fbeef0006502524cdecbf5a4e6ad53 (patch) | |
tree | a0123054f63ea94728dd139b61e3e5e074c96193 /src/indent.c | |
parent | d3598e2d18bcca218cac9ea6929e8523465f387e (diff) | |
download | emacs-56bd0b6365fbeef0006502524cdecbf5a4e6ad53.tar.gz |
(indented_beyond_p): New function.
(compute_motion, vmotion): Use it to treat blank lines specially in selective
display.
Diffstat (limited to 'src/indent.c')
-rw-r--r-- | src/indent.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/indent.c b/src/indent.c index fcc7fc431f1..cafe6122e91 100644 --- a/src/indent.c +++ b/src/indent.c @@ -271,6 +271,18 @@ position_indentation (pos) } } } + +/* Test whether the line beginning at POS is indented beyond COLUMN. + Blank lines are treated as if they had the same indentation as the + preceding line. */ +int +indented_beyond_p (pos, column) + int pos, column; +{ + while (pos > BEGV && FETCH_CHAR (pos) == '\n') + pos = find_next_newline (pos - 1, -1); + return (position_indentation (pos) >= column); +} DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, 0, "Move point to column COLUMN in the current line.\n\ @@ -499,14 +511,14 @@ compute_motion (from, fromvpos, fromhpos, to, tovpos, tohpos, width, hscroll, ta } else if (c == '\n') { - if (selective > 0 && position_indentation (pos + 1) >= selective) + if (selective > 0 && indented_beyond_p (pos + 1, selective)) { /* Skip any number of invisible lines all at once */ do { while (++pos < to && FETCH_CHAR (pos) != '\n'); } - while (pos < to && position_indentation (pos + 1) >= selective); + while (pos < to && indented_beyond_p (pos + 1, selective)); pos--; /* Reread the newline on the next pass. */ /* Allow for the " ..." that is displayed for them. */ if (selective_rlen) @@ -648,7 +660,7 @@ vmotion (from, vtarget, width, hscroll, window) prevline = find_next_newline (from, -1); while (prevline > BEGV && ((selective > 0 - && position_indentation (prevline) >= selective) + && indented_beyond_p (prevline, selective)) #ifdef USE_TEXT_PROPERTIES /* watch out for newlines with `invisible' property */ || ! NILP (Fget_text_property (XFASTINT (prevline), @@ -685,7 +697,7 @@ vmotion (from, vtarget, width, hscroll, window) prevline = find_next_newline (prevline - 1, -1); if (prevline == BEGV || ((selective <= 0 - || position_indentation (prevline) < selective) + || ! indented_beyond_p (prevline, selective)) #ifdef USE_TEXT_PROPERTIES /* watch out for newlines with `invisible' property */ && NILP (Fget_text_property (XFASTINT (prevline), |