Ασύγχρονες διεργασίες στον επεξεργαστή κειμένου emacs
Stathis Kamperis
ekamperi at gmail.com
Sat Jun 21 00:39:39 EEST 2014
Καλησπέρα στη λίστα,
έχω κατασκευάσει μια συνάρτηση xelatex-compile-doc (filename) την
οποία καλώ μέσα από τον emacs για να μεταγλωττίσει το τρέχον αρχείο
.tex που επεξεργάζομαι.
Προς το παρόν χρησιμοποιώ για το σκοπό αυτό τη συνάρτηση call-process,
κάπως έτσι:
(let ((rv (call-process "xelatex" nil buf nil "-shell-escape"
(buffer-file-name))))
(if (eq rv 0)
(message "Document compiled successfully")
κλπ.
Το πρόβλημα είναι πως η call-process τρέχει σύγχρονα και δεν μου
επιτρέπει να συνεχίζω την επεξεργασία του αρχείου για όσο χρόνο
διαρκεί η μεταγλώττιση.
Αδύνατον δηλαδή να πληκτρίσω χαρακτήρες ή να πλοηγηθώ στο αρχείο με
pgup / pgdown. Έψαξα στην τεκμηρίωση του emacs και βρήκα την
start-process εδώ:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Asynchronous-Processes.html
Η start-process εκτελείται ασύγχρονα με αποτέλεσμα να ανταποκρίνεται
το UI του emacs στις ενέργειές μου κατά τη μεταγλώττιση, ωστόσο δεν
μπορώ να πάρω το return value της μεταγλώττισης (αν δηλαδή επέτυχε ή
όχι, και στην περίπτωση που όχι το μήνυμα σφάλματος).
Η ερώτηση μου επομένως είναι πώς θα μπορούσα να πετύχω το σκοπό μου
είτε με την start-process είτε με κάποια άλλη συνάρτηση ή τεχνοτροπία;
Ευχαριστώ,
-Στάθης
More information about the Linux-greek-users
mailing list