I want to make something like this: Whenever I I use org-insert-link and it turns out to be a URI that starts with "https://github.com" I would like it to be processed differently than any other link, one example - if it is a PR or a Github Issue, I'd like it to fetch summary(title) of it and create a link that looks like this: [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]] Do we have any "built-in" mechanism for doing something like this? Can someone suggest how I can make it. Thank you!
Ag Ibragimov writes:
> Whenever I I use org-insert-link and it turns out to be a URI that
> starts with "https://github.com" I would like it to be processed
> differently than any other link, one example - if it is a PR or a
> Github Issue, I'd like it to fetch summary(title) of it and create a
> link that looks like this:
>
> [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]]
>
> Do we have any "built-in" mechanism for doing something like this? Can
> someone suggest how I can make it. Thank you!
You can set org-link-make-description-function to a function that
detects links of interest and generates a custom description.
Oh cool. This is exactly what I needed: I was able to build this: #+begin_src emacs-lisp (defun get-gh-item-title (uri &optional include-number?) "Based on given github URI for (pull request or an issue), returns its title" (when (string-match "\\(github.com\\).*\\(issues\\|pull\\)" uri) ; either PR or issue (pcase-let* ((`(_ _ ,owner ,repo ,type ,number) (remove "" (split-string uri "/"))) (gh-resource (format "/repos/%s/%s/%s/%s" owner repo (if (string= type "pull") "pulls" type) number)) (resp (ghub-get gh-resource nil :auth 'forge))) (when resp (format "%s%s" (alist-get 'title resp) (when include-number? (format " #%s" number))))))) (defun org-link-make-description-function* (link desc) (cond ((string-match "\\(github.com\\).*\\(issues\\|pull\\)" link) (get-gh-item-title link :with-number)) (t desc))) (setq org-link-make-description-function 'org-link-make-description-function*) #+end_src https://gist.github.com/agzam/b2f2d441acb96e1d693a2c81e9c4518f On Sun 28 Jun 2020 at 14:02, Kyle Meyer <kyle@kyleam.com> wrote: > Ag Ibragimov writes: > >> Whenever I I use org-insert-link and it turns out to be a URI that >> starts with "https://github.com" I would like it to be processed >> differently than any other link, one example - if it is a PR or a >> Github Issue, I'd like it to fetch summary(title) of it and create a >> link that looks like this: >> >> [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]] >> >> Do we have any "built-in" mechanism for doing something like this? Can >> someone suggest how I can make it. Thank you! > > You can set org-link-make-description-function to a function that > detects links of interest and generates a custom description.
Ag Ibragimov <agzam.ibragimov@gmail.com> writes:
> I want to make something like this:
>
> Whenever I I use org-insert-link and it turns out to be a URI that starts with "https://github.com" I would like it to be processed differently than any other link, one example - if it is a PR or a Github Issue, I'd like it to fetch summary(title) of it and create a link that looks like this:
>
> [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]]
>
> Do we have any "built-in" mechanism for doing something like this? Can someone suggest how I can make it. Thank you!
I suspect you could do something with browse-url. The issue I see here
is why you would want the contents fetched whenever you insert a link or
where this summary(title). I guess I don't really understand what
exactly is your use case here - everything I can think of seems more
complicated and requiring more maintenance than just typing the
appropriate description when you insert the link.
--
Tim Cross
> seems more > complicated and requiring more maintenance than just typing the > appropriate description when you insert the link. Actually, it is not. See my reply to Kyle. You still can modify the link description, it just gives you an option to make it as the title of the GitHub issue or PR. https://gist.github.com/agzam/b2f2d441acb96e1d693a2c81e9c4518f
Ag Ibragimov <agzam.ibragimov@gmail.com> writes: > Oh cool. This is exactly what I needed: > > I was able to build this: > > #+begin_src emacs-lisp > (defun get-gh-item-title (uri &optional include-number?) > "Based on given github URI for (pull request or an issue), > returns its title" > (when (string-match "\\(github.com\\).*\\(issues\\|pull\\)" uri) ; either PR or issue > (pcase-let* ((`(_ _ ,owner ,repo ,type ,number) (remove "" (split-string uri "/"))) > (gh-resource (format "/repos/%s/%s/%s/%s" > owner > repo > (if (string= type "pull") "pulls" type) > number)) > (resp (ghub-get gh-resource nil :auth 'forge))) > (when resp > (format "%s%s" (alist-get 'title resp) > (when include-number? (format " #%s" number))))))) > > (defun org-link-make-description-function* (link desc) > (cond ((string-match "\\(github.com\\).*\\(issues\\|pull\\)" link) > (get-gh-item-title link :with-number)) > (t desc))) > > (setq org-link-make-description-function 'org-link-make-description-function*) > #+end_src > Thanks for this! > https://gist.github.com/agzam/b2f2d441acb96e1d693a2c81e9c4518f > On Sun 28 Jun 2020 at 14:02, Kyle Meyer <kyle@kyleam.com> wrote: > >> Ag Ibragimov writes: >> >>> Whenever I I use org-insert-link and it turns out to be a URI that >>> starts with "https://github.com" I would like it to be processed >>> differently than any other link, one example - if it is a PR or a >>> Github Issue, I'd like it to fetch summary(title) of it and create a >>> link that looks like this: >>> >>> [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]] >>> >>> Do we have any "built-in" mechanism for doing something like this? Can >>> someone suggest how I can make it. Thank you! >> >> You can set org-link-make-description-function to a function that >> detects links of interest and generates a custom description. > > -- Bonface M. K. (https://www.bonfacemunyoki.com) One Divine Emacs To Rule Them All GPG key = D4F09EB110177E03C28E2FE1F5BBAE1E0392253F
[-- Attachment #1: Type: text/plain, Size: 810 bytes --] I'm not sure if this is of interest to you, but I like org-cliplink to insert links with their titles. Maybe you can look at their source to build your own if it doesn't work for you? On Sun, 2020-06-28 at 13:43 -0700, Ag Ibragimov wrote: > I want to make something like this: > > Whenever I I use org-insert-link and it turns out to be a URI that starts with "https://github.com > " I would like it to be processed differently than any other link, one example - if it is a PR or > a Github Issue, I'd like it to fetch summary(title) of it and create a link that looks like this: > > [[https://github.com/user/repo/issues/3899][This issue needs to be fixed #3899]] > > Do we have any "built-in" mechanism for doing something like this? Can someone suggest how I can > make it. Thank you! > [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 833 bytes --]