pit.el

  • ~/.emacs は全て GitHub の公開リポジトリに入れてある
  • outputz.el の設定ファイルを書いた
  • outputz-key*1を直に書いてあるから git add したくない
  • そうだ Pit 使おう
  • Pit 使うための elisp 見付からない
  • 書くか

というわけで pit.el 書きました。 => Gist

load-path の通っている所へ置いて require してください。

(require 'pit)

使用例一覧

(pit/get 'github.com)
  • 設定されていれば alist が、されていなければ nil が返ります。
(pit/get 'github.com '(require ((user . "Your github user name")
                                (token . "Your github token"))))
  • 設定されていない値が一つでもあれば minibuffer で入力を促します。
  • 既に設定されている値は minibuffer の initial-contents として挿入されます。
  • 入力された値で Pit のファイルを更新します。
  • 更新後の alist を返します。
(pit/set 'github.com)
  • 既に設定されている値が一つでもあれば minibuffer で入力を促します。
  • 既に設定されている値は minibuffer の initial-contents として挿入されます。
  • 入力された値で Pit のファイルを更新します。
  • 更新後の alist を返します。
(pit/set 'github.com '(config ((user . "Your github user name")
                               (token . "Your github token"))))
  • 渡された alist を用いて minibuffer で入力を促します。
  • 既に設定されている値は一切使われません。
  • 入力された値で Pit のファイルを更新します。
  • 更新後の alist を返します。
(pit/set 'github.com '(data ((user . "Your github user name")
                             (token . "Your github token"))))
  • 渡された alist の値で Pit のファイルを更新します。
  • 更新後の alist を返します。

いずれも alist が返ってきますので、assoc と cdr で value が取り出せます。

たとえば outputz-key でしたら...

(setq outputz-key
      (cdr (assoc 'key
                  (pit/get 'outputz.com
                           '(require ((key . "Your Outputz key")))))))

かなり冗長ですね。あまり嬉しくない気がしてきました :(

注意事項

Pit のファイル*2を読み書きします。
  • 念の為バックアップしておく事を強くお薦めします。
pit.rb の key は String ですが、pit.el は symbol です
  • なんとなく alist の key は symbol だという気がしました*3
  • string だと両端囲みが必要ですが、 symbol は左側にシングルクォートを置くだけで済みます :)*4
  • intern を使えば、どちらも受け付けられるかも……今後の課題。
YAML を解釈できているわけではありません。

もの凄く汚いやり方*5で読み込んでいます。

  • 良い子は真似しないでください。
  • エロい人は YAML を解釈して sexp にする elisp を書いてください。
    • そしてそれをぼくにも使わせてください >_

*1:復活の呪文

*2:~/.pit/default.yaml

*3:趣味です

*4:趣味です

*5:replace-regexp を重ねて eval.