Mercurial > emacs
changeset 8905:2ef3da79aabb
(vmotion, Fvertical_motion): Fix Lisp_Object vs. int problems.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Mon, 19 Sep 1994 00:17:26 +0000 |
parents | af3ff2dbaddd |
children | 93f3d6f5753c |
files | src/indent.c |
diffstat | 1 files changed, 21 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indent.c Mon Sep 19 00:16:58 1994 +0000 +++ b/src/indent.c Mon Sep 19 00:17:26 1994 +0000 @@ -748,7 +748,7 @@ struct position pos; /* vpos is cumulative vertical position, changed as from is changed */ register int vpos = 0; - register int prevline; + Lisp_Object prevline; register int first; int lmargin = hscroll > 0 ? 1 - hscroll : 0; int selective @@ -768,20 +768,22 @@ to determine hpos of starting point */ if (from > BEGV && FETCH_CHAR (from - 1) != '\n') { - prevline = find_next_newline_no_quit (from, -1); - while (prevline > BEGV + XFASTINT (prevline) = find_next_newline_no_quit (from, -1); + while (XFASTINT (prevline) > BEGV && ((selective > 0 - && indented_beyond_p (prevline, selective)) + && indented_beyond_p (XFASTINT (prevline), selective)) #ifdef USE_TEXT_PROPERTIES /* watch out for newlines with `invisible' property */ - || ! NILP (Fget_char_property (XFASTINT (prevline), + || ! NILP (Fget_char_property (prevline, Qinvisible, window)) #endif )) - prevline = find_next_newline_no_quit (prevline - 1, -1); - pos = *compute_motion (prevline, 0, - lmargin + (prevline == 1 ? start_hpos : 0), + XFASTINT (prevline) + = find_next_newline_no_quit (XFASTINT (prevline) - 1, -1); + pos = *compute_motion (XFASTINT (prevline), 0, + lmargin + (XFASTINT (prevline) == 1 + ? start_hpos : 0), from, 1 << (INTBITS - 2), 0, width, hscroll, 0, XWINDOW (window)); } @@ -803,29 +805,29 @@ while ((vpos > vtarget || first) && from > BEGV) { - prevline = from; + XFASTINT (prevline) = from; while (1) { - prevline = find_next_newline_no_quit (prevline - 1, -1); - if (prevline == BEGV + XFASTINT (prevline) + = find_next_newline_no_quit (XFASTINT (prevline) - 1, -1); + if (XFASTINT (prevline) == BEGV || ((selective <= 0 - || ! indented_beyond_p (prevline, selective)) + || ! indented_beyond_p (XFASTINT (prevline), selective)) #ifdef USE_TEXT_PROPERTIES /* watch out for newlines with `invisible' property */ - && NILP (Fget_char_property (XFASTINT (prevline), - Qinvisible, - window)) + && NILP (Fget_char_property (prevline, Qinvisible, window)) #endif )) break; } - pos = *compute_motion (prevline, 0, - lmargin + (prevline == 1 ? start_hpos : 0), + pos = *compute_motion (XFASTINT (prevline), 0, + lmargin + (XFASTINT (prevline) == 1 + ? start_hpos : 0), from, 1 << (INTBITS - 2), 0, width, hscroll, 0, XWINDOW (window)); vpos -= pos.vpos; first = 0; - from = prevline; + from = XFASTINT (prevline); } /* If we made exactly the desired vertical distance, @@ -869,7 +871,7 @@ if (! NILP (window)) CHECK_WINDOW (window, 0); else - XSET (window, Lisp_Window, selected_window); + window = selected_window; w = XWINDOW (window);