[xyzzy:08224] Re: バッファの総バイト量
- Subject: [xyzzy:08224] Re: バッファの総バイト量
- From: SATO Osamu <yebisuya@xxxxxxxxxxxx>
- X-mailer: Datula version 1.51.09 for Windows
koji kimura さん、こんにちは。貴メール
Time: [Tue, 23 Apr 2002 02:23:52 +0900]
Title: [xyzzy:08223] Re: バッファの総バイト量
拝受しました。
>>やはりファイルに書き出して、ファイルサイズで調べるのが確実な気が
>>してきました。
うーむ。そうですか。折角、良いことを教わったと 思っていたのですが・・・
妙に こだわっている 言い訣をしておくと、[バッファの総バイト量]は、私の場合 具体的な「用途」(つまり、他の関数で呼ぶこと)が、二つあるんです。
その内の 一つだけを 書いておくと、よく知られているツールである wc と同等なことを 個個のバッファに対して行う関数を 自前で作ってみたんですが、その中で使っています。ワザワザ説明するまでも無いことでしょうが、wc では、ファイルの単語数の他に、バイト数も帰してくるので、それも真似したのです。
関数 filter-buffer で、cygwin 等の wc を呼び出せば良い と云う意見もあるでしょうけれど、この(少なくとも 私がインストールしている cygwin の)場合は、どんな小さいバッファでも、応答が 一拍遅れるんですね。これが ミョーに不満でしてね。
全く不案内なんですが、emacs や mule では、バッファの 単語数や バイト量を調べるのは、やはり wc を外部から呼び出すんですかね。ま、それが 真ッ当な仕方 と云うもんなんでしょうけれど。
それが meadow だと、OS からの支援が アテにできないらしいですね。このメーリングリストの[xyzzy:06382]に meadow での 単語数を 数え上げる関数が 紹介されていましたから。
あれを見て 面白かったのは、meadow が準拠している LISP (emacs LISP なんでしょう)には、xyzzy が備えているような 強力なリスト処理関数が ないのだろうな と云うことでした。
単語数を 数え上げるのに forward-word で 単語を なぞりながら 1 ずつ足して行くより、一行全体を 部分文字列として 取ってしまってから split-string で 単語のリストを作ってから list-length を適用すると、その行の単語数は 得られますから、後は、行ごとの足し算をして行けば 全体の単語数が 出てきます。時間を測ったわけではありませんが、使ってみると、こちらのほうが早いみたいです。
どうも ドシロートの 話になってしまって。ここらへんで、やめておきます。
--
ゑびすや店主
佐藤 修(SATO Osamu)