update packages
This commit is contained in:
136
lisp/orgit.el
136
lisp/orgit.el
@@ -1,14 +1,15 @@
|
||||
;;; orgit.el --- support for Org links to Magit buffers -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2014-2020 The Magit Project Contributors
|
||||
;; Copyright (C) 2014-2021 The Magit Project Contributors
|
||||
|
||||
;; Author: Jonas Bernoulli <jonas@bernoul.li>
|
||||
;; Maintainer: Jonas Bernoulli <jonas@bernoul.li>
|
||||
|
||||
;; Package-Requires: ((emacs "25.1") (magit "2.90.1") (org "9.3"))
|
||||
;; Package-Version: 20200714.1943
|
||||
;; Package-Commit: ac9b1a42863a864fde9d225890ef5464bffdc646
|
||||
;; Package-Requires: ((emacs "25.1") (magit "3.0") (org "9.4"))
|
||||
;; Package-Version: 20210620.1943
|
||||
;; Package-Commit: f956d802f19ea495efa95af6c673588afeb3adc5
|
||||
;; Homepage: https://github.com/magit/orgit
|
||||
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
;; This library is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
@@ -220,11 +221,30 @@ then store a link to the commit itself."
|
||||
:group 'orgit
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom orgit-rev-description-format "%%N (magit-rev %%R)"
|
||||
"Format used for `orgit-rev' links.
|
||||
|
||||
The format is used in two passes. The first pass consumes all
|
||||
specs of the form `%C'; to preserve a spec for the second pass
|
||||
it has to be quoted like `%%C'.
|
||||
|
||||
The first pass accepts the \"pretty formats\" documented in
|
||||
the git-show(1) manpage. The second pass accepts these specs:
|
||||
|
||||
`%%N' The name or id of the repository.
|
||||
`%%R' If `orgit-store-reference' is non-nil, then the tag or
|
||||
branch that points at the commit, if any. Otherwise the
|
||||
abbreviated commit hash. (A prefix argument reverses the
|
||||
meaning of `orgit-store-reference'.)"
|
||||
:package-version '(orgit . "1.8.0")
|
||||
:group 'orgit
|
||||
:type 'string)
|
||||
|
||||
;;; Command
|
||||
|
||||
;;;###autoload
|
||||
(eval-after-load 'magit
|
||||
'(define-key magit-mode-map [remap org-store-link] 'orgit-store-link))
|
||||
(with-eval-after-load 'magit
|
||||
(define-key magit-mode-map [remap org-store-link] 'orgit-store-link))
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-store-link (_arg)
|
||||
@@ -234,7 +254,7 @@ then store a link to the commit itself."
|
||||
(save-excursion
|
||||
(dolist (section sections)
|
||||
(goto-char (oref section start))
|
||||
(set-mark (point))
|
||||
(set-mark (point))
|
||||
(activate-mark)
|
||||
(call-interactively 'org-store-link))
|
||||
(deactivate-mark))
|
||||
@@ -243,12 +263,12 @@ then store a link to the commit itself."
|
||||
;;; Status
|
||||
|
||||
;;;###autoload
|
||||
(eval-after-load 'org
|
||||
'(orgit-link-set-parameters "orgit"
|
||||
:store 'orgit-status-store
|
||||
:follow 'orgit-status-open
|
||||
:export 'orgit-status-export
|
||||
:complete 'orgit-status-complete-link))
|
||||
(with-eval-after-load 'org
|
||||
(orgit-link-set-parameters "orgit"
|
||||
:store 'orgit-status-store
|
||||
:follow 'orgit-status-open
|
||||
:export 'orgit-status-export
|
||||
:complete 'orgit-status-complete-link))
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-status-store ()
|
||||
@@ -273,17 +293,18 @@ In that case `orgit-rev-store' stores one or more links instead."
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-status-complete-link (&optional arg)
|
||||
(concat "orgit:" (abbreviate-file-name (magit-read-repository arg))))
|
||||
(let ((default-directory (magit-read-repository arg)))
|
||||
(concat "orgit:" (orgit--current-repository))))
|
||||
|
||||
;;; Log
|
||||
|
||||
;;;###autoload
|
||||
(eval-after-load 'org
|
||||
'(orgit-link-set-parameters "orgit-log"
|
||||
:store 'orgit-log-store
|
||||
:follow 'orgit-log-open
|
||||
:export 'orgit-log-export
|
||||
:complete 'orgit-log-complete-link))
|
||||
(with-eval-after-load 'org
|
||||
(orgit-link-set-parameters "orgit-log"
|
||||
:store 'orgit-log-store
|
||||
:follow 'orgit-log-open
|
||||
:export 'orgit-log-export
|
||||
:complete 'orgit-log-complete-link))
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-log-store ()
|
||||
@@ -336,18 +357,18 @@ In that case `orgit-rev-store' stores one or more links instead."
|
||||
(defun orgit-log-complete-link (&optional arg)
|
||||
(let ((default-directory (magit-read-repository arg)))
|
||||
(format "orgit-log:%s::%s"
|
||||
(abbreviate-file-name default-directory)
|
||||
(orgit--current-repository)
|
||||
(magit-read-branch-or-commit "Revision"))))
|
||||
|
||||
;;; Revision
|
||||
|
||||
;;;###autoload
|
||||
(eval-after-load 'org
|
||||
'(orgit-link-set-parameters "orgit-rev"
|
||||
:store 'orgit-rev-store
|
||||
:follow 'orgit-rev-open
|
||||
:export 'orgit-rev-export
|
||||
:complete 'orgit-rev-complete-link))
|
||||
(with-eval-after-load 'org
|
||||
(orgit-link-set-parameters "orgit-rev"
|
||||
:store 'orgit-rev-store
|
||||
:follow 'orgit-rev-open
|
||||
:export 'orgit-rev-export
|
||||
:complete 'orgit-rev-complete-link))
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-rev-store ()
|
||||
@@ -379,8 +400,10 @@ store links to the Magit-Revision mode buffers for these commits."
|
||||
:type "orgit-rev"
|
||||
:link (format "orgit-rev:%s::%s" repo
|
||||
(or ref (magit-rev-parse rev)))
|
||||
:description (format "%s (magit-rev %s)" repo
|
||||
(or ref (magit-rev-abbrev rev))))))
|
||||
:description (format-spec
|
||||
(magit-rev-format orgit-rev-description-format rev)
|
||||
`((?N . ,repo)
|
||||
(?R . ,(or ref (magit-rev-abbrev rev))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun orgit-rev-open (path)
|
||||
@@ -397,34 +420,43 @@ store links to the Magit-Revision mode buffers for these commits."
|
||||
(defun orgit-rev-complete-link (&optional arg)
|
||||
(let ((default-directory (magit-read-repository arg)))
|
||||
(format "orgit-rev:%s::%s"
|
||||
(abbreviate-file-name default-directory)
|
||||
(orgit--current-repository)
|
||||
(magit-read-branch-or-commit "Revision"))))
|
||||
|
||||
;;; Export
|
||||
|
||||
(defun orgit-export (path desc format gitvar idx)
|
||||
(pcase-let*
|
||||
((`(,dir ,rev) (split-string path "::"))
|
||||
(default-directory (file-name-as-directory (expand-file-name dir)))
|
||||
(remotes (magit-git-lines "remote"))
|
||||
(remote (magit-get "orgit.remote"))
|
||||
(remote (cond ((= (length remotes) 1) (car remotes))
|
||||
((member remote remotes) remote)
|
||||
((member orgit-remote remotes) orgit-remote))))
|
||||
(if remote
|
||||
(if-let ((link (or (when-let ((url (magit-get "orgit" gitvar)))
|
||||
(format-spec url `((?r . ,rev))))
|
||||
(when-let ((url (magit-get "remote" remote "url"))
|
||||
(format (cl-find-if
|
||||
(lambda (elt)
|
||||
(string-match (car elt) url))
|
||||
orgit-export-alist)))
|
||||
(format-spec (nth idx format)
|
||||
`((?n . ,(match-string 1 url))
|
||||
(?r . ,rev)))))))
|
||||
(orgit--format-export link desc format)
|
||||
(error "Cannot determine public url for %s" path))
|
||||
(error "Cannot determine public remote for %s" default-directory))))
|
||||
(pcase-let* ((`(,dir ,rev) (split-string path "::"))
|
||||
(dir (orgit--repository-directory dir)))
|
||||
(if (file-exists-p dir)
|
||||
(let* ((default-directory dir)
|
||||
(remotes (magit-git-lines "remote"))
|
||||
(remote (magit-get "orgit.remote"))
|
||||
(remote (cond ((= (length remotes) 1) (car remotes))
|
||||
((member remote remotes) remote)
|
||||
((member orgit-remote remotes) orgit-remote))))
|
||||
(if remote
|
||||
(if-let ((link
|
||||
(or (when-let ((url (magit-get "orgit" gitvar)))
|
||||
(format-spec url `((?r . ,rev))))
|
||||
(when-let ((url (magit-get "remote" remote "url"))
|
||||
(format (cl-find-if
|
||||
(lambda (elt)
|
||||
(string-match (car elt) url))
|
||||
orgit-export-alist)))
|
||||
(format-spec (nth idx format)
|
||||
`((?n . ,(match-string 1 url))
|
||||
(?r . ,rev)))))))
|
||||
(orgit--format-export link desc format)
|
||||
(signal 'org-link-broken
|
||||
(list (format "Cannot determine public url for %s"
|
||||
path))))
|
||||
(signal 'org-link-broken
|
||||
(list (format "Cannot determine public remote for %s"
|
||||
default-directory)))))
|
||||
(signal 'org-link-broken
|
||||
(list (format "Cannot determine public url for %s %s"
|
||||
path "(which itself does not exist)"))))))
|
||||
|
||||
(defun orgit--format-export (link desc format)
|
||||
(pcase format
|
||||
|
||||
Reference in New Issue
Block a user