Logtalk 2.15.5 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@955 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
251
Logtalk/wenv/emacs/logtalk.el
Normal file
251
Logtalk/wenv/emacs/logtalk.el
Normal file
@@ -0,0 +1,251 @@
|
||||
;; logtalk.el -- font lock support for Logtalk (http://www.logtalk.org/)
|
||||
|
||||
;; Copyright (C) 2003 Paulo Moura
|
||||
|
||||
;; Author: Paulo Moura
|
||||
;; Creation date: November 15, 2003
|
||||
;; Last modification date: December 16, 2003
|
||||
;; Version: 0.4
|
||||
|
||||
;; Installation:
|
||||
;;
|
||||
;; Add the following lines in your Emacs init file, for example
|
||||
;; your ~/.emacs file.
|
||||
;;
|
||||
;; (add-hook 'logtalk-mode-hook 'my-logtalk-mode-hook)
|
||||
;;
|
||||
;; (defun my-logtalk-mode-hook ()
|
||||
;; (cond (window-system
|
||||
;; (require 'logtalk-font-lock)
|
||||
;; (turn-on-font-lock))))
|
||||
;;
|
||||
;; (setq font-lock-maximum-decoration t)
|
||||
;;
|
||||
;; (autoload 'logtalk-mode "logtalk" "Major mode for editing Logtalk programs." t)
|
||||
;; (setq auto-mode-alist (cons '("\\.lgt\\'" . logtalk-mode) auto-mode-alist))
|
||||
|
||||
|
||||
|
||||
;; setup
|
||||
|
||||
(defvar logtalk-mode-version "0.2"
|
||||
"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)
|
||||
logtalk-mode-syntax-table)
|
||||
"Syntax table for logtalk-mode")
|
||||
|
||||
|
||||
|
||||
;; create logtalk font-lock-faces
|
||||
|
||||
(make-face 'logtalk-directive-face)
|
||||
(set-face-foreground 'logtalk-directive-face "brown")
|
||||
|
||||
(make-face 'logtalk-built-in-predicate-face)
|
||||
(set-face-foreground 'logtalk-built-in-predicate-face "darkmagenta")
|
||||
|
||||
(make-face 'logtalk-built-in-method-face)
|
||||
(set-face-foreground 'logtalk-built-in-method-face "darkmagenta")
|
||||
|
||||
(make-face 'logtalk-message-operator-face)
|
||||
(set-face-foreground 'logtalk-message-operator-face "blue")
|
||||
|
||||
(make-face 'logtalk-string-face)
|
||||
(set-face-foreground 'logtalk-string-face "firebrick")
|
||||
|
||||
(make-face 'logtalk-number-face)
|
||||
(set-face-foreground 'logtalk-number-face "blue")
|
||||
|
||||
(make-face 'logtalk-comment-face)
|
||||
(set-face-foreground 'logtalk-comment-face "forest green")
|
||||
|
||||
|
||||
;; set the font-lock-comment-face to the logtalk-comment-face
|
||||
|
||||
(setq font-lock-comment-face 'logtalk-comment-face)
|
||||
|
||||
|
||||
;; set the font-lock-string-face to the logtalk-string-face
|
||||
|
||||
(setq font-lock-string-face 'logtalk-string-face)
|
||||
|
||||
|
||||
|
||||
(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)
|
||||
("\\(category\\|object\\|protocol\\)\\([(]\\)" 1 'logtalk-directive-face)
|
||||
("\\(p\\(?:r\\(?:ivate\\|otected\\)\\|ublic\\)\\)\\([(]\\)" 1 'logtalk-directive-face)
|
||||
("\\(calls\\|d\\(?:iscontiguous\\|ynamic\\)\\|in\\(?:fo\\|itialization\\)\\|m\\(?:\\(?:etapredicat\\|od\\)e\\)\\|op\\|uses\\)\\([(]\\)" 1 'logtalk-directive-face)
|
||||
("\\(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)
|
||||
("\\(phrase\\)\\([(]\\)" 1 'logtalk-built-in-method-face)
|
||||
))
|
||||
|
||||
|
||||
(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)
|
||||
("\\(extends_\\(?:object\\|protocol\\)\\|i\\(?:mp\\(?:lements_protocol\\|orts_category\\)\\|nstantiates_object\\)\\|specializes_object\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
("\\(abolish_events\\|current_event\\|define_events\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
("\\(\\(?:curren\\|se\\)t_logtalk_flag\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
("\\(logtalk_\\(?:compile\\|load\\|version\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
("\\(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)
|
||||
("\\(fail\\|true\\|!\\)" . 'logtalk-built-in-predicate-face)
|
||||
;;
|
||||
;; 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)
|
||||
;;
|
||||
;; evaluable functors:
|
||||
;;
|
||||
("\\(abs\\|ceiling\\|flo\\(?:at\\(?:_\\(?:\\(?:fractional\\|integer\\)_part\\)\\)?\\|or\\)\\|mod\\|r\\(?:em\\|ound\\)\\|sign\\|truncate\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
("//\\|[*+/-]" . 'logtalk-built-in-predicate-face)
|
||||
("\\([[:blank:]]\\)\\(rem\\|mod\\)\\([[:blank:]]\\)" 2 'logtalk-built-in-predicate-face)
|
||||
;;
|
||||
;; 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)
|
||||
("\\(at_end_of_stream\\)" . 'logtalk-built-in-predicate-face)
|
||||
;;
|
||||
;; character input/output:
|
||||
;;
|
||||
("\\(get_c\\(?:har\\|ode\\)\\|nl\\|p\\(?:eek_c\\(?:har\\|ode\\)\\|ut_c\\(?:har\\|ode\\)\\)\\)\\([(]\\)" 1 'logtalk-built-in-predicate-face)
|
||||
;;
|
||||
;; 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)
|
||||
("halt" . 'logtalk-built-in-predicate-face)
|
||||
;;
|
||||
;; 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:
|
||||
("/\\\\\\|<<\\|>>\\|\\\\/" . 'logtalk-built-in-predicate-face)
|
||||
("\\\\" . 'logtalk-built-in-predicate-face)
|
||||
))
|
||||
|
||||
|
||||
|
||||
(setq logtalk-font-lock-operators
|
||||
'(
|
||||
("::\\|\\^\\^\\|[{}]" . 'logtalk-message-operator-face)
|
||||
))
|
||||
|
||||
|
||||
|
||||
(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
|
||||
))
|
||||
|
||||
|
||||
|
||||
;; 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)
|
||||
Reference in New Issue
Block a user