Ketika saya menjalankannya M-x compilememunculkan 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 compileberarti 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 compiledan M-x gdbdapat 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 xccdari tcshprompt:
$ 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.macrosehingga saya bisa menjalankannya langsung dari shell, atau dari emacs denganM-x compile
$ xcc buildmyprog.macro
Masalah utama dengan pendekatan ini adalah kenyataan bahwa xccprogram 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 xccdi ansi-termdalam buffer terpisah. Sekarang setelah saya memodifikasi dan menyimpan kode, saya beralih ke ansi-termbuffer 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 F7dan 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).