[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08224] Re: バッファの総バイト量



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)

Index Home