Subject: bug#18131: 24.4.50; View-search-... skips all matches between (point) and edge of window

From: Dima Kogan <[email-masked]>
Date: Mon, 28 Jul 2014 11:06:59 -0700

Hi.

The emacs view-mode has navigation with 'n' and 'p' keys to navigate by
searching (like isearch, but with fewer keystrokes and very similar to
less and vi).

I just discovered that unlike less and vi, this view-mode navigation
doesn't hit all the matches, but rather skips the ones between (point)
and the edge of the window. This ensures that any matches that are
visible by the user (but not highlighted by view-mode) are skipped.

This clearly was a design choice, rather than a bug. However, the
documentation doesn't mention this, and I think it is counterintuitive.
Attaching a very simple patch to fix.

>From ed227e61fe92c54c18542455448ed7f28d0c9e77 Mon Sep 17 00:00:00 2001
From: Dima Kogan <[email-masked]>
Date: Mon, 28 Jul 2014 11:05:00 -0700
Subject: [PATCH] View-search-... now hit all the matches, regardless of window
 position

Prior to this patch anything between (point) and the edge of the window was
skipped. This was counterintuitive (not what less or vim do) and was not
mentioned in the documentation
---
 lisp/view.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/view.el b/lisp/view.el
index 9f914b0..498a434 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -960,7 +960,7 @@ for highlighting the match that is found."
      (t (error "No previous View-mode search")))
     (save-excursion
       (if end (goto-char (if (< times 0) (point-max) (point-min)))
-	(move-to-window-line (if (< times 0) 0 -1)))
+	(forward-char (if (< times 0) -1 1)))
       (if (if no (view-search-no-match-lines times regexp)
 	    (re-search-forward regexp nil t times))
 	  (setq where (point))))
-- 
2.0.0