all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run
@ 2021-01-20  8:26 Tim Lee
  2021-01-27  6:11 ` bug#46003: #46003: should this be a bug? k3tu0isui
  0 siblings, 1 reply; 3+ messages in thread
From: Tim Lee @ 2021-01-20  8:26 UTC (permalink / raw)
  To: 46003

I am using prolog-mode in Emacs 25.2. The following code shows that the
inferior prolog process is not available when prolog-inferior-mode-hook
is run:

(add-hook 'prolog-inferior-mode-hook
          (lambda ()
            (unless (get-buffer-process (current-buffer))
              (warn "NO PROCESS!"))))

When I have above in my ~/.emacs, and when I start the Prolog REPL using
M-x run-prolog, the warning "NO PROCESS!" will appear, showing that the
inferior prolog process in not available when the hook is run.

I don't get this problem with the inferior mode hooks of other
programming languages (e.g. inferior-python-mode-hook,
inferior-lisp-mode-hook, inferior-scheme-mode-hook, etc.); their process
is available when their hook is run. I assume that there is problem with
prolog-mode.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#46003: #46003: should this be a bug?
  2021-01-20  8:26 bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run Tim Lee
@ 2021-01-27  6:11 ` k3tu0isui
  2022-06-07 14:37   ` bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: k3tu0isui @ 2021-01-27  6:11 UTC (permalink / raw)
  To: progscriptclone; +Cc: 46003

Is it a requirement for a buffer in a inferior-mode to always have a
process? 
When you call run-prolog or prolog-consult-buffer, if a prolog process
is not running, a *prolog* buffer is created, prolog-inferior-mode is
activated in the buffer and THEN the process itself is run. Relevant code
from prolog-ensure-process function.

      (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)))

I assume this was required because (prolog-inferior-mode) sets up the
variables required for (prolog-program-name) and (prolog-program-switches).

If the relevant variables are inherited from the buffer from which run-prolog is
called then, this bug fix[1] will remove this dependency and prolog-inferior-mode
can be activated after the process is created.

[1]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45795





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run
  2021-01-27  6:11 ` bug#46003: #46003: should this be a bug? k3tu0isui
@ 2022-06-07 14:37   ` Lars Ingebrigtsen
  0 siblings, 0 replies; 3+ messages in thread
From: Lars Ingebrigtsen @ 2022-06-07 14:37 UTC (permalink / raw)
  To: k3tu0isui; +Cc: progscriptclone, 46003

k3tu0isui@gmail.com writes:

> I assume this was required because (prolog-inferior-mode) sets up the
> variables required for (prolog-program-name) and (prolog-program-switches).

Those are computed before we enter prolog-inferior-mode, though...  Oh,
because you've fixed that in an earlier applied patch.

> If the relevant variables are inherited from the buffer from which
> run-prolog is called then, this bug fix[1] will remove this dependency
> and prolog-inferior-mode can be activated after the process is
> created.
>
> [1]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45795

OK, then I'm applying this patch to Emacs 29, which should fix this bug
report:

diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 8382c4bd09..9598209f5e 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -1355,8 +1355,6 @@ prolog-ensure-process
         (error "This Prolog system has defined no interpreter"))
     (unless (comint-check-proc "*prolog*")
       (with-current-buffer (get-buffer-create "*prolog*")
-        (prolog-inferior-mode)
-
         ;; 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
@@ -1369,6 +1367,7 @@ prolog-ensure-process
 	         (cons "INFERIOR=yes" process-environment))))
 	  (apply 'make-comint-in-buffer "prolog" (current-buffer)
 	         pname nil pswitches))
+        (prolog-inferior-mode)
 
         (unless prolog-system
           ;; Setup auto-detection.



-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-06-07 14:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-20  8:26 bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run Tim Lee
2021-01-27  6:11 ` bug#46003: #46003: should this be a bug? k3tu0isui
2022-06-07 14:37   ` bug#46003: prolog-mode: inferior prolog process not available when prolog-inferior-mode-hook is run Lars Ingebrigtsen

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.