/* In buffers with very long lines, this function becomes very
slow. Pretend that the buffer is narrowed to make it fast. */
narrowed_begv = get_narrowed_begv (w, window_point (w));
- if (narrowed_begv && pos > narrowed_begv)
+ if (pos > narrowed_begv)
head = narrowed_begv;
tail = ZV;
stop = GPT;
specbind (Qinhibit_quit, Qt);
if (current_buffer->long_line_optimizations_p)
- {
- ptrdiff_t begv = get_narrowed_begv (w, PT);
- ptrdiff_t zv = get_narrowed_zv (w, PT);
- if (!begv) begv = BEGV;
- Fnarrow_to_region (make_fixnum (begv), make_fixnum (zv), Qt);
- }
+ Fnarrow_to_region (make_fixnum (get_narrowed_begv (w, PT)),
+ make_fixnum (get_narrowed_zv (w, PT)),
+ Qt);
run_hook_with_args (2, ((Lisp_Object []) {hook, hook}), safe_run_hook_funcall);
unbind_to (count, Qnil);
get_narrowed_begv (struct window *w, ptrdiff_t pos)
{
int len = get_narrowed_len (w);
- ptrdiff_t begv;
- begv = max ((pos / len - 1) * len, BEGV);
- return begv == BEGV ? 0 : begv;
+ return max ((pos / len - 1) * len, BEGV);
}
ptrdiff_t
if (current_buffer->long_line_optimizations_p)
{
- ptrdiff_t begv = it->narrowed_begv ? it->narrowed_begv : BEGV;
+ ptrdiff_t begv = it->narrowed_begv;
ptrdiff_t zv = it->narrowed_zv;
ptrdiff_t charpos = IT_CHARPOS (*it);
if (charpos < begv || charpos > zv)
{
begv = get_narrowed_begv (it->w, charpos);
- if (!begv) begv = BEGV;
zv = get_narrowed_zv (it->w, charpos);
}
Fnarrow_to_region (make_fixnum (begv), make_fixnum (zv), Qt);
find_newline_no_quit (IT_CHARPOS (*it),
IT_BYTEPOS (*it), -1,
&it->bidi_it.bytepos),
- it->narrowed_begv);
+ get_closer_narrowed_begv (it->w, IT_CHARPOS (*it)));
bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, true);
do
{
dec_both (&cp, &bp);
SET_WITH_NARROWED_BEGV (it, cp,
find_newline_no_quit (cp, bp, -1, NULL),
- it->narrowed_begv);
+ get_closer_narrowed_begv (it->w, IT_CHARPOS (*it)));
move_it_to (it, cp, -1, -1, -1, MOVE_TO_POS);
}
bidi_unshelve_cache (it3data, true);