puppet リファレンスを emacs でひく

最近年をとったせいか、細かいことはすぐに忘れてしまうようになりました。

そんなわけで、puppet の manifest を書いていてよく遭遇する、「このリソースで使えるパラメータって何だっけ」と思う瞬間をemacs にサポートさせることにしました。
puppetlabs から puppet-mode がリリースされているので、それに付け加えるような形にしています。

https://github.com/lurdan/puppet-syntax-emacs

ロードパスの通ったところに github から clone してください。ちょっと準備が必要なので、まずは WWW::Mechanize と Web::Scraper を使える perl を用意して、次のコマンドを実行してください。

$ mkdir ~/.emacs.d/tmp
$ ./puppet-doc-indexer.pl > ~/.emacs.d/tmp/puppet-doc-index.el

これによって、キーワードとその URL の対応データが作成されます。

次に .emacs ですが、私の設定は、ほぼ下記のような感じです。使うだけなら require してM-x puppet-doc でもいいのですが、w3m と popwin も組合せた方が便利かと思います。

(require 'puppet-mode)
(require 'puppet-flymake)
(require 'puppet-doc)

;; Ctrl + F1 でドキュメントを表示
(add-hook 'puppet-mode-hook
          '(lambda ()
             (define-key puppet-mode-map (kbd "<C-f1>") 'puppet-doc)
             ))

;; ドキュメントの表示は popwin-w3m で行う
(require 'popwin-w3m)
(defadvice puppet-doc (around puppet-doc-popwin-w3m activate)
  (let ((browse-url-browser-function
         'popwin:w3m-browse-url))
    ad-do-it))
(push '("^http://docs.puppetlabs.com/references/latest/.*$" :height 0.4)
      popwin:w3m-special-display-config)

手前味噌ですが、以前書いた flymake 用の設定とこれを組み合わせることで、かなり気持ちよくpuppet manifest を書いてくことができます。emacs で puppet 書いてる人が世の中にどれくらいいるというのか……という思いもありますが、該当する方は一度お試しください。

いつになるかはわかりませんが、puppet doc -rdoc コマンドで作成した in-house resource の参照もできるようにしたいと思います。便利に読めるようになれば、ドキュメントを書くモチベーションにつながる、はず……多分……きっと……。