commands – Activando M-! en M- & (a'ka emacs equiv to bash Ctrl-Z)

Pregunta:

De vez en cuando me pasa a M-! some_command solo para descubrir que el comando se ejecuta más de lo esperado y mantiene mi emacs congelado durante largos segundos. Así que pongo glaseado en mis emacs congelados y me pateo por no usar M-& some_command y me prometo a mí mismo usar M-& próxima vez. ¡Pero M-! está en mi memoria muscular durante décadas … Y, por supuesto, hay Ctrl-G , pero hay casos en los que romper el comando y volver a ejecutarlo no es preferible (quizás se rompa algo, quizás sea costoso volver a ejecutarlo …).

Un error similar en shell konsole es trivial de corregir, Ctrl-Z , bg y el trabajo se está ejecutando en segundo plano.

¿Existe algún truco similar en emacs, una forma de convertir el comando en primer plano (sincrónico) que se está ejecutando actualmente en uno en segundo plano (asincrónico)?

Nota: en caso de que sea imposible por defecto M-! , Estoy abierto a sugerencias de cómo volver a vincular M-! en otra cosa (lo que sería funcionalmente equivalente aparte de este truco).

Respuesta:

¿Existe algún truco similar en emacs, una forma de convertir el comando en primer plano (sincrónico) que se está ejecutando actualmente en uno en segundo plano (asincrónico)?

Sospecho que no existe tal truco. El problema es que el comando de shell síncrono (que en realidad es call-process-region ) bloquea el bucle de eventos emacs. La única forma de romperlo es matar el proceso con una señal USR1 o USR2 o hacer Cg . (Puede haber otras formas, pero eso es lo que hago).

Esto significa que no hay nada que pueda hacer porque no tiene una forma de invocar el truco, ya que Emacs no procesa la entrada mientras el bucle de eventos está detenido.


Una cosa que puede hacer es simplemente intercambiar las teclas:

(global-set-key (kbd "M-!") #'async-shell-command)
(global-set-key (kbd "M-&") #'shell-command)

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım