Emacs Lispで open-githubユーティリティを実装しました。

GitHubでの仕事を快適にするコマンドを紹介します - $shibayu36->blog;


をより便利に Emacsから使うというので書いてみました。

依存

  • helm
  • gh.el


外部ツールは使っていませんが、検索のしやすさ等のために
helm、github APIを叩くために gh.elを利用しています。gh.elは
依存が多いので、手動でインストールするのは面倒だと思います。
現状 el-get等を利用するのが良いでしょう。需要があれば MELPA等への登録も
ありかもしれません。

設定ファイル

(require 'open-github)

(global-set-key (kbd "C-c o f") 'open-github-from-file)
(global-set-key (kbd "C-c o c") 'open-github-from-commit)
(global-set-key (kbd "C-c o i") 'open-github-from-issues)

browse-url関数を使って URLを開いているので、元のように Mac
openコマンドに依存するということはありません。以下のように
関連する変数を設定すれば、任意のブラウザで開けるかと思います。

;; Linuxで Chromeを使う場合
(setq browse-url-browser-function 'browse-url-generic
      browse-url-generic-program "/opt/google/chrome/google-chrome")

各種コマンド

元のものに忠実に作りました。

open-github-from-commit


コミットIDと一行ログが表示されるので、その中から望みのものを選択すると
そのコミットのページにジャンプします。'HEAD^'等で指定できるよう
直接指定するための helm-sourceも設定されています。

open-github-from-file


リポジトリ内のファイル一覧が表示(git ls-filesを利用)されるので、
目的のファイルを選択します。アクションとして、行ハイライト、範囲ハイライトを
行うことができます。あらかじめリージョンを選択して、このコマンドを実行
すると対象を現在のファイルとし、そのリージョンをハイライトさせたページに
飛びます。

open-github-from-issues


対象ホストが githubの場合は github APIを利用し、issueの内容を取得
して表示します(上記のように IDとタイトルが表示される)。対象となる
issueを選択すると該当の issueページに飛びます。ホストが github
ない場合は issue番号を直打ちとなります。


作りかけなのでもう少し機能をつけていこうかと思います。