emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 76643256f2: ol-man: Set window point not buffer poi


From: ELPA Syncer
Subject: [elpa] externals/org 76643256f2: ol-man: Set window point not buffer point and wait before search
Date: Wed, 10 Aug 2022 07:57:54 -0400 (EDT)

branch: externals/org
commit 76643256f2bddb79908a41c264c43de3e06a70dd
Author: Tom Gillespie <tgbugs@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>

    ol-man: Set window point not buffer point and wait before search
    
    * lisp/ol-man.el (org-man-open): Set window point not buffer point and
    wait before search.  When passed man:path::SEARCH `org-man-open' uses
    `search-forward' to jump to the location of e.g. a heading.  Prior to
    this fix it only used `search-forward', which will not change the
    point of the cursor in the window, meaning that even if there is a
    match it will not appear.  Use `accept-process-output' to block until
    the manpage finishes rendering before searching the buffer so that
    there will be something to find.
---
 lisp/ol-man.el | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/lisp/ol-man.el b/lisp/ol-man.el
index aa22964c54..24e896f30e 100644
--- a/lisp/ol-man.el
+++ b/lisp/ol-man.el
@@ -43,12 +43,22 @@ If PATH contains extra ::STRING which will use `occur' to 
search
 matched strings in man buffer."
   (string-match "\\(.*?\\)\\(?:::\\(.*\\)\\)?$" path)
   (let* ((command (match-string 1 path))
-        (search (match-string 2 path)))
-    (funcall org-man-command command)
+         (search (match-string 2 path))
+         (buffer (funcall org-man-command command)))
     (when search
-      (with-current-buffer (concat "*Man " command "*")
-       (goto-char (point-min))
-       (search-forward search)))))
+      (with-current-buffer buffer
+        (goto-char (point-min))
+        (unless (search-forward search nil t)
+          (let ((process (get-buffer-process buffer)))
+            (while (process-live-p process)
+              (accept-process-output process)))
+          (goto-char (point-min))
+          (search-forward search))
+        (forward-line -1)
+        (let ((point (point)))
+          (let ((window (get-buffer-window buffer)))
+            (set-window-point window point)
+            (set-window-start window point)))))))
 
 (defun org-man-store-link ()
   "Store a link to a README file."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]