2012-07-04 Paul Eggert <eggert@cs.ucla.edu>
+ * window.c (set_window_hscroll): Revert the 100000 hscroll limit.
+ This should be fixed in a better way; see Eli Zaretskii in
+ <http://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00088.html>.
+ (HSCROLL_MAX): Remove; this is now internal to set_window_hscroll.
+
* fileio.c (time_error_value): Rename from special_mtime.
The old name's problems were noted by Eli Zaretskii in
<http://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00087.html>.
#include "nsterm.h"
#endif
-/* Horizontal scrolling has problems with large scroll amounts.
- It's too slow with long lines, and even with small lines the
- display can be messed up. Impose a reasonable maximum. */
-enum { HSCROLL_MAX = 100000 };
-
Lisp_Object Qwindowp, Qwindow_live_p;
static Lisp_Object Qwindow_configuration_p, Qrecord_window_buffer;
static Lisp_Object Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer;
static Lisp_Object
set_window_hscroll (struct window *w, EMACS_INT hscroll)
{
- int new_hscroll = clip_to_bounds (0, hscroll, HSCROLL_MAX);
+ /* Horizontal scrolling has problems with large scroll amounts.
+ It's too slow with long lines, and even with small lines the
+ display can be messed up. For now, though, impose only the limits
+ required by the internal representation: horizontal scrolling must
+ fit in fixnum (since it's visible to Elisp) and into ptrdiff_t
+ (since it's stored in a ptrdiff_t). */
+ ptrdiff_t hscroll_max = min (MOST_POSITIVE_FIXNUM, PTRDIFF_MAX);
+ ptrdiff_t new_hscroll = clip_to_bounds (0, hscroll, hscroll_max);
/* Prevent redisplay shortcuts when changing the hscroll. */
if (w->hscroll != new_hscroll)