- xyzzy Part16
594 :名無し~3.EXE[sage]:2010/01/08(金) 01:11:05 ID:2Ex0cZPn - >>593
>>586 をもとに作成するならばこうかな。 (defun popup-buffer () ... menu) (add-popup-menu *app-menu* (popup-buffer) "バッファ(&B)") 任意の場所に挿入するなら insert-popup-menu を使用。
|
- xyzzy Part16
597 :名無し~3.EXE[sage]:2010/01/08(金) 22:06:14 ID:2Ex0cZPn - 強引に行くならこうかな。
何か副作用あるかもしれないけど。 (defvar *buffer-list-popup-menu* nil) (defun add-buffer-list-popup-menu-item (&optional all) (let ((buffer-list (buffer-list :buffer-bar-order t)) (i -1)) (flet ((make-name (string) (format nil "~A(&~C)" string (code-char (+ (char-code #\A) (rem (incf i) 26))))) (make-command (buffer) #'(lambda () (interactive) (set-buffer buffer)))) (add-menu-item *buffer-list-popup-menu* nil (make-name (buffer-name (car buffer-list))) (make-command (car buffer-list)) #'(lambda () (while (delete-menu *buffer-list-popup-menu* 0 t)) (add-buffer-list-popup-menu-item all))) (do* ((buffer (cdr buffer-list) (cdr buffer)) (name (buffer-name (car buffer)) (buffer-name (car buffer)))) ((or (not buffer) (unless all (string= name " " :start1 0 :end1 1)))) (add-menu-item *buffer-list-popup-menu* nil (make-name name) (make-command (car buffer)))) t)))
|
- xyzzy Part16
598 :597[sage]:2010/01/08(金) 22:07:25 ID:2Ex0cZPn - (defun init-buffer-list-popup-menu ()
(setf *buffer-list-popup-menu* (create-popup-menu 'buffer-list)) (add-buffer-list-popup-menu-item) (insert-popup-menu *app-menu* (get-menu-position *app-menu* 'window) *buffer-list-popup-menu* "バッファ(&B)")) (add-hook '*init-app-menus-hook* 'init-buffer-list-popup-menu)
|