This package is easiest way to open particular link on github/gitlab/bitbucket/stash/git.savannah.gnu.org/sourcehut from Emacs. It supports various kind of emacs buffer, like:
- file buffer
- dired buffer
- magit-mode buffers representing code
- vc-annotate mode (use get there by pressing
C-x v g
by default)
Add browse-at-remote
to your Cask file::
(depends-on "browse-at-remote")
Simply add this package to your emacs path, and add to .emacs
,:
(require 'browse-at-remote)
Active keybindings for browse-at-remote
function::
(global-set-key (kbd "C-c g g") 'browse-at-remote)
Run guix install emacs-browse-at-remote
then load browse-at-remote
from your Emacs init.
By default browse-at-remote knows how to work with popular remote types (github/gitlab..). Knowledge how to work with certain remote-type comes from mapping browse-at-remote-remote-type-domains. It defines that github.com should be treat in github manner, bitbucket.org in bitbucket manner and so on. In your development you may have some specific git-url, and browse-at-remote will before confuse which remote-type map to your domain.
Two solution available:
In that case you can to customize that. (M-x customize ... browse-at-remote-remote-type-domains). For now our package supports next remote-types:
- bitbucket.com
- gitlab.com
- github.com
- Stash
- git.savannah.gnu.org
- gist.github.com
- Phabricator
- git.sr.ht
- pagure.io
- vs-ssh.visualstudio.com
Set specific remote-type directly in git repo. For example, if your repository is hosted on GitHub enterprise, you should add following setting to its config:
git config --add browseAtRemote.type "github"
or for private Stash repository use command:
git config --add browseAtRemote.type "stash"
By default browse-at-remote add line number when region is not selected in file attached buffer. If you don't like that and what to see no line information URL, it's possible to disable that by adding::
(setq browse-at-remote-add-line-number-if-no-region-selected nil)
Or setting via UI with M-x customize.
There are cases where you might need to resolve a remote host to a particular value. For example, one common strategy to manage multiple SSH keys is to add an entry to ~/.ssh.config:
Host mycompany.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_mycompany
For such cases, you can use the :actual-host property:
(add-to-list 'browse-at-remote-remote-type-regexps `(:host ,(rx bol "mycompany.github.com" eol) :type "github" :actual-host "github.com"))
You can also directly configure the repository:
git config --add browseAtRemote.actualHost "github.com"
You can add your own remote if you need - PRs are welcome! Please see good examples here: gnu-savannah-remote, or stash-remote.
Call function from emacs buffer:
M-x browse-at-remote
or:
M-x bar-browse
or just call
C-c g g
if you've already added binding before. You can use this command in dired buffers too.Target page at github/bitbucket will be opened using your default browser:
or same here is folder view at bitbucket:
Opening github commit's page at magit-commit-mode, magit-log-mode:
Open last commit which added target line:
- Press C-x v g to call standard vc-annotate
- Call browse-at-remote on target line
- @rmuslimov
- @env0der
- @ben
- @duff
- @Wilfred
- @yauhen-l
- @ieure
- @wigust
- @CyberShadow
- @kuba-orlik
- @jwhitbeck
- @microamp
- @FrostyX
- @legendary-mich
- `@ilmotta`_
Added new feature allowing customize how hosts are resolved by @ilmotta.
New remote type added Pagure by @FrostyX. New configuration option browse-at-remote-add-line-number-if-no-region-selected allowing add or not line number when target page open and region initially is not selected.
New remote type added Sourcehut by @microamp.
New remote type added Phabricator by @kuba-orlik.
New remote type added gist.github.com by @CyberShadow.
New remote type added git.savannah.gnu.org by @wigust.
Minor fixes, added Stash (bitbucket support) by @yauhen-l.
Drop clojure-style function namings. Add abbrev methods like bar-browse and bar-to-clipoboard (where bar is browse-at-remote abbrev.)
Major refactorings by @ieure. Main function renamed to browse-at-remote/browse. (renamed in 0.8.0 to bar-browse)
Added support of Gitlab by @env0der. Thanks!
Added support of Github Enterprice. Special thanks for @env0der for this feature.
Function browse-at-remote/to-clipboard were added (renamed in 0.8.0 to bar-to-clibpoard)
- Add mercurial support