Commit 23f2d048 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(inferior-prolog-flavor): New var left out of previous commit.

(inferior-prolog-guess-flavor): New fun left out of previous commit.
(prolog-consult-region-and-go): Don't hard code "*prolog*" and don't
burp in dedicated windows.
(inferior-prolog-self-insert-command): New command.
(inferior-prolog-mode-map): Use it.
parent dad2e044
2006-09-07 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/prolog.el (inferior-prolog-flavor): New var left out of
previous commit.
(inferior-prolog-guess-flavor): New fun left out of previous commit.
(prolog-consult-region-and-go): Don't hard code "*prolog*" and don't
burp in dedicated windows.
(inferior-prolog-self-insert-command): New command.
(inferior-prolog-mode-map): Use it.
2006-09-07 Reiner Steib <Reiner.Steib@gmx.de> 2006-09-07 Reiner Steib <Reiner.Steib@gmx.de>
   
* international/latexenc.el (latex-inputenc-coding-alist): Add cp858. * international/latexenc.el (latex-inputenc-coding-alist): Add cp858.
......
...@@ -233,6 +233,8 @@ rigidly along with this one (not yet)." ...@@ -233,6 +233,8 @@ rigidly along with this one (not yet)."
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
;; This map will inherit from `comint-mode-map' when entering ;; This map will inherit from `comint-mode-map' when entering
;; inferior-prolog-mode. ;; inferior-prolog-mode.
(define-key map [remap self-insert-command]
'inferior-prolog-self-insert-command)
map)) map))
(defvar inferior-prolog-mode-syntax-table prolog-mode-syntax-table) (defvar inferior-prolog-mode-syntax-table prolog-mode-syntax-table)
...@@ -300,6 +302,27 @@ Return not at end copies rest of line to end and sends it. ...@@ -300,6 +302,27 @@ Return not at end copies rest of line to end and sends it.
;; Try again. ;; Try again.
(inferior-prolog-process)))) (inferior-prolog-process))))
(defvar inferior-prolog-flavor 'unknown
"Either a symbol or a buffer position offset by one.
If a buffer position, the flavor has not been determined yet and
it is expected that the process's output has been or will
be inserted at that position plus one.")
(defun inferior-prolog-guess-flavor (&optional ignored)
(save-excursion
(goto-char (1+ inferior-prolog-flavor))
(setq inferior-prolog-flavor
(cond
((looking-at "GNU Prolog") 'gnu)
((looking-at "Welcome to SWI-Prolog") 'swi)
((looking-at ".*\n") 'unknown) ;There's at least one line.
(t inferior-prolog-flavor))))
(when (symbolp inferior-prolog-flavor)
(remove-hook 'comint-output-filter-functions
'inferior-prolog-guess-flavor t)
(if (eq inferior-prolog-flavor 'gnu)
(set (make-local-variable 'comint-process-echoes) t))))
;;;###autoload ;;;###autoload
(defalias 'run-prolog 'switch-to-prolog) (defalias 'run-prolog 'switch-to-prolog)
;;;###autoload ;;;###autoload
...@@ -318,6 +341,22 @@ With prefix argument \\[universal-prefix], prompt for the program to use." ...@@ -318,6 +341,22 @@ With prefix argument \\[universal-prefix], prompt for the program to use."
(inferior-prolog-run name)) (inferior-prolog-run name))
(pop-to-buffer inferior-prolog-buffer)) (pop-to-buffer inferior-prolog-buffer))
(defun inferior-prolog-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)))))
(if (and (eq inferior-prolog-flavor 'gnu)
pmark
(null current-prefix-arg)
(eobp)
(eq (point) pmark)
(save-excursion
(goto-char (- pmark 3))
(looking-at " \\? ")))
(comint-send-string proc (string last-command-char))
(call-interactively 'self-insert-command))))
(defun prolog-consult-region (compile beg end) (defun prolog-consult-region (compile beg end)
"Send the region to the Prolog process made by \"M-x run-prolog\". "Send the region to the Prolog process made by \"M-x run-prolog\".
If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode." If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode."
...@@ -338,7 +377,7 @@ If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode." ...@@ -338,7 +377,7 @@ If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode."
If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode." If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode."
(interactive "P\nr") (interactive "P\nr")
(prolog-consult-region compile beg end) (prolog-consult-region compile beg end)
(switch-to-buffer "*prolog*")) (pop-to-buffer inferior-prolog-buffer))
(defun inferior-prolog-load-file () (defun inferior-prolog-load-file ()
"Pass the current buffer's file to the inferior prolog process." "Pass the current buffer's file to the inferior prolog process."
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment