Perltidy, CPerlMode
Perlを書く生活を少しだけ幸せにしてくれると噂のツールをちょっとだけ使いはじめてみた.
Perltidy
Perl用のプリティプリンタ. 多分,他人の書いたコードを弄るときやグループで仕事をするときに便利. そんなに汚いコードを書いているわけでもないので,あんまり効果は感じない.
こんな設定ファイル (${HOME}/.perltidyrc
) で.
-l=78 # Max line width is 78 cols (default: 80) -i=4 # Indent level is 4 cols (default: 4) -ci=4 # Continuation indent (applied when a long line is broken) is 4 cols (default: 2) -se # Errors to STDERR -vt=2 # Maximal vertical tightness (default: 0) -cti=0 # No extra indentation for closing brackets -pt=1 # Parenthesis tightness (default: 1, 1 means medium) -bt=1 # Brace tightness (default: 1, 1 means medium) -sbt=1 # Square brace tightness (default: 1, 1 means medium) -bbt=1 # Block brace tightness (default: 1, 1 means medium) -nsfs # No space before semicolons -nolq # Don't outdent (reverse indent) long quoted strings -wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" # Break before all operators --nohtml-entites # HTML option
emacs から簡単に呼び出せるように,
次のような perltidy-region
の定義を .emacs
に追加しておく.
(defun perltidy-region () "Run perltidy on the current region." (interactive) (save-excursion (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
ちなみに,-html
オプションを付けるとかっこいい HTML に整形して出力してくれる.
どちらかというと,こっちの機能のほうが重宝.
CPerlMode
emacs の組み込み perl-mode でもそれほど困っているわけではないが,
構文認識などの点でより賢い cperl-mode を導入してみた.
.emacs
に次のような設定を追加する.
(defalias 'perl-mode 'cperl-mode)
これで perl-mode の代わりに cperl-mode が起動するようになるはず. ("File mode specification error ..." とメッセージが出て失敗する場合は, ここ から 最新版を持ってきて使うとうまく行くかも)
デフォルトではいささか良くないフォントロックをどうにかする設定などを追加.
(add-hook 'cperl-mode-hook (lambda () (setq cperl-invalid-face (quote off)) ; スペースを _ で表示するのを止める (setq cperl-indent-level 4) (setq cperl-continued-statement-offset 4) (set-face-foreground 'cperl-array-face "khaki2") (set-face-underline-p 'cperl-array-face t) (set-face-background 'cperl-array-face nil) (set-face-bold-p 'cperl-array-face nil) (set-face-foreground 'cperl-hash-face "khaki2") (set-face-underline-p 'cperl-hash-face t) (set-face-background 'cperl-hash-face nil) (set-face-bold-p 'cperl-hash-face t) (set-face-italic-p 'cperl-hash-face nil) (set-face-foreground 'cperl-nonoverridable-face "white") ))
CPerlMode の便利機能として,emacsからperldocが引けるというものがある.
M-x cperl-perldoc
で OK.