Fix #4784: browse-at-remote-prefer-symbolic = nil

+ Default browse-at-remote-prefer-symbolic to nil because a permanent
  URL is generally more desirable for developers sharing links.
+ 'SPC g y' and 'SPC o o' now support the prefix arg, which will negate
  the default value of browse-at-remote-prefer-symbolic for that call.
This commit is contained in:
Henrik Lissner 2021-03-11 13:41:16 -05:00
parent 26319322b2
commit fa4f03de22
4 changed files with 33 additions and 4 deletions

View file

@ -299,7 +299,7 @@
;;; <leader> v --- versioning ;;; <leader> v --- versioning
(:prefix-map ("v" . "versioning") (:prefix-map ("v" . "versioning")
:desc "Git revert file" "R" #'vc-revert :desc "Git revert file" "R" #'vc-revert
:desc "Kill link to remote" "y" #'browse-at-remote-kill :desc "Kill link to remote" "y" #'+vc/browse-at-remote-kill
:desc "Kill link to homepage" "Y" #'+vc/browse-at-remote-kill-homepage :desc "Kill link to homepage" "Y" #'+vc/browse-at-remote-kill-homepage
(:when (featurep! :ui vc-gutter) (:when (featurep! :ui vc-gutter)
:desc "Git revert hunk" "r" #'git-gutter:revert-hunk :desc "Git revert hunk" "r" #'git-gutter:revert-hunk
@ -327,7 +327,7 @@
:desc "Find issue" "i" #'forge-visit-issue :desc "Find issue" "i" #'forge-visit-issue
:desc "Find pull request" "p" #'forge-visit-pullreq) :desc "Find pull request" "p" #'forge-visit-pullreq)
(:prefix ("o" . "open in browser") (:prefix ("o" . "open in browser")
:desc "Browse file or region" "." #'browse-at-remote :desc "Browse file or region" "." #'+vc/browse-at-remote
:desc "Browse homepage" "h" #'+vc/browse-at-remote-homepage :desc "Browse homepage" "h" #'+vc/browse-at-remote-homepage
:desc "Browse remote" "r" #'forge-browse-remote :desc "Browse remote" "r" #'forge-browse-remote
:desc "Browse commit" "c" #'forge-browse-commit :desc "Browse commit" "c" #'forge-browse-commit

View file

@ -411,7 +411,7 @@
;;; <leader> g --- git/version control ;;; <leader> g --- git/version control
(:prefix-map ("g" . "git") (:prefix-map ("g" . "git")
:desc "Revert file" "R" #'vc-revert :desc "Revert file" "R" #'vc-revert
:desc "Copy link to remote" "y" #'browse-at-remote-kill :desc "Copy link to remote" "y" #'+vc/browse-at-remote-kill
:desc "Copy link to homepage" "Y" #'+vc/browse-at-remote-kill-homepage :desc "Copy link to homepage" "Y" #'+vc/browse-at-remote-kill-homepage
(:when (featurep! :ui hydra) (:when (featurep! :ui hydra)
:desc "SMerge" "m" #'+vc/smerge-hydra/body) :desc "SMerge" "m" #'+vc/smerge-hydra/body)
@ -444,7 +444,7 @@
:desc "Find issue" "i" #'forge-visit-issue :desc "Find issue" "i" #'forge-visit-issue
:desc "Find pull request" "p" #'forge-visit-pullreq) :desc "Find pull request" "p" #'forge-visit-pullreq)
(:prefix ("o" . "open in browser") (:prefix ("o" . "open in browser")
:desc "Browse file or region" "o" #'browse-at-remote :desc "Browse file or region" "o" #'+vc/browse-at-remote
:desc "Browse homepage" "h" #'+vc/browse-at-remote-homepage :desc "Browse homepage" "h" #'+vc/browse-at-remote-homepage
:desc "Browse remote" "r" #'forge-browse-remote :desc "Browse remote" "r" #'forge-browse-remote
:desc "Browse commit" "c" #'forge-browse-commit :desc "Browse commit" "c" #'forge-browse-commit

View file

@ -5,6 +5,29 @@
(cdr (browse-at-remote--get-url-from-remote (car url)))) (cdr (browse-at-remote--get-url-from-remote (car url))))
(user-error "Can't find homepage for current project"))) (user-error "Can't find homepage for current project")))
(defvar browse-at-remote-prefer-symbolic)
;;;###autoload
(defun +vc/browse-at-remote (&optional arg)
"Open URL to current file (and line if selection is active) in browser.
If prefix ARG, negate the default value of `browse-at-remote-prefer-symbolic'."
(interactive "P")
(let ((browse-at-remote-prefer-symbolic
(if arg
(not browse-at-remote-prefer-symbolic)
browse-at-remote-prefer-symbolic)))
(browse-at-remote)))
;;;###autoload
(defun +vc/browse-at-remote-kill (&optional arg)
"Copy URL to current file (and line if selection is active) to clipboard.
If prefix ARG, negate the default value of `browse-at-remote-prefer-symbolic'."
(interactive "P")
(let ((browse-at-remote-prefer-symbolic
(if arg
(not browse-at-remote-prefer-symbolic)
browse-at-remote-prefer-symbolic)))
(browse-at-remote-kill)))
;;;###autoload ;;;###autoload
(defun +vc/browse-at-remote-homepage () (defun +vc/browse-at-remote-homepage ()
"Open homepage for current project in browser." "Open homepage for current project in browser."

View file

@ -100,7 +100,13 @@ otherwise in default state."
(after! browse-at-remote (after! browse-at-remote
;; It's more sensible that the user have more options. If they want line
;; numbers, users can request them by making a selection first. Otherwise
;; omitting them.
(setq browse-at-remote-add-line-number-if-no-region-selected nil) (setq browse-at-remote-add-line-number-if-no-region-selected nil)
;; Opt to produce permanent links with `browse-at-remote' by default,
;; using commit hashes rather than branch names.
(setq browse-at-remote-prefer-symbolic nil)
;; HACK `browse-at-remote' produces urls with `nil' in them, when the repo is ;; HACK `browse-at-remote' produces urls with `nil' in them, when the repo is
;; detached. This creates broken links. I think it is more sensible to ;; detached. This creates broken links. I think it is more sensible to