branch: externals/vc-hgcmd
commit 4036564dc78ff75aa8521e6215295617920f36d1
Author: muffinmad <andreyk....@gmail.com>
Commit: muffinmad <andreyk....@gmail.com>

    Show all 'summary' output
    
    - Single command 'summary' used in 'vc-hgcmd-dir-extra-headers'
    - Remove unused functions
---
 vc-hgcmd.el | 104 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 44 insertions(+), 60 deletions(-)

diff --git a/vc-hgcmd.el b/vc-hgcmd.el
index e1ea97a..40602ad 100644
--- a/vc-hgcmd.el
+++ b/vc-hgcmd.el
@@ -689,27 +689,6 @@ Insert output to process buffer and check if amount of 
data is enought to parse
       :callback-args update-function
       :skip-error t))))
 
-(defun vc-hgcmd--extra-header (name value)
-  "Format NAME and VALUE as dir extra header."
-  (concat (propertize name 'face 'font-lock-type-face)
-          (propertize value 'face 'font-lock-variable-name-face)
-          "\n"))
-
-(defun vc-hgcmd--parent-info (data)
-  "Parse and propertize parent log info from DATA."
-  (when data
-    (cl-multiple-value-bind (rev branch tags desc) (split-string data "\0")
-      (apply #'concat
-             (list
-              (vc-hgcmd--extra-header "Parent     : " (concat rev " " branch " 
" tags))
-              (vc-hgcmd--extra-header "           : " desc))))))
-
-(defun vc-hgcmd--summary-info (search name)
-  "Search for summary info prefixed by SEARCH and propertize with NAME."
-  (goto-char (point-min))
-  (when (search-forward-regexp (format "^%s: \\(.*\\)" search) nil t)
-    (vc-hgcmd--extra-header name (match-string-no-properties 1))))
-
 (defvar vc-hgcmd-extra-menu-map
   (let ((map (make-sparse-keymap)))
     (define-key map [hgcmd-sl]
@@ -765,47 +744,52 @@ Insert output to process buffer and check if amount of 
data is enought to parse
 
 (defun vc-hgcmd-dir-extra-headers (_dir)
   "Return summary command for DIR output as dir extra headers."
-  (let* ((parents (vc-hgcmd--parents 
"{rev}:{node|short}\\0{branch}\\0{tags}\\0{desc|firstline}"))
-         (result (when parents
-                   (apply #'concat (mapcar #'vc-hgcmd--parent-info parents)))))
-    (concat
-     result
-     (with-temp-buffer
-       (when (vc-hgcmd--run-command (make-vc-hgcmd--command :command (list 
"summary") :output-buffer (current-buffer) :wait t))
+  (concat
+   (with-temp-buffer
+     (when (vc-hgcmd--run-command (make-vc-hgcmd--command :command (list 
"summary") :output-buffer (current-buffer) :wait t))
+       (apply #'concat
+        (let (result)
+          (goto-char (point-min))
+          (while (not (eobp))
+            (push
+             (let ((entry (cond
+                           ((looking-at " .*") (cons "" (match-string 0)))
+                           ((looking-at "\\(.*\\): \\(.*\\)") (cons 
(capitalize (match-string 1)) (match-string 2)))
+                           (t (cons "" (buffer-substring (point) 
(line-end-position)))))))
+               (concat
+                (propertize (format "%-11s: " (car entry)) 'face 
'font-lock-type-face)
+                (propertize (cdr entry) 'face 'font-lock-variable-name-face)
+                "\n"))
+             result)
+            (forward-line))
+          (nreverse result)))))
+   (when vc-hgcmd-dir-show-shelve
+     (let ((shelves (vc-hgcmd-shelve-list)))
+       (when shelves
          (concat
-          (unless parents
-            (vc-hgcmd--summary-info "parent" "Parent     : "))
-          (vc-hgcmd--summary-info "branch" "Branch     : ")
-          (vc-hgcmd--summary-info "commit" "Commit     : ")
-          (vc-hgcmd--summary-info "update" "Update     : ")
-          (vc-hgcmd--summary-info "phases" "Phases     : "))))
-     (when vc-hgcmd-dir-show-shelve
-       (let ((shelves (vc-hgcmd-shelve-list)))
-         (when shelves
-           (concat
-            (propertize "Shelve     :\n" 'face 'font-lock-type-face)
-            (with-temp-buffer
-              (when (vc-hgcmd--run-command (make-vc-hgcmd--command :command 
(list "shelve" "-l") :output-buffer (current-buffer) :wait t))
-                (goto-char (point-min))
-                (mapconcat
-                 (lambda (shelve)
-                   (prog1
+          (propertize "Shelve     :\n" 'face 'font-lock-type-face)
+          (with-temp-buffer
+            (when (vc-hgcmd--run-command (make-vc-hgcmd--command :command 
(list "shelve" "-l") :output-buffer (current-buffer) :wait t))
+              (goto-char (point-min))
+              (mapconcat
+               (lambda (shelve)
+                 (prog1
+                     (propertize
+                      (concat
+                       "             "
+                       (propertize shelve 'face 'font-lock-variable-name-face)
                        (propertize
-                        (concat
-                         "             "
-                         (propertize shelve 'face 
'font-lock-variable-name-face)
-                         (propertize
-                          (replace-regexp-in-string
-                           (concat "^" (regexp-quote shelve) "\s*")
-                           "   "
-                           (buffer-substring-no-properties 
(line-beginning-position) (line-end-position)))
-                          'face 'font-lock-comment-face))
-                        'mouse-face 'highlight
-                        'help-echo "mouse-3: Show shelve menu\nRET: Show 
shelve\nA: Unshelve and keep\nP: Unshelve and remove\nC-k: Delete shelve"
-                        'keymap vc-hgcmd-shelve-map
-                        'vc-hgcmd--shelve-name shelve)
-                     (forward-line)))
-                 shelves "\n"))))))))))
+                        (replace-regexp-in-string
+                         (concat "^" (regexp-quote shelve) "\s*")
+                         "   "
+                         (buffer-substring-no-properties 
(line-beginning-position) (line-end-position)))
+                        'face 'font-lock-comment-face))
+                      'mouse-face 'highlight
+                      'help-echo "mouse-3: Show shelve menu\nRET: Show 
shelve\nA: Unshelve and keep\nP: Unshelve and remove\nC-k: Delete shelve"
+                      'keymap vc-hgcmd-shelve-map
+                      'vc-hgcmd--shelve-name shelve)
+                   (forward-line)))
+               shelves "\n")))))))))
 
 (defun vc-hgcmd-shelve-list ()
   "Return shelve list."

Reply via email to