aboutsummaryrefslogtreecommitdiff
path: root/config.el
diff options
context:
space:
mode:
Diffstat (limited to 'config.el')
-rw-r--r--config.el39
1 files changed, 31 insertions, 8 deletions
diff --git a/config.el b/config.el
index cad7dd4..d80b253 100644
--- a/config.el
+++ b/config.el
@@ -301,16 +301,39 @@ emms-cache-file (concat doom-cache-dir "emms-cache"))
;; ADD w BINDINGS
:desc "revision other window" "~" #'vc-revision-other-window)
-(map!
- :leader
- :prefix "g m"
- :desc "Status" "m" #'majutsu ; default majutsu buffer
- :desc "Describe" "d" #'majutsu-describe ; equivalent of 'jj describe'
- :desc "New" "n" #'majutsu-new ; new jj rev
- :desc "Push" "p" #'majutsu-git-push) ; push to git
-
(use-package! vc-jj)
+(after! vc-jj
+ (defvar my/vc-jj-advance-to nil)
+
+ (defun my/vc-jj-bookmark-advance (&optional names)
+ "Advance the closest bookmarks (or just NAMES) forward."
+ (interactive
+ (when current-prefix-arg
+ (list (completing-read-multiple
+ "Advance bookmarks: "
+ (vc-jj--process-lines
+ nil "bookmark" "list"
+ "-T" "if(!self.remote(), self.name() ++ '\n')")))))
+ (with-temp-buffer
+ (let ((status (apply #'vc-jj--call nil t "bookmark" "advance"
+ (append (when my/vc-jj-advance-to
+ (list "--to" my/vc-jj-advance-to))
+ names))))
+ (message "vc-jj: %s" (string-trim (buffer-string)))
+ status)))
+
+ (defun my/vc-jj--advance-before-push (&rest _)
+ (my/vc-jj-bookmark-advance))
+ (advice-add 'vc-jj-push :before #'my/vc-jj--advance-before-push)
+
+ (defun my/vc-jj-checkin (files comment &optional _rev)
+ "Describe @, then push. FILES is ignored: jj has no partial checkin."
+ (let ((default-directory (vc-jj-root (car files))))
+ (vc-jj-modify-change-comment nil "@" comment)
+ (vc-jj-push nil)))
+ (advice-add 'vc-jj-checkin :override #'my/vc-jj-checkin))
+
(setq org-directory "~/org/")
(after! org