word-count-mode

最新版

2003-10-09
2002-04-30

word-count-mode とは

指定したリージョン内の文字数, 単語数, 行数を動的に計測して表示する マイナーモードです. 指定可能なリージョンの種類は以下のものがあります.

word-count-mode 専用リージョン (以下 WC リージョン)
文字数は, モードラインに "CC/WW/LL" として表示されます. CC が文字数, WW が単語数, LL が行数を示しています.
WC リージョン
word-count-mode 専用マーカ (以下 WC マーカ) と カーソルの間のリージョン
下の写真では一番左上の T の上に WC マーカがあります.
WC マーカ
普通のリージョン
普通のリージョンと上記ふたつのリージョンは同時に表示されます. 普通のリージョン内の文字数は, 通常の文字数等に追加して表示されます.
普通のリージョン

インストール

ダウンロード

http://www.taiyaki.org/elisp/word-count/src/ から word-count.el をダウンロードしてください.

.emacs の設定

word-count.el を ~/elisp に置いたとして, 以下の設定をを .emacs などに 追加してください. 最初の 1 行目は既に書かれていれば必要ありません.

(setq load-path (cons (expand-file-name "~/elisp") load-path))
(autoload 'word-count-mode "word-count"
          "Minor mode to count words." t nil)
(global-set-key "\M-+" 'word-count-mode)

使い方

とりあえず

なんか適当にリージョンを指定してから, M-+ or M-x word-count-mode を 実行してみて下さい.

基本的な使い方

M-+ (M-x word-count-mode)
word-count-mode を on/off
M-[space] (M-x word-count-set-area)
WC マーカ (word-count 用マーカ) の位置を変更

M-+ (word-count-mode) で word-count-mode を on/off できます. word-count-mode が on の場合, モードラインに "WC:60/10/2" といった 表示が追加されます. 3 つの数字は順に「文字数」, 「単語数」, 「行数」を 表しています.

カウントの対象範囲は WC マーカとカーソル位置の間になります. WC マーカは M-[space] (word-count-set-area) によってマーカの 位置を変更できます. word-count-mode を on にした時点では word-count 用 マーカはカーソルと同じ位置に配置されます. また, WC マーカの 位置はハイライトされます.

リージョンを活用した使い方

transient-mark-mode (リージョンがハイライトされて, リージョンの指定が on/off できるモード)が on の状態で リージョンを有効にすると, モードラインの標記が "WC:60/10/2(30/5/1)" などに変わります. かっこ内の数字はリージョンの中をカウントした数字です.

リージョンを指定した状態で M-[space] (word-count-set-area), word-count-set-region のどちらかを実行すると, リージョン内は WC リージョンとしてハイライト表示され, カウントの対象に なります. 以降カーソルの移動はカウントとは独立して行なえます. WC リージョン内を編集した場合, カウントも自動的に 行なわれます.

「N 文字以内で記述する」という目的に, WC リージョンは 有効だと思います. WC リージョンは, word-count-mode が off の状態でも, リージョンを指定して M-+ (word-count-mode) を 実行すると直接移行します.

M-[space] (M-x word-count-set-area)
リージョンがある場合 word-count-set-region リージョンがない場合 word-count-set-marker
M-x word-count-set-marker
WC マーカをカーソル位置に配置する
M-x word-count-set-region
リージョンがある場合, リージョン内を WC リージョンとする. リージョンがない場合, 自動的にパラグラフを WC リージョンとする.

カスタマイズ

カスタマイズをする場合は .emacs に設定を追加してください. 例として出している値はデフォルト値です.

文字数のカウントにはいれない文字

(setq word-count-non-character-regexp "[\n\t ]")

単語数をカウントするための, 単語とみなす正規表現

(setq word-count-word-regexp "[a-z0-9_-]+")

行数のカウントにはいれない行

デフォルトでは空行をカウントしません.

(setq word-count-non-line-regexp "^[\t ]*\n\\|^[\t ]+$")

ハイライト色

(setq word-count-marker-foreground (mell-color-find "#D0D0D0" 7))
(setq word-count-marker-background (mell-color-find "#5050A0" 3))
(setq word-count-region-foreground (mell-color-find "#D0D0D0" 7))
(setq word-count-region-background (mell-color-find "#5050A0" 3))

mell-color-find の第 2 引数は tty の色を表しています. tty を考慮しないなら, (mell-color-find "#D0D0D0" 7) は "#D0D0D0" と同じです.

モード別の, カウントしない正規表現の設定

(setq word-count-preremove-regexp-alist
  '((latex-mode . ("\\\\%" "%.*$")) (tex-mode . ("\\\\%" "%.*$"))
    (html-mode . ("<[^>]*>")) (sgml-mode . ("<[^>]*>"))
    (t . nil))

正規表現にマッチした文字列を内部的に空白に変換してから, カウントを行います. t はデフォルトの設定です.

メーリングリスト

word-count-mode 限定のメーリングリストではありませんが, 小松が作成している ELisp 全般に関してのメーリングリストを QuickMLで作成しました.

参加される方は, 以下のようなメールを送信してください. また Cc: に自分のメールアドレスを付けないでください. QuickML の仕様上, Cc: に参加者以外のメールアドレスがあると 参加できません.

To: elisp@taiyaki.quickml.com
From: (自分のアドレス)
Cc: komatsu@taiyaki.org
Subject: 参加します (お名前)

(本文にかるく自己紹介でもお願いします,
 何も書かれていないと QuickML のシステム上登録できません.)

更新履歴

2003-10-09
2002-04-30
2002-02-13

BUG & TODO


ホームページ
天照
ELisp
replace-region
rectangle
ac-mode
accel-key
table
wordnet
urlencode
visible-mark
physical-line-mode
my-keisen-mule
myimage
text-adjust
Palm
Linux & Unix
日記
観測カメラ
Index を閉じる
小松 弘幸 <komatsu@taiyaki.org>
$Id: index.html,v 1.4 2003/10/09 22:44:51 komatsu Exp $