yasnippetのphp-modeでクラス名を自動的に挿入するようにした
class ${1:`(replace-regexp-in-string "^_+" "" (mapconcat #'identity (split-string ((lambda (a) (substring a (let ((case-fold-search nil)) (string-match "\\\\(/[A-Z][a-zA-Z0-9]+\\\\)+$" a ) )) ) (file-name-sans-extension (buffer-file-name)) ) "/") "_"))`} { public function __construct() { $0 } }http://github.com/nishimura/minimal-yasnippet-php-mode/blob/master/php-mode/class
こんな感じで。
例えば /tmp/Framework/components/Data/FileIterator.php を開いているときのクラス名は Data_FileIterator になるようにしている。
で、このままでは大文字がないファイル名だとエラーになる。
エラー制御ってどうするのがいいんだろう。
# 動かしながらあれこれいじってたので、今見てみるとlambdaがすごく無駄な気がする…整形は後でしよう。