Saya telah mendefinisikan beberapa fungsi untuk menjalankan proses async background menggunakan async-shell-command
.emacs saya, tetapi setiap kali saya menjalankan perintah, sebuah jendela baru (bukan frame) dibuat dan buffer proses ditampilkan di sana. Bagaimana saya bisa menjalankan perintah tanpa buffer "pop up"?
23
start-process
perintah sudo? Saya mencoba memasukkan panggilan saya kestart-process
dalam(let ((default-directory "/sudo::")) ... )
tetapi tidak berhasil untuk saya."program"
dalam hal ini hanya nama program (misalnya nautilus, caja, firefox) dan"arg1 arg2 ..."
harus dalam argumen posisi keempatstart-process
. Saya mengetahuinya dengan membaca dokumentasi :)Seperti yang disebutkan Tikhon,
(start-process)
adalah jalan yang harus ditempuh. Jika Anda tidak ingin membuat buffer tetapi masih ingin bereaksi terhadap status proses latar belakang, Anda juga dapat menggunakan(set-process-sentinel)
. Ini contoh modifikasi yang saya ambil dariprojector
paket saya :Dari deskripsi fungsi Emacs:
The GNU halaman manual pada Proses ini cukup bagus untuk info lebih lanjut.
sumber
set-process-sentinel
yang sedikit lebih akurat? Saya mendapatkan ide umum memiliki fungsi yang mengelola proses, tetapi saya tidak sepenuhnya memahami semua detail. Terima kasih!M-x describe-function
masuk dan masuk,set-process-sentinel
Anda akan mendapatkan jawaban singkat dari dokumentasi Emacs: (set-process-sentinel PROCESS SENTINEL) Berikan PROCESS SENTINEL sentinel; nol untuk default. Sentinel disebut sebagai fungsi ketika proses berubah status. Itu mendapat dua argumen: proses, dan string yang menggambarkan perubahan.C-h f
...Tidak perlu mengubah cara Anda menjalankan perintah asinkron. Emacs memiliki kemampuan generik untuk memungkinkan Anda mengontrol di mana atau apakah buffer akan muncul, dengan mengubah struktur data tunggal, the
display-buffer-alist
.Dalam solusi di bawah ini, Anda dapat melihat bahwa fungsi aksi
display-buffer-no-window
(mis. Tidak ada pop-up) disetel untuk dikaitkan dengan buffer apa pun dengan nama awal*Asynchronous Shell Command*
(emacs menambahkan akhiran tambahan ketika diminta untuk membuat lebih dari satu).Untuk melihat daftar opsi tampilan lain yang tersedia, ketik
C-h f display-buffer
dan cari daftar "fungsi tindakan".sumber