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

[xyzzy:01908] Re: incf(かな ?)



亀井さん、こんにちは。

        Sun, 14 Feb 1999 00:20:45 +0900 の
        [xyzzy:01906] Re: incf(かな ?)
        への返事です。

> z が常に初期化されているからです。グローバル変数とかクロージャ
> とかで前回の z を覚えておいて、(eq *last-command* 'lister-walk-marked-dir)
> なら 1 引く、そうでなければ (1- (length *lister-marked-dir*)) 
> を設定する、てな感じの処理にしないとうまくいきません。

もともと数学的センスがないので、数が出て来るとおたおたしてしまいます。
クロージャというのはおおよそ、funcall なんかと関係あるのかな、くらいし
か、おべんきょしてもわからなかったので、グローバル変数方式をとりました。
改善すべき点があるにきまってると思いますが、あったらよろしくお願いしま
す。どうもありがとうございました(クロージャというのは elisp にはないよ
うですね)。


(defvar *nth-marked-dir* 0)

(defun lister-mark-dir ()
  (interactive)
  (popup-string "カレントディレクトリをマークしました" (point-min) 1)
  (setq *lister-marked-dir* (cons (default-directory) *lister-marked-dir*)))

(defun lister-walk-marked-dir ()
  (interactive)
  (if (= (length *lister-marked-dir*) 0)
	  (popup-string "ディレクトリがマークされていません" (point-min) 1)
	(if (eq *last-command* 'lister-walk-marked-dir)
		(progn
		  (cond ((= *nth-marked-dir* (- (length *lister-marked-dir*) 1))
				 (setq *nth-marked-dir* 0))
				(t (setq *nth-marked-dir* (incf *nth-marked-dir*))))
		  (lister-change-dir (nth *nth-marked-dir* *lister-marked-dir*)))
	  (progn
		(setq *nth-marked-dir* 0)
		(lister-change-dir (nth *nth-marked-dir* *lister-marked-dir*))))))


--------
須田誠也(suda seiya)
EZU11330@xxxxxxxxxxx

Index Home