Function: prolog-inferior-self-insert-command
prolog-inferior-self-insert-command is an interactive and
byte-compiled function defined in prolog.el.gz.
Signature
(prolog-inferior-self-insert-command)
Documentation
Insert the char in the buffer or pass it directly to the process.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/prolog.el.gz
(defun prolog-inferior-self-insert-command ()
"Insert the char in the buffer or pass it directly to the process."
(interactive)
(let* ((proc (get-buffer-process (current-buffer)))
(pmark (and proc (marker-position (process-mark proc)))))
;; FIXME: the same treatment would be needed for SWI-Prolog, but I can't
;; seem to find any way for Emacs to figure out when to use it because
;; SWI doesn't include a " ? " or some such recognizable marker.
(if (and (eq prolog-system 'gnu)
pmark
(null current-prefix-arg)
(eobp)
(eq (point) pmark)
(save-excursion
(goto-char (- pmark 3))
;; FIXME: check this comes from the process's output, maybe?
(looking-at " \\? ")))
;; This is GNU prolog waiting to know whether you want more answers
;; or not (or abort, etc...). The answer is a single char, not
;; a line, so pass this char directly rather than wait for RET to
;; send a whole line.
(comint-send-string proc (string last-command-event))
(call-interactively 'self-insert-command))))