From bmastenbrook at common-lisp.net Mon Aug 14 21:33:00 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 17:33:00 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814213300.D524019008@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv16331
Modified Files:
coloring-css.lisp coloring-types.lisp
Log Message:
Erlang syntax highlighting (thanks to Peter Kazmier)
--- /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2004/09/25 20:20:27 1.6
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:33:00 1.7
@@ -12,6 +12,11 @@
.keyword { color : #770000; background-color : inherit; }
.comment { color : #007777; background-color : inherit; }
.string { color : #777777; background-color : inherit; }
+.atom { color : #314F4F; background-color : inherit; }
+.macro { color : #FF6347; background-color : inherit; }
+.variable { color : #458B74; background-color : inherit; }
+.function { color : #B03060; background-color : inherit; }
+.attribute { color : #FF6347; background-color : inherit; }
.character { color : #0055AA; background-color : inherit; }
.syntaxerror { color : #FF0000; background-color : inherit; }
span.paren1:hover { color : inherit; background-color : #BAFFFF; }
--- /project/lisppaste/cvsroot/lisppaste2/coloring-types.lisp 2006/08/11 18:56:37 1.18
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-types.lisp 2006/08/14 21:33:00 1.19
@@ -495,6 +495,180 @@
(setf is-keyword (not is-keyword))))))))
+(defvar *erlang-open-parens* "([{")
+(defvar *erlang-close-parens* ")]}")
+
+(defvar *erlang-reserved-words*
+ '("after" "andalso" "begin" "catch" "case" "end" "fun" "if" "of" "orelse"
+ "receive" "try" "when" "query" "is_atom" "is_binary" "is_constant"
+ "is_float" "is_function" "is_integer" "is_list" "is_number" "is_pid"
+ "is_port" "is_reference" "is_tuple" "is_record" "abs" "element" "float"
+ "hd" "tl" "length" "node" "round" "self" "size" "trunc" "alive" "apply"
+ "atom_to_list" "binary_to_list" "binary_to_term" "concat_binary"
+ "date" "disconnect_node" "erase" "exit" "float_to_list" "garbage_collect"
+ "get" "get_keys" "group_leader" "halt" "integer_to_list" "internal_bif"
+ "link" "list_to_atom" "list_to_binary" "list_to_float" "list_to_integer"
+ "make_ref" "node_link" "node_unlink" "notalive" "open_port" "pid_to_list"
+ "process_flag" "process_info" "processes" "put" "register" "registered"
+ "setelement" "spawn" "spawn_link" "split_binary" "statistics"
+ "term_to_binary" "time" "throw" "trace" "trunc" "tuple_to_list"
+ "unlink" "unregister" "whereis"))
+
+(defparameter *erlang-begin-word* "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789")
+(defparameter *erlang-begin-fun* "abcdefghijklmnopqrstuvwxyz")
+(defparameter *erlang-begin-var* "ABCDEFGHIJKLMNOPQRSTUVWXYZ_")
+(defparameter *erlang-terminators* '(#\space #\return #\tab #\newline #\. #\; #\, #\/ #\- #\* #\+ #\( #\) #\' #\" #\[ #\] #\< #\> #\{ #\}))
+
+(define-coloring-type :erlang "Erlang"
+ :modes (:first-char-on-line :normal :char :comment :word-ish :variable :atom :paren-ish :string :single-escape :attribute :function :macro)
+ :default-mode :first-char-on-line
+ :transitions
+ (((:normal :paren-ish)
+ ((scan "%")
+ (set-mode :comment
+ :until (scan #\newline)))
+ ((scan-any *erlang-begin-var*)
+ (set-mode :variable
+ :until (scan-any *erlang-terminators*)
+ :advancing nil))
+ ((scan-any *erlang-begin-word*)
+ (set-mode :word-ish
+ :until (scan-any *erlang-terminators*)
+ :advancing nil))
+ ((or
+ (scan-any *erlang-open-parens*)
+ (scan-any *erlang-close-parens*))
+ (set-mode :paren-ish
+ :until (advance 1)
+ :advancing nil))
+ ((scan #\")
+ (set-mode :string
+ :until (scan #\")))
+ ((scan #\')
+ (set-mode :atom
+ :until (scan #\')))
+ ((scan #\?)
+ (set-mode :macro
+ :until (scan-any *erlang-terminators*)))
+ ((scan #\$)
+ (set-mode :char
+ :until (scan-any *erlang-terminators*)))
+ ((scan #\newline)
+ (set-mode :first-char-on-line)))
+
+ ((:function :attribute)
+ ((or
+ (scan-any *erlang-open-parens*)
+ (scan-any *erlang-close-parens*))
+ (set-mode :paren-ish
+ :until (advance 1)
+ :advancing nil))
+ ((scan-any *erlang-terminators*)
+ (set-mode :normal
+ :until (scan #\newline))))
+
+ (:first-char-on-line
+ ((scan "%")
+ (set-mode :comment
+ :until (scan #\newline)))
+ ((scan-any *erlang-begin-fun*)
+ (set-mode :function
+ :until (scan #\newline)
+ :advancing nil))
+ ((scan "-")
+ (set-mode :attribute
+ :until (scan #\newline)
+ :advancing nil))
+ ((advance 1)
+ (set-mode :normal
+ :until (scan #\newline))))
+ (:string
+ ((scan #\\)
+ (set-mode :single-escape
+ :until (advance 1)))))
+ :formatter-variables
+ ((paren-counter 0))
+ :formatter-after-hook (lambda nil
+ (format nil "~{~A~}"
+ (loop for i from paren-counter downto 1
+ collect "")))
+ :formatters
+ (((:normal :first-char-on-line)
+ (lambda (type s)
+ (declare (ignore type))
+ s))
+ (:comment
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil ""
+ s)))
+ (:string
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:variable
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:function
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:attribute
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:macro
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:atom
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:char
+ (lambda (type s)
+ (declare (ignore type))
+ (format nil "~A"
+ s)))
+ (:single-escape
+ (lambda (type s)
+ (call-formatter (cdr type) s)))
+ (:paren-ish
+ (lambda (type s)
+ (declare (ignore type))
+ (let ((open nil)
+ (count 0))
+ (if (eql (length s) 1)
+ (progn
+ (when (member (elt s 0) (coerce *erlang-open-parens* 'list))
+ (setf open t)
+ (setf count (mod paren-counter 6))
+ (incf paren-counter))
+ (when (member (elt s 0) (coerce *erlang-close-parens* 'list))
+ (setf open nil)
+ (decf paren-counter)
+ (setf count (mod paren-counter 6)))
+ (if open
+ (format nil "~A"
+ (1+ count) s *css-background-class*)
+ (format nil "~A"
+ s)))
+ s))))
+ (:word-ish
+ (lambda (type s)
+ (declare (ignore type))
+ (if (member s *erlang-reserved-words* :test #'string=)
+ (format nil "~A" s)
+ s)))
+ ))
+
(defvar *python-reserved-words*
'("and" "assert" "break" "class" "continue"
"def" "del" "elif" "else" "except"
From bmastenbrook at common-lisp.net Mon Aug 14 21:34:02 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 17:34:02 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814213402.8DA0719009@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv16440
Modified Files:
coloring-types.lisp
Log Message:
Add autodetection for Erlang syntax coloring
--- /project/lisppaste/cvsroot/lisppaste2/coloring-types.lisp 2006/08/14 21:33:00 1.19
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-types.lisp 2006/08/14 21:34:02 1.20
@@ -520,6 +520,8 @@
(defparameter *erlang-terminators* '(#\space #\return #\tab #\newline #\. #\; #\, #\/ #\- #\* #\+ #\( #\) #\' #\" #\[ #\] #\< #\> #\{ #\}))
(define-coloring-type :erlang "Erlang"
+ :autodetect (lambda (text)
+ (search "erlang" text :test #'char=))
:modes (:first-char-on-line :normal :char :comment :word-ish :variable :atom :paren-ish :string :single-escape :attribute :function :macro)
:default-mode :first-char-on-line
:transitions
From bmastenbrook at common-lisp.net Mon Aug 14 21:57:49 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 17:57:49 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814215749.93CA52608B@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv23368
Modified Files:
coloring-css.lisp
Log Message:
Make the new colors a little more unambiguous
--- /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:33:00 1.7
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:57:49 1.8
@@ -13,10 +13,10 @@
.comment { color : #007777; background-color : inherit; }
.string { color : #777777; background-color : inherit; }
.atom { color : #314F4F; background-color : inherit; }
-.macro { color : #FF6347; background-color : inherit; }
-.variable { color : #458B74; background-color : inherit; }
-.function { color : #B03060; background-color : inherit; }
-.attribute { color : #FF6347; background-color : inherit; }
+.macro { color : #EE5C42; background-color : inherit; }
+.variable { color : #36648B; background-color : inherit; }
+.function { color : #8B0850; background-color : inherit; }
+.attribute { color : #36648B; background-color : inherit; }
.character { color : #0055AA; background-color : inherit; }
.syntaxerror { color : #FF0000; background-color : inherit; }
span.paren1:hover { color : inherit; background-color : #BAFFFF; }
From bmastenbrook at common-lisp.net Mon Aug 14 21:59:33 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 17:59:33 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814215933.8C6462817D@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv23522
Modified Files:
coloring-css.lisp
Log Message:
Oops. Fix which class .macro is shared with.
--- /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:57:49 1.8
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:59:33 1.9
@@ -16,7 +16,7 @@
.macro { color : #EE5C42; background-color : inherit; }
.variable { color : #36648B; background-color : inherit; }
.function { color : #8B0850; background-color : inherit; }
-.attribute { color : #36648B; background-color : inherit; }
+.attribute { color : #EE5C42; background-color : inherit; }
.character { color : #0055AA; background-color : inherit; }
.syntaxerror { color : #FF0000; background-color : inherit; }
span.paren1:hover { color : inherit; background-color : #BAFFFF; }
From bmastenbrook at common-lisp.net Mon Aug 14 22:06:07 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 18:06:07 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814220607.BDF5536014@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv27027
Modified Files:
coloring-css.lisp
Log Message:
One more try at disambiguating the colors.
--- /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 21:59:33 1.9
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 22:06:06 1.10
@@ -13,9 +13,9 @@
.comment { color : #007777; background-color : inherit; }
.string { color : #777777; background-color : inherit; }
.atom { color : #314F4F; background-color : inherit; }
-.macro { color : #EE5C42; background-color : inherit; }
+.macro { color : #FF5000; background-color : inherit; }
.variable { color : #36648B; background-color : inherit; }
-.function { color : #8B0850; background-color : inherit; }
+.function { color : #8B4789; background-color : inherit; }
.attribute { color : #EE5C42; background-color : inherit; }
.character { color : #0055AA; background-color : inherit; }
.syntaxerror { color : #FF0000; background-color : inherit; }
From bmastenbrook at common-lisp.net Mon Aug 14 22:07:31 2006
From: bmastenbrook at common-lisp.net (bmastenbrook)
Date: Mon, 14 Aug 2006 18:07:31 -0400 (EDT)
Subject: [Lisppaste-cvs] CVS lisppaste2
Message-ID: <20060814220731.43EB23700B@common-lisp.net>
Update of /project/lisppaste/cvsroot/lisppaste2
In directory clnet:/tmp/cvs-serv27177
Modified Files:
coloring-css.lisp
Log Message:
And let's get it right this time...
--- /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 22:06:06 1.10
+++ /project/lisppaste/cvsroot/lisppaste2/coloring-css.lisp 2006/08/14 22:07:31 1.11
@@ -16,7 +16,7 @@
.macro { color : #FF5000; background-color : inherit; }
.variable { color : #36648B; background-color : inherit; }
.function { color : #8B4789; background-color : inherit; }
-.attribute { color : #EE5C42; background-color : inherit; }
+.attribute { color : #FF5000; background-color : inherit; }
.character { color : #0055AA; background-color : inherit; }
.syntaxerror { color : #FF0000; background-color : inherit; }
span.paren1:hover { color : inherit; background-color : #BAFFFF; }