yasnippet のインストール @ FreeBSD

Eclipse を使おうとしていたのですが、
DocumentRoot より上の階層のファイル編集するときに面倒なのと
(キレイなディレクトリ構造を作れば問題ないけど)
エラーのポップアップが出まくるのが、直りそうもないのと
自宅で使う分には問題なかったけど、職場で使う分には
古いマシンだと激重なので、あきらめます。


そして、Emacs (22.3) に戻ることにしたんですが、
Tab 補完が好きなのと、設定をなるべくしないですむという条件で
いろいろ探していると、yasnippet というのが見つかりました。

とりあえず、インストール手順をメモります

  • emacs をインストール

# cd /usr/posrt/editor/emacs
# make install WITHOUT_X11=yes

  • yasnippet を ここからダウンロードして

http://code.google.com/p/yasnippet/

# mkdir ~/.emacs.d
# tar jxf yasnippet-0.5.6.tar.bz2
# cd yasnippet-0.5.6
# cp -R snippets ~/.emacs.d/
# cp yasnippet.el /usr/local/share/emacs/site-lisp

http://apgwoz.com/hacks/

# tar zxf yasnippet-php-mode.tar.gz
# cd yasnippet-php-mode
# cp -R php-mode ~/.emacs.d/snippets/text-mode/

  • なぜだか、これだけじゃ php-mode が動かないので php-mode をインストール

# /usr/ports/lang/php-mode.el/
# make install

  • 設定ファイルはこんなカンジ
(show-paren-mode t)
(set-language-environment 'Japanese)
(set-terminal-coding-system 'utf-8)
(setq file-name-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(setq coding-system-for-read 'mule-utf-8-unix)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8-unix)

(setq make-backup-files nil)
(setq auto-save-default nil)



(require 'yasnippet)
(yas/load-directory "~/.emacs.d/snippets")

(setq yas/use-menu nil)

(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'javascript-mode))
(autoload 'javascript-mode "javascript" nil t)
(setq js-indent-level 4)



(require 'dropdown-list)
(setq yas/text-popup-function
      #'yas/dropdown-list-popup-for-template)

(setq yas/buffer-local-condition
      '(or (not (or (string= "font-lock-comment-face"
                             (get-char-property (point) 'face))
                    (string= "font-lock-string-face"
                             (get-char-property (point) 'face))))
           '(require-snippet-condition . force-in-comment)))


(add-to-list 'yas/extra-mode-hooks
             'php-mode-hook)

(setq-default tab-width 4)

(setq auto-mode-alist
      (cons (cons "\\.\\(phtml\\|ctp\\|thtml\\|inc\\|php[s34]?\\)" 'php-mode) auto-mode-alist))
      (autoload 'php-mode "php-mode" "PHP mode" t)

(yas/initialize)


(global-set-key "\t" 'dabbrev-expand)
  • コード補完の際のインデントが 空白スペース 3 になっているので直します
# cd ~/.emacs.d/snippets/text-mode/php-mode/
# perl -p -i -e 's/   /    /g' *
  • こちらのブログがすごく参考になりました

http://d.hatena.ne.jp/botchy/20080502/1209717204

  • html_yas のモードのときのコード補完がコメントが出てくる
  • html_yas のモードのときのコード補完の改行がおかしい
    • 対応方法がわからなかったので、補完部分を記述しているファイルを修正します
# cd ~/.emacs.d/snippets/text-mode/html-mode/
# perl -i -pe 's/^\s*#.*\n$|^\s*$//' *
# perl -i -pe  's/\r\n/\n/' *

これで、html を書くときに
form と打ち込んで、tab キーでごっそり補完、などが可能になりました。