>>>> In <28n1xpkcyd.fsf(a)kchisa.ga.sony.co.jp>
>>>> Katsumi Yamaoka <yamaoka(a)ga.sony.co.jp> wrote:
山岡> ;; 2
山岡> (let ((pop-up-frames t))
山岡> (pop-to-buffer "*TMP*")
山岡> (read-string "What? "))
これが使えない問題への消極的な対策です。(;_;)
mu-cite を使う場合ですが、
;; 文字入力を行なう前に popup した frame に minibuffer を付ける。
(add-hook
'mu-cite/pre-cite-hook
(lambda ()
(unless (eq (frame-property (selected-frame) 'minibuffer) t)
(modify-frame-parameters (selected-frame) '((minibuffer . t))))))
;; 文字入力が終わったら minibuffer を取り去る。
(add-hook
'mu-cite/post-cite-hook
(lambda ()
(let* ((orig (selected-frame))
(fp (frame-properties orig))
(buf (current-buffer)))
(when (eq t (frame-property orig 'minibuffer))
(setq fp (plist-remprop fp 'window-id)
fp (plist-remprop fp 'minibuffer))
(select-frame
(make-frame (plist-put fp 'minibuffer nil)))
(switch-to-buffer buf)
(set (make-local-variable 'message-original-frame) (selected-frame))
(set-frame-properties
orig (list 'minibuffer default-minibuffer-frame))
(delete-frame orig t)))))
後者は detached-minibuf.el のやり方をマネました。なぜか
(modify-frame-parameters (selected-frame) '((minibuffer . nil)))
は効かないので、minibuffer の無い frame を新たに作って置き換えています。
これに倣って、逆に新しい minibuffer だけの frame を作って置き換えるこ
とも試してみたのですが、一度 default-minibuffer-frame に設定したものを
delete する試みは失敗に終わりました。
--
Katsumi Yamaoka <yamaoka(a)ga.sony.co.jp>