Możesz zmontować makro edycji emacsa („edytowanie makr” to nazwa, z której pochodzi nazwa „emacs”) oraz polecenia umieszczania makr klawiatury, które uruchamiają skrypty Gnu Bash lub inne programy powłoki i tworzą skrypty, które wysyłają zapytanie do użytkownika o Y lub N odpowiedzi.
Aby utworzyć makro, zrobiłbyś coś takiego:
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 )
Zapisz makro i umieść je w programie lisp emacs, który ładujesz do ponownego użycia.
Makro byłoby oczywiście użyteczne od tego momentu w emacs i / lub można uruchomić całość jako plik wsadowy z wiersza poleceń, jak każdy inny program.
Inne narzędzia i sugestie: spójrz na edycję rekursywną emacsa (która zatrzymuje i ponownie uruchamia makra i daje czas użytkownikowi na odpowiedź lub nawet na edycję) i wbudowaną funkcję wiadomości lub skrzynki emacsa lub tylko wiadomość funkcjonować. Możesz użyć tkquery (łatwego w konfiguracji programu Tcl / Tk, który pyta użytkowników o dane wejściowe) i / lub używać zenity do tworzenia prostych graficznych pól interakcji, które są łatwe do zaprogramowania i łatwe w użyciu dla użytkowników końcowych.
Możesz stworzyć procedurę pytań i odpowiedzi w Gnu Make i uruchomić ją w Gnu Emacs. Aby to zrobić i wejść w interakcję z uruchomioną sesją Make możesz użyć procesu-ciąg-wysyłania, taki jak ten fragment z jednego z moich plików makefile:
echo "(process-send-string \"*compilation*\" \" \\n \") "
To znaczy, możesz użyć funkcji emacs-string-string do komunikowania się i odpowiadania na pytania Y-or-N za pomocą uruchomionego programu Gnu Make, który działa w buforze Gnu Emacs.
Wreszcie, wracając do swojego pytania i zastanawiając się dlaczego xterm -e <your-program>
szybko się kończy: możesz po prostu robić takie rzeczy emacs -l <emacs-lisp-file-with-question-and-answer-macro-in-it> & disown
i / lub xterm -e <your-program-which-queries-the-end-users> & disown
. Ale to zależy od tego, jak chcesz uruchomić program, jako proces synchroniczny lub asynchroniczny; Mam na myśli, czy chcesz zablokować uruchamianie programu, gdy użytkownik końcowy odpowiada na pytania, czy nie?
Z tymi narzędziami w ręku myślę, że możesz dostać to, co chcesz z Gnu Emacsem; a ponieważ Gnu Emacs jest rozszerzalny, możesz go z pewnością zrobić tak, jak chcesz - jeśli go rozszerzysz, programując samemu.