diff options
Diffstat (limited to 'config.el')
| -rw-r--r-- | config.el | 39 |
1 files changed, 31 insertions, 8 deletions
@@ -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 |
