2012年になりました.今年もよろしくお願いいたします.4月からうえの子が幼稚園に入り,ほどなく第四子*1が家族の一員になる予定です.仕事面では,研究会の世話役,国際会議(JCKBSE 2012)のプログラム委員があります.お金も時間もとられることになりますが,教育も研究もブログも,レベルを落とさずやっていきたいと思います.
【Emacs】 リージョン内の行数と文字数をモードラインに表示する: 日々此精進と,かつて書いたcount-lines-regionに語数カウント機能をつけるを組み合わせて,リージョン選択をしているときに限り,「[?L?w?c]」のフォーマットで,行数・単語数・文字数をモードラインに表示させることにしました.
(defun count-lines-and-chars () (if mark-active (format "[%dL%dw%dc]" (count-lines (region-beginning) (region-end)) (how-many "[^ ]+" (region-beginning) (region-end)) ; (how-many "\\w+" (region-beginning) (region-end)) (- (region-end) (region-beginning))) "")) (add-to-list 'default-mode-line-format '(:eval (count-lines-and-chars)))
注意することがあります.「[^」の直後に,半角空白と,Tabのコードが入っています.TabはC-q C-iで入力できる文字で,これによって,領域内で/[^ \t\n]+/とマッチする文字列の数を単語数とします.もしうまく動かなければ,コメントなしの「(how-many」から始まる2行の先頭にセミコロンを入れ,直後の行のセミコロンを取り除いてください*2.
NTEmacsで動作を確認しました.上記コードを選択したときの表示は,次のようになります.
これはもう,過去に書いたtm-count-lines-regionがいらなくなったように思います*3.