branch: elpa/hyperdrive
commit 69beede3f73236049e83beb2b9699563e1bd5bc0
Author: Joseph Turner <jos...@ushin.org>
Commit: Joseph Turner <jos...@ushin.org>

    Change: (-open-at-version) Replace hyperdrive-open-latest-version
    
    This command is more general.  To open the latest version, just hit
    RET without specifying a version number.
---
 CHANGELOG.org              |  4 ++--
 doc/hyperdrive-manual.org  |  8 +++++---
 doc/hyperdrive-manual.texi |  8 +++++---
 hyperdrive-menu.el         |  2 +-
 hyperdrive.el              | 23 +++++++++++++----------
 5 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index c90c4349a0..30e0c0d5b1 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -7,8 +7,8 @@ This project adheres to 
[[https://semver.org/spec/v2.0.0.html][Semantic Versioni
 
 ** Added
 
-- ~hyperdrive-open-latest-version~: Open the latest version of the
-  current file or directory
+- ~hyperdrive-open-at-version~: Open the current file or directory at a
+  specific version.
 
 ** Fixed
 
diff --git a/doc/hyperdrive-manual.org b/doc/hyperdrive-manual.org
index f631c9a864..8da67499bd 100644
--- a/doc/hyperdrive-manual.org
+++ b/doc/hyperdrive-manual.org
@@ -370,12 +370,14 @@ the hyperdrive.*
 ** View the hyperdrive version history
 #+findex: hyperdrive-previous-version
 #+findex: hyperdrive-next-version
-#+findex: hyperdrive-open-latest-version
+#+findex: hyperdrive-open-at-version
 
 Hyperdrives are versioned (see [[*Versioning]]).  To open the
 previous/next version of a hyperdrive file or directory, run
-~hyperdrive-previous-version~ or ~hyperdrive-next-version~.  To open its
-latest version, run ~hyperdrive-open-latest-version~.
+~hyperdrive-previous-version~ or ~hyperdrive-next-version~.
+~hyperdrive-open-at-version~ lets you specify a version number; leaving
+the version blank opens the current file or directory at its
+hyperdrive's latest version.
 
 *** History buffer
 #+findex: hyperdrive-history
diff --git a/doc/hyperdrive-manual.texi b/doc/hyperdrive-manual.texi
index 169faf6f32..01de4db8a9 100644
--- a/doc/hyperdrive-manual.texi
+++ b/doc/hyperdrive-manual.texi
@@ -635,12 +635,14 @@ the hyperdrive.}
 
 @findex hyperdrive-previous-version
 @findex hyperdrive-next-version
-@findex hyperdrive-open-latest-version
+@findex hyperdrive-open-at-version
 
 Hyperdrives are versioned (see @ref{Versioning}).  To open the
 previous/next version of a hyperdrive file or directory, run
-@code{hyperdrive-previous-version} or @code{hyperdrive-next-version}.  To open 
its
-latest version, run @code{hyperdrive-open-latest-version}.
+@code{hyperdrive-previous-version} or @code{hyperdrive-next-version}.
+@code{hyperdrive-open-at-version} lets you specify a version number; leaving
+the version blank opens the current file or directory at its
+hyperdrive's latest version.
 
 @menu
 * History buffer::
diff --git a/hyperdrive-menu.el b/hyperdrive-menu.el
index 8c653b7680..79963b8400 100644
--- a/hyperdrive-menu.el
+++ b/hyperdrive-menu.el
@@ -115,7 +115,7 @@
                                                            "latest")))
                               (concat ": " (propertize display-version 'face 
'transient-value)))))
      )
-    ("V l" "Latest" hyperdrive-open-latest-version)
+    ("V a" "At..." hyperdrive-open-at-version)
     ("V h" "History" hyperdrive-history
      :inapt-if (lambda ()
                  (hyperdrive--entry-directory-p (oref transient--prefix 
scope))))]]
diff --git a/hyperdrive.el b/hyperdrive.el
index 00467622f8..9fe0f020e3 100644
--- a/hyperdrive.el
+++ b/hyperdrive.el
@@ -582,14 +582,18 @@ it to `hyperdrive-open'."
     ((and (pred hyperdrive-entry-p) next-entry)
      (hyperdrive-open next-entry))))
 
-(defun hyperdrive-open-latest-version (entry)
-  "Open latest version of ENTRY."
+(defun hyperdrive-open-at-version (entry version)
+  "Open ENTRY at VERSION.
+Nil VERSION means open the entry at its hyperdrive's latest version."
   (declare (modes hyperdrive-mode))
-  (interactive (list hyperdrive-current-entry))
-  (if-let ((latest-entry (hyperdrive-entry-at nil entry)))
+  (interactive (let ((entry hyperdrive-current-entry))
+                 (list entry (hyperdrive-read-version
+                              :hyperdrive (hyperdrive-entry-hyperdrive 
entry)))))
+  (if-let ((latest-entry (hyperdrive-entry-at version entry)))
       (hyperdrive-open latest-entry)
-    (hyperdrive-message (substitute-command-keys "%s does not exist at its 
hyperdrive's latest version. Try \\[hyperdrive-history]")
-                        (hyperdrive-entry-description entry :with-version 
nil))))
+    (hyperdrive-message (substitute-command-keys "%s does not exist at version 
%s. Try \\[hyperdrive-history]")
+                        (hyperdrive-entry-description entry :with-version nil)
+                        version)))
 
 ;;;; Bookmark support
 
@@ -1158,11 +1162,10 @@ The return value of this function is the retrieval 
buffer."
                                                      "latest")))
                         (format " (%s)" display-version)))
        :help "Open next version"]
-      ["Latest Version" (lambda ()
+      ["Open Specific Version" (lambda ()
                           (interactive)
-                          (call-interactively 
#'hyperdrive-open-latest-version))
-       :label "Latest Version"
-       :help "Open latest version"]
+                          (call-interactively #'hyperdrive-open-at-version))
+       :help "Open specific version"]
       ["Version History" (lambda ()
                            (interactive)
                            (call-interactively #'hyperdrive-history))

Reply via email to