perltidy and Emacs
perltidy をもっと便利に使おう。主に Emacs から。
まずは O'Reilly の "PERL HACKS" HACK #6 から cperl-mode の設定。
(load-library "cperl-mode") (add-to-list 'auto-mode-alist '("\\.[Pp][LlMm][Cc]?$" . cperl-mode)) (while (let ((orig (rassoc 'perl-mode auto-mode-alist))) (if orig (setcdr orig 'cperl-mode)))) (while (let ((orig (rassoc 'perl-mode interpreter-mode-alist))) (if orig (setcdr orig 'cperl-mode)))) (dolist (interpreter '("perl" "perl5" "miniperl" "pugs")) (unless (assoc interpreter interpreter-mode-alist) (add-to-list 'interpreter-mode-alist (cons interpreter 'cperl-mode))))
HACK #7 選択したリージョン内を perltidy で整形。
(defmacro mark-active () "Xemacs/emacs compatibility macro" (if (boundp 'mark-active) 'mark-active '(mark))) (defun perltidy () "Run perltidy on the current region or buffer." (interactive) ;; Inexplicably, save-excursion doesn't work here. (let ((orig-point (point))) (unless (mark-active) (mark-defun)) (shell-command-on-region (point) (mark) "perltidy -pbp -q" nil t) (goto-char orig-point))) ;;(global-set-key "\C-ct" 'perltidy)
本では単に -q だけしてるけど、いまは完全 Perl Best Practice (PBP) 形式に合わせていて perltidy の設定ファイルを作っていないのでオプション追加。Cygwin でやる場合は PATH 通しておいて、perl.exe perltidy しないといけないかも。
さて、ここまで来ると、cperl-mode のインデント動作が perltidy のと食い違うのが我慢できなくなるので、なるべく cperl-mode が PBP 準拠の動きをしてくれるように設定する。
;; Use cperl mode instead of the default perl mode (defalias 'perl-mode 'cperl-mode) ;; turn autoindenting on (global-set-key "\r" 'newline-and-indent) ;; Use 4 space indents via cperl mode (custom-set-variables '(cperl-close-paren-offset -4) '(cperl-continued-statement-offset 4) '(cperl-indent-level 4) '(cperl-indent-parens-as-block t) '(cperl-tab-always-indent t) ) ;; Insert spaces instead of tabs (setq-default indent-tabs-mode nil) (setq-default show-training-whitespace t) ;; Set line width to 78 columns (setq fill-column 79) (setq auto-fill-mode t)
余談だけど、cperl-mode で M-x cperl-set-style RET [STYLE_NAME] してから C-xh M-x cperl-indent-region するといろいろスタイルが試せて面白い。詳細は M-x describe-function RET cperl-mode 参照。
- 作者: Damian Conway,クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/08/24
- メディア: 大型本
- 購入: 11人 クリック: 153回
- この商品を含むブログ (155件) を見る
Perl Hacks ―プロが教えるテクニック & ツール101選
- 作者: chromatic,Damian Conway,Curtis "Ovid" Poe,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/01/23
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 62回
- この商品を含むブログ (45件) を見る
あとは flymake で文法チェックとか
perl-completion.el で anything 補完とか
あたりを見ておくか。
と、こんなことばかりをやっていて肝心のスクリプトに手がついていない。さすがバッドノウハウの王者 Emacs だな。でもこういう作業こそ楽しかったりするのだけど。
[追記]
perltidy region は日本語が化けてしまうことが判明。(コメントに入れてた日本語がことごとく死んで泣きそうになった。)
どうしたものやら……。