Ketika saya menjalankannya M-x compile
memunculkan subkulit baru untuk menjalankan perintah kompilasi saya. Segera setelah perintah kompilasi kembali, proses shell terbunuh. Saya dapat melihat mengapa hal ini diinginkan dalam kebanyakan kasus, tetapi saya saat ini dalam situasi di mana itu tidak membantu.
Saya bekerja di lingkungan build khusus sekarang yang mengharuskan saya mengambil beberapa langkah awal untuk mengatur build sebelum menjalankan compiler. Selama lingkungan masih ada, saya hanya perlu melakukan langkah-langkah pengaturan sekali. Tetapi ketika saya menggunakannya M-x compile
berarti saya harus melakukan langkah-langkah setiap kali saya ingin mengkompilasi atau mengkompilasi ulang.
Apakah ada cara agar saya dapat menelurkan subkulit yang akan bertahan di latar belakang? Satu itu M-x compile
dan M-x gdb
dapat menggunakan setiap kali mereka perlu menjalankan proses shell?
Motivasi:
Saya punya program (yang akan kita sebut xcc
) yang membangun kode C untuk platform khusus. Untuk membangun kode saya, saya mulai xcc
dari tcsh
prompt:
$ xcc
Program ini membutuhkan waktu 10+ detik untuk memuat, dan kemudian saya dapat memasukkan perintah pada prompt interaktifnya
xcc>> add target myprogram
xcc>> set source myprogram $PROJDIR/src/
xcc>> set includes myprogram $PROJDIR/include/
xcc>> set type myprogram primitive
xcc>> set inputs myprogram int8,int8
xcc>> set outputs myprogram fix16,fix16
xcc>> build myprogram
Langkah-langkah di atas dapat dibangun menjadi makro kustom buildmyprog.macro
sehingga saya bisa menjalankannya langsung dari shell, atau dari emacs denganM-x compile
$ xcc buildmyprog.macro
Masalah utama dengan pendekatan ini adalah kenyataan bahwa xcc
program butuh 10 detik untuk memuat, bahkan sebelum kompilasi dimulai. Saya cukup lelah menunggu 10 detik tambahan setiap kali saya kompilasi bahwa saya sudah mulai berjalan xcc
di ansi-term
dalam buffer terpisah. Sekarang setelah saya memodifikasi dan menyimpan kode, saya beralih ke ansi-term
buffer dan menjalankan
xcc>> build myprogram
Ini berfungsi dengan baik, tetapi setiap kali saya beralih ke buffer itu saya pikir, "Bukankah lebih bagus jika saya bisa mendorong F7
dan perintah kompilasi saya akan dikirim ke instance yang sudah berjalan xcc
?"
comint-send-input
. Itu pada dasarnya apa yang Anda lakukan dengan tangan, mengubahnya menjadi elisp seharusnya tidak terlalu sulit (terutama dibandingkan dengan menyiapkan comint).