26 |
|
|
27 |
;; This package provides a major mode for editing Prolog. It knows |
;; This package provides a major mode for editing Prolog. It knows |
28 |
;; about Prolog syntax and comments, and can send regions to an inferior |
;; about Prolog syntax and comments, and can send regions to an inferior |
29 |
;; Prolog interpreter process. |
;; Prolog interpreter process. Font locking is tuned towards GNU Prolog. |
30 |
|
|
31 |
;;; Code: |
;;; Code: |
32 |
|
|
38 |
"Major mode for editing and running Prolog under Emacs" |
"Major mode for editing and running Prolog under Emacs" |
39 |
:group 'languages) |
:group 'languages) |
40 |
|
|
41 |
|
|
42 |
(defcustom prolog-program-name "prolog" |
(defcustom prolog-program-name "prolog" |
43 |
"*Program name for invoking an inferior Prolog with `run-prolog'." |
"*Program name for invoking an inferior Prolog with `run-prolog'." |
44 |
:type 'string |
:type 'string |
65 |
:type 'integer |
:type 'integer |
66 |
:group 'prolog) |
:group 'prolog) |
67 |
|
|
68 |
|
(defvar prolog-font-lock-keywords |
69 |
|
'(("\\(#[<=]=>\\|:-\\)\\|\\(#=\\)\\|\\(#[#<>\\/][=\\/]*\\|!\\)" |
70 |
|
0 font-lock-keyword-face) |
71 |
|
("\\<\\(is\\|write\\|nl\\|read_\\sw+\\)\\>" |
72 |
|
1 font-lock-keyword-face) |
73 |
|
("^\\(\\sw+\\)\\s-*\\((\\(.+\\))\\)*" |
74 |
|
(1 font-lock-function-name-face) |
75 |
|
(3 font-lock-variable-name-face))) |
76 |
|
"Font-lock keywords for Prolog mode.") |
77 |
|
|
78 |
(if prolog-mode-syntax-table |
(if prolog-mode-syntax-table |
79 |
() |
() |
80 |
(let ((table (make-syntax-table))) |
(let ((table (make-syntax-table))) |
81 |
(modify-syntax-entry ?_ "w" table) |
(modify-syntax-entry ?_ "w" table) |
82 |
(modify-syntax-entry ?\\ "\\" table) |
(modify-syntax-entry ?\\ "\\" table) |
83 |
(modify-syntax-entry ?/ "." table) |
(modify-syntax-entry ?/ ". 14" table) |
84 |
(modify-syntax-entry ?* "." table) |
(modify-syntax-entry ?* ". 23" table) |
85 |
(modify-syntax-entry ?+ "." table) |
(modify-syntax-entry ?+ "." table) |
86 |
(modify-syntax-entry ?- "." table) |
(modify-syntax-entry ?- "." table) |
87 |
(modify-syntax-entry ?= "." table) |
(modify-syntax-entry ?= "." table) |
139 |
(setq major-mode 'prolog-mode) |
(setq major-mode 'prolog-mode) |
140 |
(setq mode-name "Prolog") |
(setq mode-name "Prolog") |
141 |
(prolog-mode-variables) |
(prolog-mode-variables) |
142 |
|
;; font lock |
143 |
|
(setq font-lock-defaults '(prolog-font-lock-keywords |
144 |
|
nil nil nil |
145 |
|
beginning-of-line)) |
146 |
(run-hooks 'prolog-mode-hook)) |
(run-hooks 'prolog-mode-hook)) |
147 |
|
|
148 |
(defun prolog-indent-line (&optional whole-exp) |
(defun prolog-indent-line (&optional whole-exp) |