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

[xyzzy:06689] Re: 関数の使い方



ARAI, Tsuyoshiさん、こんにちは。

	      From: "ARAI, Tsuyoshi" <t-arai@xxxxxxxxxxxxx>
	      Date: Fri, 20 Apr 2001 13:18:55 +0900
	   Subject: [xyzzy:06687] 関数の使い方
	Message-ID: <20010420090033.A85D.T-ARAI@xxxxxxxxxxxxx>

> すみません,このあたりほとんど分かっていないので恥を忍んでお聞
> きします。こういった関数?の使い方は皆さんどうやって知るのでしょ
> う。/lisp/ 以下のソースを見て理解しているのでしょうか。
> 逸見さんや服部さんのリファレンスはとても分かりやすくてお世話に
> なってるのですが,新しい関数は使い方が分からなくて・・・。

私の場合、名前さえ分かっていれば、
    (1) /lisp 以下に Grep かけて、定義されているところを探す。
    (2) 引数に内を渡せばいいのか見る。
    (3) *scratch* で色々試す。
    (4) 何となく分かる。

となります。ソースを見て理解するというのは無理、というか試した方
が速いです。/html 以下に Grep をかける事もよくあります。

どなたかの要望で追加されている場合もあるので、過去ログを見て引っ
かかることもあります。

名前も何も分からない場合は、そんなような処理をやってそうな物を見
るとか、elisp のヘルプを見て似たような関数を探して、その関数の名
前で /lisp にGrep をかけるとかします。


> *before-find-file-hook* も,名前から想像するとコールバック関数
> みたいになっていて,

コールバック関数というのはどういう物か分かりませんが、

(run-hooks 'フック変数)

で合図が出されて

(add-hook 'フック変数 #'(関数))

でその合図を受け取って、(関数) というのを実行。という流れになり
ます(?)

files.l の find-file-internal を見ると、

(let ((r (run-hook-with-args-until-success
         '*before-find-file-hook* filename)))
  (when r (return-from find-file-internal r)))

とあるので、あぁ引数でパスが来るんだなと目処を付けておいて、

(defun my-resolve-shortcut (path)
  (let ((ext (pathname-type path)))
    (if (equal "lnk" ext)
        (ed::find-file-internal (resolve-shortcut path))
      nil)))

(add-hook '*before-find-file-hook* #'my-resolve-shortcut)

とするといいのではないかと。(ed::find-file-internal (path の元フ
ァイル)) の所はかなり怪しいですが。


**********
quarto <quarto@xxxxxxxxxx>

Index Home