git cloneしているソースコードからGitHubやGH:EのWebページを開く

前にも書いたとおり、マネージドクラウドチームで開発に関わっているのですが、今までと違って

  • まだ全てを追いきれていない
  • ある程度の規模のアーキテクチャなので複数のリポジトリに分かれている
  • 多くのOSSを活用している(もしくはOSSを自分たちで作って活用している)
  • GitHubだけでなくGH:Eも使っている
  • 何から何までGH:Eの上に書く文化
  • Slack活用がすごい

という状況です。

そうすると

  • 実装について具体的なコードを指して質問したい
  • リポジトリをまたいだ実装の議論がある
  • 日々の検討内容や進行ログをコードを指して記録したい

ということが多くあります。

そのたびに、手元のEmacsではそのソースコードを開いているのに、GH:EやSlackで質問や会話をするためにGitHubやGH:Eのページを開くのがかなり面倒でした。

やりたいことはEmacs上のカーソルの位置から該当ソースコードのページを開くことです(行のハッシュ付きで)。

「確かそんな.elがあったような気がする」と思ったのですが、せっかくなので自分で久しぶりにEmacs Lispを書いていました

が、だいたいできたあとで調べたら、やはりもっと良さそうなのがあったのでそっちを使うことになりました。

github.com

自分は以下のような設定をしています。

(require 'git-link)

(defun git-link-gocode (hostname dirname filename branch commit start end)
  (format "https://%s/%s/+/%s/%s"
    hostname
    dirname
    (or branch commit)
    (concat filename
            (when start
              (format "#%s" start)))))

(with-eval-after-load 'git-link
  (custom-set-variables '(git-link-open-in-browser t))
  (add-to-list 'git-link-remote-alist
               '("ghe\\.example\\.com" git-link-github)) ;; GH:Eのホストも対象に
  (add-to-list 'git-link-remote-alist
               '("go\\.googlesource\\.com" git-link-gocode))) ;; go get で取得したgoのコードも表示できるように

これでカーソルやリージョンを見てブラウザでソースコードのURLを開いてくれます。

便利。