* 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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).