1883 |
struct position pos; |
struct position pos; |
1884 |
/* vpos is cumulative vertical position, changed as from is changed */ |
/* vpos is cumulative vertical position, changed as from is changed */ |
1885 |
register int vpos = 0; |
register int vpos = 0; |
1886 |
Lisp_Object prevline; |
int prevline; |
1887 |
register int first; |
register int first; |
1888 |
int from_byte; |
int from_byte; |
1889 |
int lmargin = hscroll > 0 ? 1 - hscroll : 0; |
int lmargin = hscroll > 0 ? 1 - hscroll : 0; |
1917 |
{ |
{ |
1918 |
Lisp_Object propval; |
Lisp_Object propval; |
1919 |
|
|
1920 |
XSETFASTINT (prevline, find_next_newline_no_quit (from - 1, -1)); |
prevline = find_next_newline_no_quit (from - 1, -1); |
1921 |
while (XFASTINT (prevline) > BEGV |
while (prevline > BEGV |
1922 |
&& ((selective > 0 |
&& ((selective > 0 |
1923 |
&& indented_beyond_p (XFASTINT (prevline), |
&& indented_beyond_p (prevline, |
1924 |
CHAR_TO_BYTE (XFASTINT (prevline)), |
CHAR_TO_BYTE (prevline), |
1925 |
(double) selective)) /* iftc */ |
(double) selective)) /* iftc */ |
1926 |
/* watch out for newlines with `invisible' property */ |
/* Watch out for newlines with `invisible' property. |
1927 |
|| (propval = Fget_char_property (prevline, |
When moving upward, check the newline before. */ |
1928 |
|
|| (propval = Fget_char_property (make_number (prevline - 1), |
1929 |
Qinvisible, |
Qinvisible, |
1930 |
text_prop_object), |
text_prop_object), |
1931 |
TEXT_PROP_MEANS_INVISIBLE (propval)))) |
TEXT_PROP_MEANS_INVISIBLE (propval)))) |
1932 |
XSETFASTINT (prevline, |
prevline = find_next_newline_no_quit (prevline - 1, -1); |
1933 |
find_next_newline_no_quit (XFASTINT (prevline) - 1, |
pos = *compute_motion (prevline, 0, |
1934 |
-1)); |
lmargin + (prevline == BEG ? start_hpos : 0), |
|
pos = *compute_motion (XFASTINT (prevline), 0, |
|
|
lmargin + (XFASTINT (prevline) == BEG |
|
|
? start_hpos : 0), |
|
1935 |
0, |
0, |
1936 |
from, |
from, |
1937 |
/* Don't care for VPOS... */ |
/* Don't care for VPOS... */ |
1942 |
/* This compensates for start_hpos |
/* This compensates for start_hpos |
1943 |
so that a tab as first character |
so that a tab as first character |
1944 |
still occupies 8 columns. */ |
still occupies 8 columns. */ |
1945 |
(XFASTINT (prevline) == BEG |
(prevline == BEG ? -start_hpos : 0), |
|
? -start_hpos : 0), |
|
1946 |
w); |
w); |
1947 |
vpos -= pos.vpos; |
vpos -= pos.vpos; |
1948 |
first = 0; |
first = 0; |
1949 |
from = XFASTINT (prevline); |
from = prevline; |
1950 |
} |
} |
1951 |
|
|
1952 |
/* If we made exactly the desired vertical distance, |
/* If we made exactly the desired vertical distance, |
1974 |
{ |
{ |
1975 |
Lisp_Object propval; |
Lisp_Object propval; |
1976 |
|
|
1977 |
XSETFASTINT (prevline, find_next_newline_no_quit (from, -1)); |
prevline = find_next_newline_no_quit (from, -1); |
1978 |
while (XFASTINT (prevline) > BEGV |
while (prevline > BEGV |
1979 |
&& ((selective > 0 |
&& ((selective > 0 |
1980 |
&& indented_beyond_p (XFASTINT (prevline), |
&& indented_beyond_p (prevline, |
1981 |
CHAR_TO_BYTE (XFASTINT (prevline)), |
CHAR_TO_BYTE (prevline), |
1982 |
(double) selective)) /* iftc */ |
(double) selective)) /* iftc */ |
1983 |
/* watch out for newlines with `invisible' property */ |
/* Watch out for newlines with `invisible' property. |
1984 |
|| (propval = Fget_char_property (prevline, Qinvisible, |
When moving downward, check the newline after. */ |
1985 |
|
|| (propval = Fget_char_property (make_number (prevline), |
1986 |
|
Qinvisible, |
1987 |
text_prop_object), |
text_prop_object), |
1988 |
TEXT_PROP_MEANS_INVISIBLE (propval)))) |
TEXT_PROP_MEANS_INVISIBLE (propval)))) |
1989 |
XSETFASTINT (prevline, |
prevline = find_next_newline_no_quit (prevline - 1, -1); |
1990 |
find_next_newline_no_quit (XFASTINT (prevline) - 1, |
pos = *compute_motion (prevline, 0, |
1991 |
-1)); |
lmargin + (prevline == BEG |
|
pos = *compute_motion (XFASTINT (prevline), 0, |
|
|
lmargin + (XFASTINT (prevline) == BEG |
|
1992 |
? start_hpos : 0), |
? start_hpos : 0), |
1993 |
0, |
0, |
1994 |
from, |
from, |
1997 |
/* ... nor HPOS. */ |
/* ... nor HPOS. */ |
1998 |
1 << (BITS_PER_SHORT - 1), |
1 << (BITS_PER_SHORT - 1), |
1999 |
-1, hscroll, |
-1, hscroll, |
2000 |
(XFASTINT (prevline) == BEG ? -start_hpos : 0), |
(prevline == BEG ? -start_hpos : 0), |
2001 |
w); |
w); |
2002 |
did_motion = 1; |
did_motion = 1; |
2003 |
} |
} |