]> code.delx.au - gnu-emacs/commitdiff
Port run-prolog EMACS to SWI-Prolog 7.2.3
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 11 Apr 2016 05:47:03 +0000 (22:47 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 11 Apr 2016 05:47:21 +0000 (22:47 -0700)
* lisp/progmodes/prolog.el (prolog-ensure-process):
Work around incompatibility of SWI-Prolog 7.2.3 and earlier
with the new way of dealing with the EMACS and INSIDE_EMACS
environment variables.

lisp/progmodes/prolog.el

index 9ee405b31e1ecd71b94533168d6f592a8becb8ba..212a5fa69abaa27ed641d16502b193aa466588a9 100644 (file)
@@ -1374,8 +1374,20 @@ the variable `prolog-prompt-regexp'."
       ()
     (with-current-buffer (get-buffer-create "*prolog*")
       (prolog-inferior-mode)
-      (apply 'make-comint-in-buffer "prolog" (current-buffer)
-             (prolog-program-name) nil (prolog-program-switches))
+
+      ;; The "INFERIOR=yes" hack is for SWI-Prolog 7.2.3 and earlier,
+      ;; which assumes it is running under Emacs if either INFERIOR=yes or
+      ;; if EMACS is set to a nonempty value.  The EMACS setting is
+      ;; obsolescent, so set INFERIOR.  Newer versions of SWI-Prolog should
+      ;; know about INSIDE_EMACS (which replaced EMACS) and should not need
+      ;; this hack.
+      (let ((process-environment
+            (if (getenv "INFERIOR")
+                process-environment
+              (cons "INFERIOR=yes" process-environment))))
+       (apply 'make-comint-in-buffer "prolog" (current-buffer)
+              (prolog-program-name) nil (prolog-program-switches)))
+
       (unless prolog-system
         ;; Setup auto-detection.
         (setq-local