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

[xyzzy:04461] Re: my-open-xxx



藤本さん、こんにちは。山本です。


 In message "[xyzzy:04459] Re: my-open-xxx"
 Soichiro Fujimoto <robotcat@xxxxxxx> wrote:

> 欲をいうと、Possible completions are:のところで、
> 実際のファイル名ではなく、aliasというか、別名で補完入力ができると
> もっとすごい気がします。

亀井さんのを見て、私も連想リストを使えばよかったと思いました。:)

(defvar *my-favorite-files*
  (list '("personal" . "~/.xyzzy")
	(cons "public" (concat (si:system-root) "site-lisp/siteinit.l"))))


(defun my-open-favorite-file ()
  (interactive)
  (let ((file (get-buffer-file-name (selected-buffer)))
	name)
    (if (or *prefix-args*
	    (not (rassoc-if #'(lambda (x)
				(string-equal
				 (string-downcase file)
				 (string-downcase
				  (merge-pathnames (file-namestring x)
						   (directory-namestring x)))))
			    *my-favorite-files*)))
	(setq file (cdr (assoc (completing-read "File: "
				    (mapcar #'car *my-favorite-files*)
				    :must-match t)
			       *my-favorite-files*
			       :test #'string-equal))))
    (setq name (file-namestring file))
    (if (find-buffer name)
	(switch-to-buffer
	 (if (and (not *prefix-args*)
		  (eq (selected-buffer) (find-buffer name)))
	     (other-buffer)
	   name))
      (find-file file))))

-- 
山本真二           sinj@xxxxxxxxxxxx

Index Home