私の最初の答えはあなたが望むものを直接あなたに与えないので、私は本当の解決策を思いつくだろうと思いました。これは私が持っているものです:
(defvar my-execute-extended-command-source-buffer nil
"var holding the buffer to which the extended-execute-command should apply")
(defvar in-my-execute-extended-command nil
"internal use - indicates whether we're in a 'recursive edit' of sorts")
(defun my-execute-extended-command (command)
"home-grown version of execute-extended-command that supports re-hosting the buffer"
(interactive (list (if in-my-execute-extended-command
nil
(let ((in-my-execute-extended-command t))
(setq my-execute-extended-command-source-buffer (current-buffer))
(completing-read "My-x " obarray 'commandp t nil 'extended-command-history nil nil)))))
(if in-my-execute-extended-command
(progn (setq my-execute-extended-command-source-buffer (current-buffer))
(select-window (minibuffer-window)))
(switch-to-buffer my-execute-extended-command-source-buffer)
(call-interactively (symbol-function (intern command)))))
私はそれをこのようにテストしました。私はそれをキーにバインドしました(F10
私の場合はb / cを失いたくありませんでしたM-x
)。次に、2つのウィンドウを開いて、それぞれが異なるバッファー(AとBなど)を表示します。
- バッファAを表示しているウィンドウから:
F10 isearch-for
- ミニバッファからAを表示するウィンドウに切り替えます。
C-x o
- Aを表示しているウィンドウからBを表示しているウィンドウに切り替えます。
C-x o
- バッファBからコマンドを「再ホスト」します。
F10
- ミニバッファに戻り、コマンドを終了します
ward RET
検索語の入力を開始すると、検索はバッファーBに適用されました。
これはM-x
機能を置き換えるだけで、から呼び出されるコマンドは置き換えませんM-x
。また、このバージョンはプレフィックス引数をサポートしていません。
うまくいけば、これはあなたが望むものです。