| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | ;; logtalk.el -- font lock support for Logtalk (http://www.logtalk.org/) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-05-23 23:33:41 +00:00
										 |  |  | ;; Copyright (C) 2003-2005 Paulo Moura | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ;; Author: Paulo Moura | 
					
						
							|  |  |  | ;; Creation date: November 15, 2003 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:31:34 +00:00
										 |  |  | ;; Last modification date: February 24, 2006 | 
					
						
							|  |  |  | ;; Version: 0.71 | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ;; Installation: | 
					
						
							|  |  |  | ;; | 
					
						
							| 
									
										
										
										
											2004-03-23 17:51:43 +00:00
										 |  |  | ;; First, copy this file to the appropriated directory. For FSF Emacs this will  | 
					
						
							|  |  |  | ;; probably be /usr/local/share/emacs/site-lisp. For XEmacs, the directory is | 
					
						
							|  |  |  | ;; usully /usr/local/lib/xemacs/site-lisp. You may also copy the file to a  | 
					
						
							|  |  |  | ;; sub-directory in your home directory depending on your Emacs configuration. | 
					
						
							|  |  |  | ;; Type "C-h v load-path" in Emacs to find the list of paths that are searched | 
					
						
							|  |  |  | ;; for when looking for lisp files. | 
					
						
							|  |  |  | ;; | 
					
						
							|  |  |  | ;; Second, add the following lines in your Emacs init file, for example | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | ;; your ~/.emacs file: | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | ;; | 
					
						
							|  |  |  | ;; (autoload 'logtalk-mode "logtalk" "Major mode for editing Logtalk programs." t) | 
					
						
							|  |  |  | ;; (setq auto-mode-alist (cons '("\\.lgt\\'" . logtalk-mode) auto-mode-alist)) | 
					
						
							| 
									
										
										
										
											2004-03-03 04:07:59 +00:00
										 |  |  | ;; (setq auto-mode-alist (cons '("\\.config\\'" . logtalk-mode) auto-mode-alist)) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;; setup  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-24 18:00:21 +00:00
										 |  |  | (defvar logtalk-mode-version "0.7" | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 	"Logtalk mode version number") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (defvar logtalk-mode-hook nil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (defvar logtalk-mode-map nil)  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (if logtalk-mode-map nil | 
					
						
							|  |  |  | 	(setq logtalk-mode-map (make-keymap))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;; syntax highlighting  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (defvar logtalk-font-lock-keywords nil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;; syntax table  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (defvar logtalk-mode-syntax-table | 
					
						
							|  |  |  | 	(let ((logtalk-mode-syntax-table (make-syntax-table))) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?_ "w" logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?_ "_" logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?/ ". 14b" logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?* ". 23b" logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?% "<" logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 		(modify-syntax-entry ?\n ">" logtalk-mode-syntax-table) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		(modify-syntax-entry ?\' "w" logtalk-mode-syntax-table) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 	"Syntax table for logtalk-mode") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | ;; make logtalk font-lock-faces | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | (make-face 'logtalk-default-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | (make-face 'logtalk-directive-face) | 
					
						
							|  |  |  | (make-face 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | (make-face 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | (make-face 'logtalk-message-operator-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | (make-face 'logtalk-variable-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | (make-face 'logtalk-number-face) | 
					
						
							|  |  |  | (make-face 'logtalk-comment-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | (make-face 'logtalk-string-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | ;; set logtalk font-lock-faces | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | (copy-face 'default 'logtalk-default-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-keyword-face 'logtalk-directive-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-builtin-face 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-builtin-face 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-function-name-face 'logtalk-message-operator-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-variable-name-face 'logtalk-variable-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-constant-face 'logtalk-number-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-comment-face 'logtalk-comment-face) | 
					
						
							|  |  |  | (copy-face 'font-lock-string-face 'logtalk-string-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-strings | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\(\"\\([^\n\"]\\|\\\\\"\\)*\"\\)" 1 'logtalk-string-face) | 
					
						
							|  |  |  | 		("\\(^\\|[^0-9]\\)\\('\\([^\n']\\|\\\\'\\)*'\\)" 2 'logtalk-string-face) | 
					
						
							|  |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-directives | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\(\\(end_\\(?:category\\|object\\|protocol\\)\\)\\)\\([\.]\\)" 1 'logtalk-directive-face) | 
					
						
							| 
									
										
										
										
											2005-12-24 18:00:21 +00:00
										 |  |  | 		("\\(category\\|object\\|protocol\\|module\\)\\([(]\\)" 1 'logtalk-directive-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("\\(p\\(?:r\\(?:ivate\\|otected\\)\\|ublic\\)\\)\\([(]\\)" 1 'logtalk-directive-face) | 
					
						
							| 
									
										
										
										
											2005-12-24 18:00:21 +00:00
										 |  |  | 		("\\(alias\\|calls\\|d\\(?:iscontiguous\\|ynamic\\)\\|e\\(?:ncoding\\|xport\\)\\|in\\(?:fo\\|itialization\\)\\|meta_predicate\\|m\\(?:\\(?:etapredicat\\|od\\)e\\)\\|op\\|use\\(?:s\\|_module\\)\\)\\([(]\\)" 1 'logtalk-directive-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("\\(dynamic\\)\\([\.]\\)" 1 'logtalk-directive-face) | 
					
						
							|  |  |  | 		("\\(\\(?:extend\\|i\\(?:mp\\(?:\\(?:lemen\\|or\\)t\\)\\|nstantiate\\)\\|specialize\\)s\\)\\([(]\\)" 1 'logtalk-directive-face) | 
					
						
							|  |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-built-in-methods | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\(parameter\\|se\\(?:lf\\|nder\\)\\|this\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | 		("\\(current_predicate\\|predicate_property\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | 		("\\(a\\(?:bolish\\|ssert[az]\\)\\|clause\\|retract\\(?:all\\)?\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | 		("\\(bagof\\|f\\(?:\\(?:ind\\|or\\)all\\)\\|setof\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							|  |  |  | 		("\\(after\\|before\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							| 
									
										
										
										
											2006-03-26 17:31:34 +00:00
										 |  |  | 		("\\(phrase\\|expand_term\\|term_expansion\\)\\([(]\\)" 1 'logtalk-built-in-method-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-built-in-predicates | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\(current_\\(?:category\\|object\\|protocol\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\(create\\(?:_object\\|e_\\(?:category\\|protocol\\)\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\(abolish_\\(?:category\\|object\\|protocol\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\(\\(?:category\\|object\\|protocol\\)_property\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("\\(extends_\\(?:object\\|protocol\\)\\|i\\(?:mp\\(?:lements_protocol\\|orts_category\\)\\|nstantiates_class\\)\\|specializes_class\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("\\(abolish_events\\|current_event\\|define_events\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\(\\(?:curren\\|se\\)t_logtalk_flag\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2005-02-10 00:02:06 +00:00
										 |  |  | 		("\\(logtalk_\\(?:compile\\|load\\|version\\|library_path\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("\\(forall\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\(retractall\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; control constructs: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(ca\\(?:ll\\|tch\\)\\|throw\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("\\(fail\\|true\\|!\\|->\\|;\\)" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; logic and control: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(once\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\\\\\+\\|repeat" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; term testing: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(atom\\(?:ic\\)?\\|compound\\|float\\|\\(?:intege\\|n\\(?:onva\\|umbe\\)\\|va\\)r\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; term comparison: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("==\\|@\\(?:=<\\|>=\\|[<>]\\)\\|\\\\==" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; term creation and decomposition: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(arg\\|copy_term\\|functor\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("=\\.\\." . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; arithemtic evaluation: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\<\\is\\>" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; arithemtic comparison: | 
					
						
							|  |  |  | 		("=:=\\|@\\(?:=<\\|>=\\|[<>]\\)\\|\\\\==" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; term unification: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\\\?=" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		;; dcgs: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("-->" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; evaluable functors: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(abs\\|ceiling\\|flo\\(?:at\\(?:_\\(?:\\(?:fractional\\|integer\\)_part\\)\\)?\\|or\\)\\|mod\\|r\\(?:em\\|ound\\)\\|sign\\|truncate\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("//\\|[*/]" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\([^eE]\\)\\([+]\\)" 2 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\([^:eE]\\)\\([-]\\)" 2 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\<\\(rem\\|mod\\)\\>" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; other arithemtic functors: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(atan\\|cos\\|exp\\|log\\|s\\(?:in\\|qrt\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\*\\*" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; stream selection and control: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(at_end_of_stream\\|c\\(?:lose\\|urrent_\\(?:\\(?:in\\|out\\)put\\)\\)\\|flush_output\\|open\\|s\\(?:et_\\(?:input\\|output\\|stream_position\\)\\|tream_property\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("\\<\\(at_end_of_stream\\|flush_output\\)\\>" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; character input/output: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(get_c\\(?:har\\|ode\\)\\|nl\\|p\\(?:eek_c\\(?:har\\|ode\\)\\|ut_c\\(?:har\\|ode\\)\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("\\<nl\\>" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; byte input/output: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(\\(?:get\\|p\\(?:eek\\|ut\\)\\)_byte\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; term input/output: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(c\\(?:har_conversion\\|urrent_\\(?:char_conversion\\|op\\)\\)\\|op\\|read\\(?:_term\\)?\\|write\\(?:_\\(?:canonical\\|term\\)\\|q\\)?\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; implementation defined hooks functions: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(\\(?:curren\\|se\\)t_prolog_flag\\|halt\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		("\\<halt\\>" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; atomic term processing: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("\\(atom_\\(?:c\\(?:hars\\|o\\(?:des\\|ncat\\)\\)\\|length\\)\\|char_code\\|number_c\\(?:\\(?:har\\|ode\\)s\\)\\|sub_atom\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; bitwise functors: | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		;; | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("/\\\\\\|<<\\|>>\\|\\\\/" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 		("\\\\" . 'logtalk-built-in-predicate-face) | 
					
						
							|  |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-operators | 
					
						
							|  |  |  | 	'( | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; clause operator: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		(":-" . 'logtalk-default-face) | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		;; message sending operators: | 
					
						
							|  |  |  | 		;; | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 		("::\\|\\^\\^\\|[{}]" . 'logtalk-message-operator-face) | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 		;; mode operators: | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 		("[@?]" . 'logtalk-built-in-predicate-face) | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | (setq logtalk-font-lock-numbers | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\<\\(0x[a-fA-F0-9]+\\)\\>" 1 'logtalk-number-face) | 
					
						
							|  |  |  | 		("\\<\\(0o[0-7]+\\)\\>" 1 'logtalk-number-face) | 
					
						
							|  |  |  | 		("\\<\\(0b[0-1]+\\)\\>" 1 'logtalk-number-face) | 
					
						
							|  |  |  | 		("\\<\\(0['][a-zA-Z0-9]\\)\\>" 1 'logtalk-number-face) | 
					
						
							|  |  |  | 		("\\<\\([0-9]+\\([.][0-9]+\\)?\\([eE][+-][0-9]+\\)?\\)\\>" 1 'logtalk-number-face) | 
					
						
							|  |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-variables | 
					
						
							|  |  |  | 	'( | 
					
						
							|  |  |  | 		("\\<\\([_A-Z][a-zA-Z0-9_]*\\)\\>" 1 'logtalk-variable-face) | 
					
						
							|  |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | (setq logtalk-font-lock-keywords | 
					
						
							|  |  |  | 	(append | 
					
						
							|  |  |  | 		logtalk-font-lock-strings | 
					
						
							|  |  |  | 		logtalk-font-lock-directives | 
					
						
							|  |  |  | 		logtalk-font-lock-built-in-methods | 
					
						
							|  |  |  | 		logtalk-font-lock-built-in-predicates | 
					
						
							|  |  |  | 		logtalk-font-lock-operators | 
					
						
							| 
									
										
										
										
											2004-02-09 14:18:27 +00:00
										 |  |  | 		logtalk-font-lock-variables | 
					
						
							|  |  |  | 		logtalk-font-lock-numbers | 
					
						
							| 
									
										
										
										
											2003-12-30 13:33:51 +00:00
										 |  |  | 	)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;; entry function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (defun logtalk-mode () | 
					
						
							|  |  |  | 	"Major mode for editing Logtalk files" | 
					
						
							|  |  |  | 	(interactive) | 
					
						
							|  |  |  | 	(kill-all-local-variables) | 
					
						
							|  |  |  | 	(setq tab-width 4) | 
					
						
							|  |  |  | 	(set-syntax-table logtalk-mode-syntax-table) | 
					
						
							|  |  |  | 	(set (make-local-variable 'font-lock-defaults) '(logtalk-font-lock-keywords)) | 
					
						
							|  |  |  | 	(turn-on-font-lock) | 
					
						
							|  |  |  | 	(setq major-mode 'logtalk-mode) | 
					
						
							|  |  |  | 	(setq mode-name "Logtalk") | 
					
						
							|  |  |  | 	(run-hooks 'logtalk-mode-hook)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (provide 'logtalk-mode)  |