branch: externals/vc-hgcmd
commit 1515cd8cca0b749da482fa1af6e0576da98aa1ac
Author: muffinmad <[email protected]>
Commit: muffinmad <[email protected]>
View log for revset
---
README.md | 3 +++
vc-hgcmd.el | 25 ++++++++++++++++++++++---
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 332146f..03cf750 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,9 @@ Additional bindings in `log-view-mode`:
<kbd>C c</kbd>, <kbd>C 1</kbd> and <kbd>C 2</kbd> show corresponding diffs for
whole changeset
+#### View log for revset
+
+Command `vc-hgcmd-print-log-revset` allows to print log for revset, e.g.
`branch(branch1) or branch(branch2)`
## Installation
diff --git a/vc-hgcmd.el b/vc-hgcmd.el
index 39947df..065e23b 100644
--- a/vc-hgcmd.el
+++ b/vc-hgcmd.el
@@ -5,7 +5,7 @@
;; Author: Andrii Kolomoiets <[email protected]>
;; Keywords: vc
;; URL: https://github.com/muffinmad/emacs-vc-hgcmd
-;; Package-Version: 1.7
+;; Package-Version: 1.8
;; Package-Requires: ((emacs "25.1"))
;; This file is NOT part of GNU Emacs.
@@ -169,6 +169,10 @@
;; - `c 1' view diff between revision at point and its first parent
;; - `c 2' view diff between revision at point and its second parent
;; `C c', `C 1' and `C 2' shows corresponding diffs for whole changeset.
+;;
+;; - View log for revset
+;; Command `vc-hgcmd-print-log-revset' allows to print log for
+;; revset, e.g. "branch(branch1) or branch(branch2)"
;;; Code:
@@ -1023,6 +1027,8 @@ Insert output to process buffer and check if amount of
data is enought to parse
"Mark FILES resolved."
(apply #'vc-hgcmd-command (nconc (list "resolve" "-m") (mapcar
#'vc-hgcmd--file-relative-name files))))
+(defvar vc-hgcmd--print-log-revset nil)
+
(defun vc-hgcmd-print-log (files buffer &optional shortlog start-revision
limit)
"Put maybe SHORTLOG log of FILES to BUFFER starting with START-REVISION
limited by LIMIT."
;; TODO short log
@@ -1032,7 +1038,7 @@ Insert output to process buffer and check if amount of
data is enought to parse
(when shortlog (list "-G"))
(when start-revision
;; start revision is used for branch log or specific revision log
when limit is 1
- (list (if (eq limit 1) "-r" "-b") start-revision))
+ (list (if (or vc-hgcmd--print-log-revset (eq limit 1)) "-r" "-b")
start-revision))
(when limit (list "-l" (number-to-string limit)))
;; file list not needed if limit is 1
(unless (eq limit 1)
@@ -1048,6 +1054,19 @@ Insert output to process buffer and check if amount of
data is enought to parse
(goto-char p)
(unless start-revision (vc-hgcmd-show-log-entry nil)))))))
+(defun vc-hgcmd-print-log-revset (revset)
+ "Show the change log for REVSET."
+ (interactive "sRevset to log: ")
+ (when (string-blank-p revset)
+ (user-error "No revset specified"))
+ (let ((vc-hgcmd--print-log-revset t))
+ (vc-print-log-internal
+ 'Hgcmd
+ (list default-directory)
+ revset
+ t
+ (when (> vc-log-show-limit 0) vc-log-show-limit))))
+
(defun vc-hgcmd--log-in-or-out (type buffer remote-location)
"Log TYPE changesets for REMOTE-LOCATION to BUFFER."
(apply #'vc-hgcmd-command-to-buffer buffer type (unless (string= ""
remote-location) remote-location)))
@@ -1063,7 +1082,7 @@ Insert output to process buffer and check if amount of
data is enought to parse
(defun vc-hgcmd--graph-data-re (re)
"Add graph data re to RE."
- (concat "^\\(?:[o@_x*+-|/: ]*\\)" re))
+ (concat "^\\(?:[o@_x*+-~|/: ]*\\)" re))
(defconst vc-hgcmd--message-re (vc-hgcmd--graph-data-re
"changeset:\\s-*\\(%s\\):\\([[:xdigit:]]+\\)"))
(defconst vc-hgcmd--log-view-message-re (format vc-hgcmd--message-re
"[[:digit:]]+"))