De vez en cuando empiezo a abrir un archivo, y antes de seleccionar el archivo, por alguna razón, lo ejecuto C-x oantes de responder el mensaje. Luego, cada vez que intento ejecutar de find-file
nuevo, se queja de que Command intentó usar minibúfer mientras estaba en minibúfer . Sin embargo, si uso un comando como isearch-forward-regexp
, (incluso si ya está en una find-file
solicitud), el error no se produce y no puedo volver a usar el minibúfer other-window
.
¿Por qué algunas indicaciones actualizan temporalmente el minibúfer para que other-window
considere que el minibúfer sea un posible objetivo, y otras no?
Solo para aclarar, no estoy preguntando cómo despegarse.
Originalmente, cuando me encontraba con esto, cambiaba al minibúfer y hacía Esc Esc Esco C-gpara escapar del indicador, de modo que pudiera iniciar un nuevo comando que usara el minibúfer. Sin embargo, al reflexionar sobre esta pregunta, me di cuenta de que abort-recursive-edit
( C-]) cerrará este minibúfer en progreso sin tener que hacer other-window
+ keyboard-quit
.
Aún así, no estoy muy seguro de para qué sirve el caso de uso original. Tal vez, ¿está destinado a ayudar a copiar el pegado en un indicador de minibúfer, o para ayudar a ejecutar un comando en el medio de una macro?
Lo que sí quiero saber es si hay una manera de deshabilitar esta recursividad de la forma en que está isearch
. ¿Es isearch
seguro porque usa read-event en lugar de un aviso de bloqueo? ¿Hay un gancho para disparar abort-recursive-edit
al salir del minibúfer?
TL; DR
- ¿Por qué algunos comandos del minibúfer actualizan el minibúfer a un destino
other-window
y bloquean la ejecución de nuevos comandos del minibúfer, mientras que otrosisearch
no lo hacen? - ¿Hay alguna manera de desactivar esto?
- ¿Cuál es el caso de uso previsto de esta característica?
fuente
C-]
aborta un nivel de minibúfer, sí. Isearch no usa el minibúfer. ¿Y qué tiene que ver " atrapado en el aviso " con el resto de lo que usted describe? No debería necesitar usarswitch-window
nada, en tales contextos. Pero no está claro lo que está tratando de hacer. Intente separar las diversas piezas de su descripción e intente formular una sola pregunta.enable-recursive-minibuffers
parat
evitar que el Comando intente usar minibúfer mientras está en el mensaje minibúfer . Podría ayudar a aclarar la pregunta original, si la publicó porrecursive-edit
separado.Respuestas:
find-file
Es uno de esos comandos. La lectura de la entrada del minibúfer "activa" la ventana del minibúfer, por lo que puede cambiar a ella con elother-window
comando. Interactivoisearch
es especial porque se implementa como un modo menor. Técnicamente, no lee su cadena de búsqueda del minibúfer, sino que captura sus pulsaciones de teclas a medida que escribe y las repite en el minibúfermessage
. Por eso ves que teother-window
comportas de manera diferente.find-file
al modificar la función almacenada enread-file-name-function
. No he intentado aconsejar la función basada en la respuesta de @ kaushalmodi, pero si eso funciona, actualizaré esto.fuente
El siguiente fragmento [ Fuente ] cancela la edición recursiva cuando el foco se aleja del minibúfer. Esto es para evitar las ocasiones irritantes en las que
C-g
presionar repetidamente no edita el minibúfer cuando el foco del cursor se ha salido de él.fuente
Drew ya ha comentado sobre esto, pero ...
isearch
1 en realidad no usa el minibúfer, que probablemente explica parte de su confusión. Muestra cosas en el área de eco (que está en la misma ventana que el minibúfer, pero en realidad no es el minibúfer).Siendo ese el caso, la noción de cambiar hacia y desde el minibúfer mientras se ejecuta una búsqueda no tiene ningún sentido.
1 comandos Ignorar como
isearch-edit-string
la que hacen uso de la minibuffer, pero no forman parte de la más básica isearch flujo de trabajo.fuente