[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: Word Count?



こんにちは。chiyu@W3で掲示板に書き込む時はDOS改行の設定を(汗)、
といいます。
# mule-retrieval-coding-systemを変更すればいいみたいです。
# cashe使用時はメニューバーからOption内の
# Use Cashe Only をオフにしましょう(^^;;。


Takeshi TAKIYAMA <takiyama@xxxxxxxxxxxxxxxxxxxxxxx> writes:
> 複数行にわたるとき、M-=は改行コードまでカウントしてしまいますが
> これは、仕方がないですか?

M-x describe-key <Enter> M-= <Enter>
で、M-= が count-lines-region にバインドされていることがわかり、
M-x describe-function <Enter> count-lines-region <Enter>
で、この関数の説明が読めて、その*Help*バッファでTabキーを
押して、simple という単語の上にカーソルを移動して、Enterキーを
押すと、この関数の定義が読めます。
(describeうんぬんは、メニューバーからHelp -> Describeでもよい。)

これを見ると、なんだ、文字数−行数−1で(改行コードを含まない)文字数が
わかるよな、と思ったのですが、そんなに簡単ではなかったです(笑)。

次のコードでどうでしょう?

(defun my-count-lines-region (start end)
  (interactive "r")
  (save-excursion ;これと
    (save-restriction ;これは オマジナイ。(ちゃんと調べましょう(爆))
      (let ((lf-num 0)) ;改行文字の個数用、初期化している。
        (goto-char start) ;指定領域の先頭に行く。
        (while (re-search-forward "[\n\C-m]" end t) ;改行文字のカウント
          (setq lf-num (+ 1 lf-num))) ;(つまり、searchできる度に1足す)
        (message "指定領域には%d文字(除改行文字)、%d行、%d文字(含改行文字)ある。"
                 (- end start lf-num) (count-lines start end) (- end start))))))

以上。お元気で。

chiyu(あかば のぶゆき)
http://ha1.seikyou.ne.jp/home/akairingosaita/meadow/index.htm