Anda dapat membuat makro pengeditan emacs ("pengeditan makro" adalah asal nama "emacs") dan di keyboard makro put perintah yang menjalankan skrip Gnu Bash atau program shell lainnya dan membuat skrip yang meminta pengguna untuk Y atau N jawaban.
Jadi untuk membuat makro, Anda akan melakukan sesuatu seperti ini:
Cx (
Mx new-frame return
Mx shell return (or just Mx eshell return--to use the emacs built-in shell)
bash <bash-program-that-queries-end-user-for-Y-or-N-answers> &
Mx delete-frame
Cx )
Simpan makro dan masukkan ke dalam program emacs lisp yang Anda muat untuk digunakan kembali.
Makro tentu saja dapat digunakan mulai saat itu di dalam emacs dan / atau Anda dapat menjalankan semuanya sebagai file batch, dari baris perintah, seperti program lainnya.
Alat dan saran lain: Lihatlah emacs pengeditan rekursif (yang berhenti dan memulai kembali makro dan memberikan waktu bagi pengguna akhir untuk menjawab pertanyaan atau bahkan mengedit hal-hal) dan emacs built-in fungsi pesan-atau-kotak atau hanya pesan fungsi. Anda dapat menggunakan tkquery (program Tcl / Tk yang mudah diatur yang meminta pengguna untuk memasukkan data) dan / atau menggunakan zenity untuk membuat kotak interaksi grafis sederhana yang mudah diprogram dan mudah digunakan oleh pengguna akhir.
Anda dapat membuat rutinitas tanya jawab di Gnu Make dan jalankan di dalam Gnu Emacs. Untuk melakukan ini dan berinteraksi dengan sesi Make yang sedang berjalan, Anda bisa menggunakan proses-send-string seperti kutipan ini dari salah satu makefile saya:
echo "(process-send-string \"*compilation*\" \" \\n \") "
Maksud saya, Anda bisa menggunakan fungsi proses-send-string emacs untuk berkomunikasi dan menjawab pertanyaan Y-atau-N dengan program Gnu Make yang berjalan di dalam buffer Gnu Emacs.
Terakhir, kembali ke pertanyaan Anda dan bertanya-tanya mengapa Anda xterm -e <your-program>
berhenti dengan cepat: Anda bisa melakukan hal-hal seperti emacs -l <emacs-lisp-file-with-question-and-answer-macro-in-it> & disown
dan / atau xterm -e <your-program-which-queries-the-end-users> & disown
. Tetapi ini tergantung pada bagaimana Anda ingin menjalankan program, sebagai proses sinkron atau asinkron; Maksud saya, apakah Anda ingin memblokir program agar tidak berjalan sementara pengguna akhir menjawab pertanyaan atau tidak?
Dengan alat ini di tangan saya pikir Anda bisa mendapatkan apa yang Anda inginkan dengan Gnu Emacs; dan, karena Gnu Emacs dapat dikembangkan, Anda tentu dapat melakukannya untuk melakukan apa pun yang Anda inginkan - jika Anda mengembangkannya dengan memprogramnya sendiri.