Kyle Meyer <kyle@kyleam.com> writes: > --8<---------------cut here---------------start------------->8--- > > (defun km/notmuch-github-pr-number () > "Return the PR number for this message." > (let (pr) > (with-current-notmuch-show-message > (goto-char (point-min)) > (if (re-search-forward "https://github\\.com/.*/pull/\\([0-9]+\\)" nil t) > (setq pr (match-string-no-properties 1)) > (user-error "Could not find PR number"))) > pr)) > > ;; This function could be anything that figures out the project based > ;; on the current notmuch message. Or, if you use projectile and > ;; don't mind getting queried each time, it could just read a project > ;; from `projectile-relevant-known-projects'. > (defun km/notmuch-repo-from-message () > "Return the repository that this message is associated with." > (let ((fname (notmuch-show-get-filename))) > (or (and fname > (string-match-p "magit-list" fname) > "~/src/emacs/magit") > (user-error "Could not determine repo")))) > > (defun km/notmuch-visit-pr-in-magit (&optional dont-fetch) > "Show the Magit log for this message's PR. > If DONT-FETCH is non-nil, do not fetch first." > (interactive "P") > (let* ((pr (km/notmuch-github-pr-number)) > (repo (km/notmuch-repo-from-message)) > (default-directory repo)) > ;; "origin" is hard-coded below, but it could of course be > ;; anything. You could also have an alist that maps repo -> > ;; remote. > ;; > ;; This assumes that you've added > ;; > ;; fetch = +refs/pull/*/head:refs/pull/origin/* > ;; > ;; to origin's in ".git/config". You could drop that assumption > ;; passing a more explicit refspec to the fetch call. > (unless dont-fetch > (magit-call-git "fetch" "origin")) > (magit-log (list (concat "master..refs/pull/origin/" pr))))) > --8<---------------cut here---------------end--------------->8--- This worked pretty well, I've modified it a bit to support a generic github repo location which is parsed from the subject, and origin/master instead of master:
Cheers, William -- https://jb55.com
_______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch