Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

yasnippetのスニペットをCodeReposで共有しよう!

yasnippetがすごい!!!!1112345!」で話題にしたyasnippetは、スニペットをあれこれ登録しまくってこそ、真にその力を発揮するわけですが、こういうのはやっぱりみんなで作ってこそだよねーというわけで、CodeReposで共有しましょう!!!とりあえず、まずはPerl用に、Test::Moreのスニペットを作って、CodeReposに上げておきました。

/config/yasnippet - CodeRepos::Share - Trac

スニペットの作り方に関しては、HowtoDefineSnippet - yasnippet - Google Codeを見れば、だいたいわかります。というか、配布物の中に例がたくさんあるので、ディレクトリ配置や、テンプレートを適当に真似て書けばオケです。

公式の配布物と合わせて、CodeRepos等での共有スニペットや、あるいは自分で書いたスニペットを利用する場合には、ちょっと設定を書く必要があります。yasnippetのサイトに書いてある通りの設定をすると、スニペットを置くディレクトリをひとつしか指定できないのでこんな感じで。

(require 'yasnippet)

;; yasnippetのsnippetを置いてあるディレクトリ
(setq yas/root-directory (expand-file-name "~/dev/yasnippet/snippets"))

;; 自分用スニペットディレクトリ(リストで複数指定可)
(defvar my-snippet-directories (list (expand-file-name "~/dev/yasnippet-snippets")))

;; yasnippet公式提供のものと、自分用カスタマイズスニペットをロード

;; 同名のスニペットが複数ある場合、あとから読みこんだ自分用のものが優先
;; される。また、スニペットを変更、追加した場合、このコマンドを実行する
;; ことで、変更・追加が反映される。
(defun yas/load-all-directories ()
  (interactive)
  (yas/reload-all)
  (mapc 'yas/load-directory-1 my-snippet-directories))

;; yasnippet初期化
(yas/initialize)
(yas/load-all-directories)