From 5480b8ef252bece2ad225af8898b71ad931f3924 Mon Sep 17 00:00:00 2001
From: Juri Linkov <juri@linkov.net>
Date: Wed, 31 Dec 2014 01:50:06 +0200
Subject: [PATCH] Multi-page isearch support in eww

* lisp/net/eww.el (eww-isearch-next-buffer): New function.
(eww-mode): Set multi-isearch-next-buffer-function to it.
http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02300.html
---
 lisp/ChangeLog  |  5 +++++
 lisp/net/eww.el | 15 +++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9bbc92eb733..4be97b564a9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-30  Juri Linkov  <juri@linkov.net>
+
+	* net/eww.el (eww-isearch-next-buffer): New function.
+	(eww-mode): Set multi-isearch-next-buffer-function to it.
+
 2014-12-30  Dmitry Gutov  <dgutov@yandex.ru>
 
 	* progmodes/xref.el (xref-find-definitions): Mention "no
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index b43dba589c2..af902ded472 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -705,6 +705,8 @@ the like."
    (setq-local tool-bar-map eww-tool-bar-map))
   ;; desktop support
   (setq-local desktop-save-buffer 'eww-desktop-misc-data)
+  ;; multi-page isearch support
+  (setq-local multi-isearch-next-buffer-function 'eww-isearch-next-buffer)
   (setq truncate-lines t)
   (buffer-disable-undo)
   (setq buffer-read-only t))
@@ -1885,6 +1887,19 @@ Otherwise, the restored buffer will contain a prompt to do so by using
 (add-to-list 'desktop-buffer-mode-handlers
              '(eww-mode . eww-restore-desktop))
 
+;;; Isearch support
+
+(defun eww-isearch-next-buffer (&optional buffer wrap)
+  "Go to the next page to search using `rel' attribute for navigation."
+  (if wrap
+      (condition-case nil
+	  (eww-top-url)
+	(error nil))
+    (if isearch-forward
+	(eww-next-url)
+      (eww-previous-url)))
+  (current-buffer))
+
 (provide 'eww)
 
 ;;; eww.el ends here
-- 
2.39.5