Dari waktu ke waktu saya kebetulan M-! some_command
hanya menemukan bahwa perintah berjalan lebih lama dari yang saya harapkan dan membuat emacs saya beku selama beberapa detik. Jadi saya membuat glasi pada emac saya yang beku dan menendang diri saya karena tidak menggunakan M-& some_command
dan berjanji pada diri sendiri untuk menggunakan M-&
waktu berikutnya. Tapi M-!
ada dalam ingatan otot saya selama beberapa dekade ... Dan tentu saja ada Ctrl-G
, tetapi ada kasus ketika melanggar perintah dan menjalankannya kembali tidak disukai (mungkin itu dapat merusak sth, mungkin mungkin akan mahal untuk menjalankan kembali ...).
Kesalahan serupa di shell konsole sepele untuk dikoreksi Ctrl-Z
,, bg
dan pekerjaan berjalan di latar belakang.
Apakah ada beberapa trik serupa di emacs - cara untuk mengubah perintah foreground (sinkron) yang sedang berjalan menjadi yang terstandar (asinkron)?
Catatan: seandainya tidak mungkin untuk default M-!
, saya terbuka untuk saran tentang bagaimana untuk mengubah M-!
menjadi sesuatu yang lain (apa yang secara fungsional setara terlepas dari trik ini).
&
ke akhir regularshell-command
(M-!
) akan menjadikannya tidak sinkron. Tentu saja, Anda harus melakukan ini sebelum menjalankan perintah, tetapi setidaknya Anda dapat menggunakan pengikat kunci yang sama.M-!
keasync-shell-command
. :-) Sepertinya satu-satunya hal yang Anda kehilangan adalah mendapatkan output di area gema ketika cukup pendek.async-shell-command
saja. Itu menambahkan sebuah&
ke akhirCOMMAND
string dan mengeksekusishell-command
.Jawaban:
Saya curiga tidak ada trik seperti itu. Masalahnya adalah bahwa perintah shell sinkron (yang sebenarnya
call-process-region
) memblokir loop peristiwa emacs. Satu-satunya cara untuk memutusnya adalah dengan mematikan proses dengan sinyal USR1 atau USR2 atau lakukan C-g. (Mungkin ada cara lain, tapi itulah yang saya lakukan).Ini berarti tidak ada yang dapat Anda lakukan karena Anda tidak memiliki cara untuk menjalankan trik, karena Emacs tidak memproses input saat loop acara terhenti.
Satu hal yang dapat Anda lakukan hanyalah menukar kunci:
sumber