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

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

[elpa] externals/devdocs a3177fd: Add devdocs-peruse and previous/next p


From: ELPA Syncer
Subject: [elpa] externals/devdocs a3177fd: Add devdocs-peruse and previous/next page commands
Date: Sun, 19 Sep 2021 06:57:13 -0400 (EDT)

branch: externals/devdocs
commit a3177fde9ed48c1b1bc0a17f0e08338dc3f67e37
Author: Augusto Stoffel <arstoffel@gmail.com>
Commit: Augusto Stoffel <arstoffel@gmail.com>

    Add devdocs-peruse and previous/next page commands
---
 devdocs.el | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/devdocs.el b/devdocs.el
index d922f9e..1baa003 100644
--- a/devdocs.el
+++ b/devdocs.el
@@ -264,8 +264,8 @@ This is an alist containing `entries', `pages' and `types'."
 (defvar devdocs-header-line
   '(:eval (let-alist (car devdocs--stack)
             (concat (devdocs--doc-title .doc)
-                    devdocs-separator .type
-                    devdocs-separator .name))))
+                    (and .type devdocs-separator) .type
+                    (and .name devdocs-separator) .name))))
 
 (define-derived-mode devdocs-mode special-mode "DevDocs"
   "Major mode for viewing DevDocs documents."
@@ -316,12 +316,31 @@ with the order of appearance in the text."
   (interactive "p")
   (devdocs-next-entry (- count)))
 
+(defun devdocs-next-page (count)
+  "Go forward COUNT pages in this document."
+  (interactive "p")
+  (let-alist (car devdocs--stack)
+    (let* ((pages (alist-get 'pages (devdocs--index .doc)))
+           (page (+ count (seq-position pages (devdocs--path-file .path))))
+           (path (or (ignore-error 'args-out-of-range (seq-elt pages page))
+                     (user-error (if (< count 0) "No previous page" "No next 
page")))))
+      (devdocs--render `((doc . ,.doc)
+                         (path . ,path)
+                         (name . ,(format "%s/%s" (1+ page) (length 
pages))))))))
+
+(defun devdocs-previous-page (count)
+  "Go backward COUNT entries in this document."
+  (interactive "p")
+  (devdocs-next-page (- count)))
+
 (let ((map devdocs-mode-map))
   (define-key map [tab] 'forward-button)
   (define-key map [backtab] 'backward-button)
   (define-key map "i" 'devdocs-lookup)
   (define-key map "p" 'devdocs-previous-entry)
   (define-key map "n" 'devdocs-next-entry)
+  (define-key map "[" 'devdocs-previous-page)
+  (define-key map "]" 'devdocs-next-page)
   (define-key map "l" 'devdocs-go-back)
   (define-key map "r" 'devdocs-go-forward)
   (define-key map "." 'devdocs-goto-target))
@@ -496,6 +515,16 @@ If INITIAL-INPUT is not nil, insert it into the 
minibuffer."
       (devdocs-goto-target)
       (recenter 0))))
 
+;;;###autoload
+(defun devdocs-peruse (doc)
+  "Read a document from the first page."
+  (interactive (list (devdocs--read-document "Peruse documentation: ")))
+  (let ((pages (alist-get 'pages (devdocs--index doc))))
+    (pop-to-buffer
+     (devdocs--render `((path . ,(seq-first pages))
+                        (doc . ,doc)
+                        (name . ,(format "%s/%s" 1 (length pages))))))))
+
 ;;; Compatibility with the old devdocs package
 
 ;;;###autoload



reply via email to

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