Ασύγχρονες διεργασίες στον επεξεργαστή κειμένου 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