Gist on Emacs

みなさん、Emacsで Gist 使ってますか?

私も気軽に使っているのですが GitHub Gist の Webページを開いて直接コード書き込んだりコピペするというのは何げに中途半端ですね。

ローカルに cloneして git管理するという Tipsも見かけましたが、そもそもバージョン管理がしたいのであればGistにこだわらず、素直にリポジトリで管理すれば済むことです。

何がしたいのか整理してみる

  • Emacsで開いている Buffer(or region)をそのまま即 gistしたい。
  • gistに成功したら、結果をブラウザで開いてほしい。
  • 自分の GitHub Gist ページを一発で開きたい。

試行錯誤しましたが、yagist.el を package installすれば簡単だと気づきました。 yagist.el には、いろいろ機能があるのですが、私の場合は必要な関数だけ利用しています。

ターミナルで gist コマンドが扱えること

このTipsは、ターミナルからコマンドラインで gist が扱えるように設定済であることが前提です。

ターミナルで gist -help を打つといろいろオプションパラメターがわかります。

Usage: gist [-o|-c|-e] [-p] [-s] [-R] [-d DESC] [-u URL]
                          [--skip-empty] [-P] [-f NAME|-t EXT]* FILE*
       gist --login
       gist [-l|-r]

        --login                      Authenticate gist on this computer.
    -f, --filename [NAME.EXTENSION]  Sets the filename and syntax type.
    -t, --type [EXTENSION]           Sets the file extension and syntax type.
    -p, --private                    Makes your gist private.
        --no-private
    -d, --description DESCRIPTION    Adds a description to your gist.
    -s, --shorten                    Shorten the gist URL using git.io.
    -u, --update [ URL | ID ]        Update an existing gist.
    -c, --copy                       Copy the resulting URL to the clipboard
    -e, --embed                      Copy the embed code for the gist to the clipboard
    -o, --open                       Open the resulting URL in a browser
        --no-open
        --skip-empty                 Skip gisting empty files
    -P, --paste                      Paste from the clipboard to gist
    -R, --raw                        Display raw URL of the new gist
    -l, --list [USER]                List all gists for user
    -r, --read ID [FILENAME]         Read a gist and print out the contents
        --delete [ URL | ID ]        Delete a gist
    -h, --help                       Show this message.
    -v, --version                    Print the version.

Emacsの設定

1. yagist-region-or-buffer

名前の通り Emacsで開いている Buffer(or region)を POSTしてくれます。

2. open-gist-web-page

プラウザで自分のGistページを開くための設定です。 に自分のユーザー名をいれます。

3. open-lepton

クライアントアプリ Leptonを開くための設定です。

4. init.el の設定

(leaf yagist
  :ensure t
  :bind (("C-c y" . yagist-region-or-buffer)
         ("C-c g" . open-gist-web-page)
         ("C-c l" . open-lepton))
  :config
  ;; automatically use `browse-url' to view gists after they'reposted.
  (setq yagist-view-gist t)

  (defun open-gist-web-page ()
    "Open GitHub Gist page with chrome."
    (interactive)
    (browse-url "https://gist.github.com/<gist-user>"))

  (defun open-lepton ()
	"Open keepassxc withe auto passwd input."
	(interactive)
	(compile "lepton")
	(delete-other-windows)))

クライアントアプリの紹介

ローカルでビジュアルにGistを管理したいという方には、マルチプラートホームで利用可能な Lepton というクライアントアプリがお薦めです。

WEBページよりは見やすいですし、編集、削除も可能です。New fileをコピペして投稿することもできます。

ただ新規POSTは、上述した yagist-buffer-or-region の方が遥かに便利です。