🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by Fujisawa Jiro Sat, 27 Feb 1999 00:00
about Emacs Lisp
#712
Author: Fujisawa Jiro
Date: Sat, 27 Feb 1999 00:00
44 lines
2654 bytes
こんにちは、藤澤と申します。

最近、文字コードを気にせずにグローバルな検索をする為に、 Mule で grep 
の様にディレクトリ単位でファイル検索が出来る Emacs Lisp が書けないかと
考えているのですが、うまくいかないので、どなたかにお教えを請いたいと思
い、投稿致します。

先ず、取り敢えず指定したディレクトリにあるファイルを全て開く Lisp を書
こうと思ったのですが、サブディレクトリ以下にあるファイルも開く方法がよ
く分りません。

(defun mule-grep (str dna)
  (interactive "sInput string: \nfInput dirname: ")
  (setq mg-file-list (directory-files dna))
  (setq n 2)
  (while (setq mg-file-name (concat dna (nth n mg-file-list)))
    (if (file-directory-p mg-file-name)
	(progn (setq mg-file-name (concat mg-file-name "/"))
	       (mule-grep str mg-file-name))
      (find-file-noselect mg-file-name))
    (setq n (+ n 1))))

というような Lisp を取り敢えず書いてみたのですが(まだ Emacs Lisp を勉
強し始めたばかりなので、非常に拙いですが)、root のにあるファイルを開
きにいってしまいます。

また、それ以外にも当然ながらバイナリーファイルも開いてしまいます。バイ
ナリーファイルを無視して、テキストファイルのみ開くにはどうしたらよいの
でしょうか?

さらに、*.tex のファイルは、やてふモードで(やてふを使っています)開か
れてしまい、hilit も使っているため、特に大きいファイルの場合、よけいな
時間がかかってしまいます。この場合に於ては単に検索する事のみが目的です
ので、このコマンドの中では普通のモードでいいから速く開いてほしいのです
が、その方法もよく分りません。

これら幾つかの点について、どなたか御教授下されば幸いに存じます。


------
                                 ┌────────────────┐
                                 │藤澤次郎   神戸大学文化学研究科 ┃
                                 │E-mail:fujisawa@lit.kobe-u.ac.jp┃
                                 └━━━━━━━━━━━━━━━━┛
Re: about Emacs Lisp
#713
Author: Tsuyoshi AKIHO
Date: Mon, 01 Mar 1999 00:00
77 lines
3767 bytes
大阪市立大学の秋保です。

適当に改行させてもらっています。

In article <7b92g8$34b$1@nntp.wao.or.jp>
    fujisawa@wao.or.jp (Fujisawa Jiro) writes:

fujisawa> こんにちは、藤澤と申します。

fujisawa> 最近、文字コードを気にせずにグローバルな検索をする
fujisawa> 為に、 Mule で grep の様にディレクトリ単位でファイ
fujisawa> ル検索が出来る Emacs Lisp が書けないかと考えている

etags で TAGS ファイルを作って、M-x tags-search するというの
は、どうでしょうか。*sjis* と *junet* では、うまく検索できま
した(他はテストしてないです)。

僕は、以下の関数を ~/.emacs に定義して使っています。

---start---
;; 再帰的にファイルを検索させて、etags を実行させる。
(defun etags-find (dir pattern)
  " find DIR -name 'PATTERN' |etags -"
  (interactive
   "DFind-name (directory): \nsFind-name (filename wildcard): ")
  (shell-command 
   (concat "find " dir " -name \"" pattern "\" -print | etags -"))
)

;; より条件を詳しく
(defun etags-find-detail (dir pattern lang output-file)
  "etags-find-detail \n find DIR -name 'PATTERN' |etags -"
  (interactive
   "DFind-name (directory): \nsFind-name (filename wildcard): \nsLangage-name (Default: auto): \nsOutput-file (Default: TAGS): ")
  (if (not (>= (length lang) 1))
      (setq lang "auto"))
  (if (not (>= (length output-file) 1))
      (setq output-file "TAGS"))
  (shell-command 
   (concat "find " dir " -name \"" pattern 
           "\" -print | etags -l " lang " -o " output-file " -")))
---end---

Mule2.3(GNU Emacs 19.28) & GNU Emacs 20.2 で動作確認しました。
これなら、

fujisawa> また、それ以外にも当然ながらバイナリーファイルも開
fujisawa> いてしまいます。バイナリーファイルを無視して、テキ
fujisawa> ストファイルのみ開くにはどうしたらよいのでしょうか?

*.txt を指定して、TAGS ファイルを作れば問題ないです。
検索を続けるには、M-, です。

藤澤さんは、中国語でも検索したいと思うのですが、Mule では、 
M-x set-primary-environment で、 chinese を指定すれば、検索
できると思います。

Mule for Windows でなら、find コマンドがないので、cygnus を
インストールしていないと使えないです。Meadow は使ってないの
ですが、同じと思います。

GNU Emacs 20.2 では、-*-mode: C; coding: latin-1;-*- とファ
イルに書いておけば、code の指定が出来るので、この方法で検索
できると思います(テストしてない)。

fujisawa> さらに、*.tex のファイルは、やてふモードで(やてふ
fujisawa> を使っています)開かれてしまい、hilit も使っている
fujisawa> ため、特に大きいファイルの場合、よけいな時間がかかっ
fujisawa> てしまいます。

こちらはパスさせて下さい。

-- 
     秋保強(AKIHO Tsuyoshi)
    大阪市立大学院理学研究科 
     レーザー化学研究室 M1
 mail-to:akiho@sci.osaka-cu.ac.jp
Re: about Emacs Lisp
#714
Author: Fujisawa Jiro
Date: Mon, 01 Mar 1999 00:00
141 lines
6650 bytes
こんにちは、藤澤です。

御教授どうも有難うございます。

In article <7bcvjq$lgf$1@ocusv4.gw.osaka-cu.ac.jp> Tsuyoshi AKIHO
<akiho@sci.osaka-cu.ac.jp> writes:
> 大阪市立大学の秋保です。適当に改行させてもらっています。

> In article <7b92g8$34b$1@nntp.wao.or.jp> fujisawa@wao.or.jp
> (Fujisawa Jiro) writes:
fujisawa> (略)
> etags で TAGS ファイルを作って、M-x tags-search するというのは、どう
> でしょうか。*sjis* と *junet* では、うまく検索できました(他はテスト
> してないです)。

*euc-japan* でもうまく行くようです。

> 僕は、以下の関数を ~/.emacs に定義して使っています。

> ---start---
 ;; 再帰的にファイルを検索させて、etags を実行させる。
> (defun etags-find (dir pattern)
> " find DIR -name 'PATTERN' |etags -"
>   (interactive
>    "DFind-name (directory): \nsFind-name (filenamewildcard): ") 
>   (shell-command 
>        (concat "find " dir " -name \"" pattern "\" -print |etags -"))
> )

これは最初うまくいかなかったのですが、調べてみるとその理由は、私の所の 
find が、

# find ~/deta/temp/ -name '*.t*' -print 
/home/fujisawa/deta/temp//dokuyu.tex
/home/fujisawa/deta/temp//sonota.txt
/home/fujisawa/deta/temp//tyubunx.tex
/home/fujisawa/deta/temp//tmp/htyubun.tex
/home/fujisawa/deta/temp//tmp/nenji.txt

の様に指定したディレクトリの後に '//' を入れるせいのようで、

(前略)-print | sed -e 's/\\/\\//\\//g' | etags -"))

の様に sed を使って '/' を一つ消してやればうまくいくようになりました。

> (defun etags-find-detail (dir pattern lang output-file)
>   "etags-find-detail \n find DIR -name 'PATTERN' |etags -"
>   (interactive
>    "DFind-name (directory): 
>    \nsFind-name (filename wildcard): 
>    \nsLangage-name (Default: auto): 
>    \nsOutput-file (Default: TAGS): ")
>   (if (not (>= (length lang) 1))
>       (setq lang "auto"))
>   (if (not (>= (length output-file) 1))
>       (setq output-file "TAGS"))
>   (shell-command 
>    (concat "find " dir " -name \"" pattern 
>            "\" -print | sed -e 's/\\/\\//\\//g' | etags -l " 
>            lang " -o " output-file " -")))
(適当に折り返しました)

ただ、こちらの方は、うまく動かず、その原因は、私の所の etags には '-l' 
というオプションが無い為のようです。
# etags --help
で見ても、
# man etags
で見ても、'-l' というオプションは見つかりません。バージョンか何かが違っ
ているのでしょうか?
# etags -V
とすると、
ETAGS for Emacs version 19.28.
と表示されます。

> Mule2.3(GNU Emacs 19.28) & GNU Emacs 20.2 で動作確認しました。これな
> ら、
fujisawa> (略)
> *.txt を指定して、TAGS ファイルを作れば問題ないです。検索を続けるに
> は、M-, です。

まあ、私が検索をかけるファイルは、大抵が *.txt か *.tex で、同じディレ
クトリにあるバイナリーファイルは、*.dvi ぐらいですから、*.t* でほとん
ど問題無く行くようですが、たまに *.gb とか *.b5 とかありますから...
まあ、これらは中国語のファイルですから、結局別に検索すればいいんですが。
ワイルドカードでは、正規表現の様に "txt|tex|gb|b5" とかは出来無いです
よね。

> 藤澤さんは、中国語でも検索したいと思うのですが、Mule では、 M-x
> set-primary-environment で、 chinese を指定すれば、検索できると思い
> ます。

一番やりたかったのは、*junet* で多言語を混在させた文章の検索なのですが、
これは全然問題無く出来ました。(^_^)
中国語で書かれたファイルはそれほど多くないので、*junet* に変換しておけ
ば問題無いようです。

> Mule for Windows でなら、find コマンドがないので、cygnus をインストー
> ルしていないと使えないです。Meadow は使ってないのですが、同じと思い
> ます。

今の所、FreeBSD でほとんどの作業を行なおうと思っているので、取り敢えず 
UNIX の Mule で動作すれば満足なのですが、そのうち Window の方でも挑戦
してみたいと思います。

> GNU Emacs 20.2 では、-*-mode: C; coding: latin-1;-*- とファイルに書
> いておけば、code の指定が出来るので、この方法で検索できると思います
> (テストしてない)。

Emacs 20 は、私の使用したい幾つかのマクロが動かない為、UNIX の方では現
在の所導入を躊躇しております。何とか UNIX に作業環境を移したいと思った
のも、一つはこの理由によります。
この間も、自分で書いた Emacs Lisp が、19.28 の Mule では動いたのに、
Meadow ではうまく行きませんでした。(何故だろう?)

fujisawa> さらに、*.tex のファイルは、やてふモードで(やてふを使ってい
fujisawa> ます)開かれてしまい、hilit も使っているため、特に大きいファ
fujisawa> イルの場合、よけいな時間がかかってしまいます。

> こちらはパスさせて下さい。

etags を使った方法なら、開くファイルは検索にマッチしたファイルのみなの
で、これはそれほど大きな問題にはならないようです。解決出来るならそれに
こした事はありませんが。

御教授どうも有難うございました。お蔭様で非常に便利になりました。
(etags という物がある事すら知らなかった無知な私...)

後は、w3 で Big5 で書かれたホームページを検索する事が出来れば、ほとん
ど全ての作業を FreeBSD に移す事が出来そうです。

これに関しては、また改めて質問させて頂きたいと思っておりますので、何か
御気付きの点等ございましたら、御教授下さい。

長くなってしまい、申し訳ありませんでした。


------
                                 ┌────────────────┐
                                 │藤澤次郎   神戸大学文化学研究科 ┃
                                 │E-mail:fujisawa@lit.kobe-u.ac.jp┃
                                 └━━━━━━━━━━━━━━━━┛
Re: about Emacs Lisp
#715
Author: Akiho Tsuyoshi
Date: Tue, 02 Mar 1999 00:00
44 lines
2614 bytes
大阪市立大学の秋保です。
Mac 使用中なので NeXTSTEP の Mule です。

In article <7betu8$cie$1@nntp.wao.or.jp> 
fujisawa@wao.or.jp (Fujisawa Jiro) writes:

> ただ、こちらの方は、うまく動かず、その原因は、私の所の etags には '-l' 
> というオプションが無い為のようです。
> # etags --help
> で見ても、
> # man etags
> で見ても、'-l' というオプションは見つかりません。バージョンか何かが違っ
> ているのでしょうか?
> # etags -V
> とすると、
> ETAGS for Emacs version 19.28.
> と表示されます。

すみません。etags -l は、GNU Emacs 20.2 の etags でしか使用できま
せん。自分の環境を 20.2 を主に使用しているので check が甘かったよ
うです。 -l の使っているところを削除して使用していただくと嬉しい
です。 etags-find-detail は、TAGS ファイルを別に作っておくのに利
用しようとしてました。

> まあ、私が検索をかけるファイルは、大抵が *.txt か *.tex で、同じディレ
> クトリにあるバイナリーファイルは、*.dvi ぐらいですから、*.t* でほとん
> ど問題無く行くようですが、たまに *.gb とか *.b5 とかありますから...
> まあ、これらは中国語のファイルですから、結局別に検索すればいいんですが。
> ワイルドカードでは、正規表現の様に "txt|tex|gb|b5" とかは出来無いです
> よね。

*.txt と *.tex などとそれぞれ違うTAGS ファイルを作成して、
M-x visit-tags-table で必要な TAGS ファイルを追加すればお望みのこ
とが出来ると思います。M-x command-apropos & M-x apropos で tags 
に関する command を調べるとほしいコマンドが見つかると思います(う
けうり)。

M-x select-tags-table で TAGS ファイルの on|off ?ができます。

-- 
     秋保強(AKIHO Tsuyoshi)
    大阪市立大学院理学研究科 
     レーザー化学研究室 M1
 mail-to:akiho@sci.osaka-cu.ac.jp
Re: about Emacs Lisp
#716
Author: Fujisawa Jiro
Date: Wed, 03 Mar 1999 00:00
58 lines
3644 bytes
こんにちは、藤澤です。

In article <M98S201.99Mar2175956@media5a05.ex.media.osaka-cu.ac.jp>
m98s201@ex.media.osaka-cu.ac.jp (Akiho Tsuyoshi) writes:
> 大阪市立大学の秋保です。Mac 使用中なので NeXTSTEP の Mule です。
> In article <7betu8$cie$1@nntp.wao.or.jp> fujisawa@wao.or.jp
> (Fujisawa Jiro) writes:
>> ただ、こちらの方は、うまく動かず、その原因は、私の所の etags には '-
>> l' というオプションが無い為のようです。# etags --helpで見ても、#
>> man etagsで見ても、'-l' というオプションは見つかりません。バージョ
>> ンか何かが違っているのでしょうか?# etags -Vとすると、ETAGS for
>> Emacs version 19.28.  と表示されます。
> すみません。etags -l は、GNU Emacs 20.2 の etags でしか使用できませ
> ん。自分の環境を 20.2 を主に使用しているので check が甘かったようで
> す。 -l の使っているところを削除して使用していただくと嬉しいです。 
> etags-find-detail は、TAGS ファイルを別に作っておくのに利用しようと
> してました。

出来ました。これだと、事前によく検索をかけるディレクトリの TAGS ファイ
ルを作っておく事が出来るので、検索をかける時にわざわざ TAGS ファイルを
作る手間が省けていいですね。

>> 
>>  (略)
>> 
> *.txt と *.tex などとそれぞれ違うTAGS ファイルを作成して、M-x
> visit-tags-table で必要な TAGS ファイルを追加すればお望みのことが出
> 来ると思います。

うまくいきました。

> M-x command-apropos & M-x apropos で tags に関する command を調べる
> とほしいコマンドが見つかると思います(うけうり)。

見てみました。だいたい分ったような気がするのですが(でも英語苦手だから
なー)、....

> M-x select-tags-table で TAGS ファイルの on|off ?ができます。

 on は分ったのですが、off がよく分りません。M-x select-tags-table で出
て来る list で、t を押すと、最初に使う TAGS ファイルになるようですが、
それ以外の TAGS ファイルも順番に検索しているようです。keybinding を見
てみたのですが、t 以外には移動するキーしか無いようです。

まあ、それでもかまわないと言えばかまわないのですが、いらないものは off 
出来るのなら出来た方が良いと思うのですが....

> -- 秋保強(AKIHO Tsuyoshi) 大阪市立大学院理学研究科 レーザー化学研究
> 室 M1 mail-to:akiho@sci.osaka-cu.ac.jp

御教授有難うございました。


------
                                 ┌────────────────┐
                                 │藤澤次郎   神戸大学文化学研究科 ┃
                                 │E-mail:fujisawa@lit.kobe-u.ac.jp┃
                                 └━━━━━━━━━━━━━━━━┛
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads