X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/2421af7e64f793a3cd8545dde64de6c2f84a51d3..986fb647cc1df1edeeaa2c0e7cb34c100eb9efb9:/src/indent.c diff --git a/src/indent.c b/src/indent.c index ba4787aa1c..a7f41f7e8e 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1,6 +1,6 @@ /* Indentation functions. Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1998, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -20,6 +20,7 @@ along with GNU Emacs. If not, see . */ #include #include +#include #include "lisp.h" #include "buffer.h" @@ -252,7 +253,7 @@ skip_invisible (pos, next_boundary_p, to, window) { /* Don't scan terribly far. */ XSETFASTINT (proplimit, min (pos + 100, to)); - /* No matter what. don't go past next overlay change. */ + /* No matter what, don't go past next overlay change. */ if (XFASTINT (overlay_limit) < XFASTINT (proplimit)) proplimit = overlay_limit; tmp = Fnext_single_property_change (position, Qinvisible, @@ -294,7 +295,7 @@ skip_invisible (pos, next_boundary_p, to, window) int c; \ \ wide_column = 0; \ - c = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, bytes); \ + c = STRING_CHAR_AND_LENGTH (p, bytes); \ if (BYTES_BY_CHAR_HEAD (*p) != bytes) \ width = bytes * 4; \ else \ @@ -2063,7 +2064,7 @@ whether or not it is currently displayed in some window. */) } else { - int it_start, oselective, first_x, it_overshoot_expected; + int it_start, first_x, it_overshoot_expected; SET_TEXT_POS (pt, PT, PT_BYTE); start_display (&it, w, pt); @@ -2093,11 +2094,12 @@ whether or not it is currently displayed in some window. */) really at some x > 0. */ reseat_at_previous_visible_line_start (&it); it.current_x = it.hpos = 0; - /* Temporarily disable selective display so we don't move too far */ - oselective = it.selective; - it.selective = 0; - move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); - it.selective = oselective; + if (IT_CHARPOS (it) != PT) + /* We used to temporarily disable selective display here; the + comment said this is "so we don't move too far" (2005-01-19 + checkin by kfs). But this does nothing useful that I can + tell, and it causes Bug#2694 . -- cyd */ + move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); if (XINT (lines) <= 0) { @@ -2133,7 +2135,7 @@ whether or not it is currently displayed in some window. */) which might span multiple screen lines (e.g., if it's on a multi-line display string). We want to start from the last line that it occupies. */ - if (PT < ZV) + if (it_start < ZV) { while (IT_CHARPOS (it) <= it_start) {