updated testsuite + added nano + joe

This commit is contained in:
Leon van Kammen 2025-06-20 12:34:13 +02:00
parent ceacb4fa41
commit 12f05205fa
181 changed files with 58641 additions and 7 deletions

14
joe/.env Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
dir=$(pwd)
# overlay our directories
test -f /.overlayfs || {
find . -type d -mindepth 1 | while read dir; do
cp -d -r ./$dir/* /$dir/.
done
echo 1 > /.overlayfs
echo "[i] imported overlay fs"
echo "[i] editor 'joe' installed" | logger
}

11
joe/build.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
set -e
name=joe
../build_nixpkg.sh $name
out=$(pwd)
set -x
rm -rf *.zip bin usr etc || true
cp -r result/{bin,etc} .
mkdir usr
cp -r result/share usr/.
zip -r package.$name.zip bin usr etc root .env

923
joe/etc/joe/ftyperc Normal file
View file

@ -0,0 +1,923 @@
File Type table. This is :included by the joerc file.
Scripts can look like this '#!/usr/bin/python' or this '#! /usr/bin/env python3'
A text file
[text]
No '.' in file name? Assume it's a text file and we want wordwrap on.
*
Text file.
*.txt
Not a text file
[not_text]
File name with '.'? It's probably not a text file.
*.*
-wordwrap
Diff
[diff]
*
+\? [A-Za-z]
+Index: [A-Za-z]
+Only in
+Nur in
+---
+\*\*\*
+[1-9][0-9]*[cda]
*.diff
*.patch
-syntax diff
Troff
[troff]
*.1
*.1.in
-wordwrap
-syntax troff
TeX
[tex]
*.tex
*.sty
-syntax tex
-tex_comment
-no_double_quoted
-wordwrap
News/mail files.
[email]
*.article*
*.followup
*.letter
NN newsreader
*tmp/nn.*
mail
*tmp/Re*
elm
*tmp/snd.*
dmail
*tmp/dmt*
pine
*tmp/pico.*
Mutt
*tmp/mutt-*
-wordwrap
-syntax mail
AVR assembly language
[avr]
*.avr
*.inc
-syntax avr
-autoindent
-wordwrap
-tab 8
Generic assembly language
[assembly]
*.asm
*.s
*.S
-highlighter_context
-wordwrap
-syntax asm
Mason (Perl in HTML)
[mason]
*.mas
-autoindent
-title
-syntax mason
-smarthome
-smartbacks
-highlighter_context
SML
[sml]
*.sml
-autoindent
-title
-syntax sml
-smarthome
-smartbacks
-istep 2
-highlighter_context
OCaml
[ocaml]
*.ml
OCaml language interface
*.mli
-autoindent
-title
-syntax ocaml
-smarthome
-smartbacks
-istep 2
-highlighter_context
Ruby
[ruby]
*.rb
*
+#![ ]*[^\n]*ruby[0-9.]*\>
*.gemspec
*Gemfile
*Rakefile
*Guardfile
*.rabl
-autoindent
-title
-pound_comment
-syntax ruby
-text_delimiters do=end
-highlighter_context
Perl
[perl]
*
+#![ ]*[^\n]*perl[0-9.]*\>
*.pl
*.pm
*.t
-autoindent
-title
-syntax perl
-smarthome
-smartbacks
-pound_comment
-single_quoted
-highlighter_context
SQL
[sql]
*.sql
-autoindent
-title
-syntax sql
-smarthome
-smartbacks
-purify
-single_quoted
-c_comment
-vhdl_comment
-cpp_comment
-text_delimiters BEGIN|Begin|begin=END|End|end
-cpara >#!;*/%
-highlighter_context
AWK
[awk]
*.awk
-autoindent
-title
-syntax awk
-smarthome
-smartbacks
-purify
-pound_comment
-highlighter_context
YACC
[yacc]
*.y
-autoindent
-title
-syntax c
-highlighter_context
-smarthome
-smartbacks
-purify
-single_quoted
-c_comment
-cpp_comment
-text_delimiters #if|#ifdef|#ifndef=#elif=#else=#endif
-cpara >#!;*/%
Lex
[lex]
*.l
*.lex
-autoindent
-title
-syntax c
-highlighter_context
-smarthome
-smartbacks
-purify
-single_quoted
-c_comment
-cpp_comment
-text_delimiters #if|#ifdef|#ifndef=#elif=#else=#endif
-cpara >#!;*/%
Ada
[ada]
*.adb
*.ads
-syntax ada
-autoindent
-title
-istep 2
-smarthome
-smartbacks
-purify
-vhdl_comment
-text_delimiters declare|Declare|DECLARE|exception|Exception|EXCEPTION|if|If|IF|loop|Loop|LOOP|case|Case|CASE|package|Package|PACKAGE|procedure|Procedure|PROCEDURE|record|Record|RECORD|function|Function|FUNCTION=end|End|END
-highlighter_context
COBOL
[cobol]
*.cbl
*.cob
-syntax cobol
-highlighter_context
REXX
[rexx]
*.rex
*.REX
*
+#![ ]*[^\n]*rexx[0-9.]*\>
-syntax rexx
-autoindent
-title
-highlighter_context
SED script
[sed]
*.sed
-syntax sed
-highlighter_context
Postscript
[postscript]
*.ps
*.eps
-syntax ps
-highlighter_context
C language
[c]
*.c
*.cpp
*.cc
*.c++
C language header file
*.h
*.h.in
*.hpp
*.h++
*.hh
*.mm
-autoindent
-title
-syntax c
-highlighter_context
-smarthome
-smartbacks
-purify
-single_quoted
-c_comment
-cpp_comment
-text_delimiters #if|#ifdef|#ifndef=#elif=#else=#endif
-cpara >#!;*/%
Verilog
[verilog]
*.v
Verilog header file
*.vh
-autoindent
-syntax verilog
-istep 2
-smarthome
-smartbacks
-purify
-c_comment
-cpp_comment
-text_delimiters `ifdef|`ifndef=`else=`endif:begin=end:case|casex|casez=endcase:function=endfunction:module=endmodule:task=endtask:attribute=endattribute:primitive=endprimitive:table=endtable
-cpara >#!;*/%
-highlighter_context
VHDL
[vhdl]
*.vhd
-autoindent
-syntax vhdl
-istep 2
-smarthome
-smartbacks
-purify
-vhdl_comment
-text_delimiters entity|ENTITY|if|IF|component|COMPONENT|loop|LOOP|configuration|CONFIGURATION|units|UNITS|record|RECORD|case|CASE|function|FUNCTION|package|PACKAGE|architecture|ARCHITECTURE|block|BLOCK|process|PROCESS|generate|GENERATE=end|END
-cpara >#!;*-/%
-highlighter_context
XML
[xml]
*.xml
*.xsd
*
+<.xml
*.jnlp
RESX/.NET resource files
*.resx
Ant's build.xml
*build.xml
-autoindent
-syntax xml
-highlighter_context
Apple plists
[plist]
*.plist
-autoindent
-syntax xml
HTML
[html]
*.htm
*.html
-wordwrap
-autoindent
-smarthome
-smartbacks
-syntax html
CSS
[css]
*.css
-wordwrap
-autoindent
-smarthome
-smartbacks
-syntax css
JAVA
[java]
*.java
-autoindent
-title
-syntax java
-smarthome
-smartbacks
-c_comment
-cpp_comment
-purify
-cpara >#!;*/%
-highlighter_context
Javascript
[javascript]
*.js
*
+#![ ]*[^\n]*nodejs[0-9.]*\>
-autoindent
-title
-syntax js
-smarthome
-smartbacks
-purify
-c_comment
-cpp_comment
-cpara >#!;*/%
-highlighter_context
JSON
[json]
*.json
-autoindent
-syntax json
-smarthome
-smartbacks
-highlighter_context
Typescript
[typescript]
*.ts
-autoindent
-title
-syntax typescript
-smarthome
-smartbacks
-purify
-c_comment
-cpp_comment
-cpara >#!;*/%
-highlighter_context
Hypertext preprocessor file
[php]
*.php
-autoindent
-title
-syntax php
-smarthome
-smartbacks
-purify
-highlighter_context
Python
[python]
*
+#![ ]*[^\n]*python[0-9.]*\>
*.py
-autoindent
-title
-syntax python
-highlighter_context
-smarthome
-smartbacks
-purify
-single_quoted
-pound_comment
C-shell
[csh]
*
+#![ ]*[^\n ]*/csh\>
+#![ ]*[^\n ]*/tcsh\>
*.csh
*.login
*.logout
*.tcsh
*.tcshrc
-autoindent
-title
-syntax csh
-pound_comment
-highlighter_context
Shell
[sh]
*
+#![ ]*[^\n ]*/sh\>
+#![ ]*[^\n ]*/bash\>
*.sh
*profile
*.bash
*.bashrc
*.bash_login
*.bash_logout
-autoindent
-title
-syntax sh
-highlighter_context
-pound_comment
-text_delimiters do=done:if=elif=else=fi:case=esac
Lisp
[lisp]
*.lisp
*.lsp
*.el
-autoindent
-title
-syntax lisp
-semi_comment
-highlighter_context
Korn shell
[ksh]
*
+#![ ]*[^\n ]*/ksh\>
*.ksh
-autoindent
-title
-syntax sh
-highlighter_context
-pound_comment
-text_delimiters do=done:if=elif=else=fi:case=esac
-highlighter_context
PASCAL
[pascal]
*.p
*.pas
-autoindent
-title
-syntax pascal
-smarthome
-smartbacks
-purify
-text_delimiters begin|BEGIN|record|RECORD|case|CASE=end|END:repeat|REPEAT=until|UNTIL
-highlighter_context
Fortran
[fortran]
*.f
*.f90
*.for
*.FOR
-autoindent
-title
-syntax fortran
-highlighter_context
Cadence SKILL
[skill]
*.il
-semi_comment
-syntax skill
-autoindent
-title
-istep 3
-indentc 32
-smartbacks
-smarthome
-indentfirst
-highlighter_context
Lua
[lua]
*.lua
*
+#![ ]*[^\n]*lua[0-9.]*\>
-autoindent
-title
-syntax lua
-highlighter_context
TCL
[tcl]
*.tcl
-autoindent
-title
-syntax tcl
-highlighter_context
Go language
[go]
*.go
-autoindent
-title
-syntax go
-smarthome
-smartbacks
-purify
-single_quoted
-c_comment
-text_delimiters #if|#ifdef|#ifndef=#elif=#else=#endif
-cpara >#!;*/%
-highlighter_context
CSharp
[c#]
*.cs
-autoindent
-title
-syntax csharp
-smarthome
-smartbacks
-purify
-cpara >#!;*/%
-text_delimiters #region=#endregion:#if=#elif=#else=#endif
-highlighter_context
Joe Syntax File
[jsf]
*.jsf
*.jsf.in
-autoindent
-title
-syntax jsf
-smarthome
-highlighter_context
Joe Colorscheme file
[jcf]
*.jcf
-syntax jcf
M4 / Autoconfig file
[m4]
*.ac
*.m4
-autoindent
-title
-syntax m4
-highlighter_context
Matlab file (clashes with objective-C)
[matlab]
*.m
-wordwrap
-syntax matlab
-highlighter_context
UNIX configuration file
[conf]
Automake file
*.am
System RC file
*rc
Makefile
*Makefile
*makefile.in
*Makefile.in
*makefile
*AKEFILE
-autoindent
-syntax conf
-pound_comment
-highlighter_context
Windows batch files
[bat]
*.bat
*.cmd
-autoindent
-syntax batch
-highlighter_context
JOERC file
[joerc]
*ftyperc
*joerc
*jmacsrc
*jstarrc
*rjoerc
*jpicorc
*joerc.in
*jmacsrc.in
*jstarrc.in
*rjoerc.in
*jpicorc.in
-syntax joerc
-highlighter_context
Markdown
[markdown]
*.md
-syntax md
-wordwrap
YAML
[yaml]
*.yml
*.yaml
-autoindent
-smarthome
-smartbacks
-pound_comment
-syntax yaml
-highlighter_context
Debian apt
[debian]
*apt/sources.list
*sources.list.*
-pound_comment
-syntax debian
Java's .properties
[java_properties]
*.properties
this is part of the specification:
-encoding iso-8859-1
-pound_comment
-syntax properties
-highlighter_context
INI Files
[ini]
*.ini
*.inf
*hgrc
*.gitconfig
*.git/config
-syntax ini
-pound_comment
-semi_comment
-highlighter_context
plain ERB
[erb]
*.erb
-syntax erb
-highlighter_context
ERB within HTML
[erb_html]
*.html.erb
-syntax htmlerb
-highlighter_context
Haml
[haml]
*.haml
-syntax haml
-istep 2
-indentc 32
-autoindent
-smarthome
-smartbacks
-highlighter_context
Erlang
[erlang]
*.erl
*.eterm
*.app.src
*rebar.config
*.hrl
*.erlang
-syntax erlang
-autoindent
-title
-highlighter_context
Sieve (ManageSieve)
[sieve]
*.sieve
-syntax sieve
-autoindent
-title
-highlighter_context
Puppet
[puppet]
*.pp
-syntax puppet
-pound_comment
-autoindent
-title
-highlighter_context
ip(6)tables
[iptables]
*
+# Generated by iptables-save
+# Generated by ip6tables-save
-syntax iptables
-pound_comment
PowerShell
[powershell]
*.ps1
*.psm1
-syntax powershell
-autoindent
-smarthome
-smartbacks
-highlighter_context
Git COMMIT_EDITMSG
[git-commit]
*COMMIT_EDITMSG
-syntax git-commit
Elixir
[elixir]
*.ex
*.exs
-autoindent
-smarthome
-smartbacks
-title
-syntax elixir
-pound_comment
-text_delimiters do=else=end
-indentc 32
-istep 2
-highlighter_context
R
[r]
*.r
-autoindent
-title
-syntax r
-pound_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Groovy
[groovy]
*.gvy
*.groovy
*.gy
*.gsh
-autoindent
-title
-syntax groovy
-c_comment
-cpp_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Clojure
[clojure]
*.clj
*.cljs
*.cljc
*.edn
-autoindent
-title
-syntax clojure
-semi_comment
-smarthome
-smartbacks
-purify
-highlighter_context
Rust
[rust]
*.rs
-autoindent
-title
-syntax rust
-c_comment
-cpp_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Coffeescript
[coffee]
*.coffee
-autoindent
-title
-syntax coffee
-pound_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Scala
[scala]
*.scala
-autoindent
-title
-syntax scala
-c_comment
-cpp_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Swift
[swift]
*.swift
-autoindent
-title
-syntax swift
-c_comment
-cpp_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
D
[d]
*.d
-autoindent
-title
-syntax d
-c_comment
-cpp_comment
-smarthome
-smartbacks
-purify
-single_quoted
-highlighter_context
Docker
[dockerfile]
*Dockerfile
-autoindent
-title
-syntax dockerfile
-pound_comment
-highlighter_context
RPM Spec
[spec]
*.spec
-autoindent
-syntax spec
Haskell
[haskell]
*.hs
-autoindent
-smarthome
-smartbacks
-syntax haskell
-vhdl_comment
-highlighter_context

1265
joe/etc/joe/jicerc.ru Normal file

File diff suppressed because it is too large Load diff

1284
joe/etc/joe/jmacsrc Normal file

File diff suppressed because it is too large Load diff

1308
joe/etc/joe/joerc Normal file

File diff suppressed because it is too large Load diff

1254
joe/etc/joe/joerc.zh_TW Normal file

File diff suppressed because it is too large Load diff

1074
joe/etc/joe/jpicorc Normal file

File diff suppressed because it is too large Load diff

1160
joe/etc/joe/jstarrc Normal file

File diff suppressed because it is too large Load diff

1107
joe/etc/joe/rjoerc Normal file

File diff suppressed because it is too large Load diff

42
joe/etc/joe/shell.csh Normal file
View file

@ -0,0 +1,42 @@
# Aliases for csh/tcsh in JOE shell window
alias joehelp 'echo "clear - erase buffer"; \\
echo "joe - edit file"; \\
echo "math 1+2 - calculator"; \\
echo "pop - dismiss shell"; \\
echo "parse - grep parse the buffer"; \\
echo "parserr - compile parse the buffer"; \\
echo "release - drop parsed messages"; \\
echo "markb - mark beginning of region"; \\
echo "markk - mark end of region"; \\
echo "mark cmd - mark output of command"'
alias clear "echo -n \{shell_clear}"
alias parse "echo -n \{shell_gparse}"
alias parserr "echo -n \{shell_parserr}"
alias release "echo -n \{shell_release}"
alias markb "echo -n \{shell_markb}"
alias markk "echo -n \{shell_markk}"
alias mark "echo -n \{shell_markb}; "\!\*"; echo -n \{shell_markk}"
alias math "echo -n \{shell_math,"\\\"\!\*\\\"",shell_rtn\\!,shell_typemath}; cat >/dev/null"
alias edit "echo -n \{shell_edit,"\\\"\!\*\\\"",shell_rtn}"
alias joe "echo -n \{shell_edit,"\\\"\!\*\\\"",shell_rtn}"
alias pop "echo -n \{shell_pop}"
alias cd "cd "\!\*"; echo -n \{shell_cd,shell_dellin\\!,"\\\""; pwd | tr -d '\n'; echo -n /"\\\"",shell_rtn}"
clear
echo
echo Type joehelp for editor shell commands
echo

147
joe/etc/joe/shell.sh Normal file
View file

@ -0,0 +1,147 @@
# Aliases for sh/dash/ash/bash/ksh/zsh in JOE shell window
joehelp () {
echo "clear - erase buffer"
echo "joe - edit file"
echo "math 1+2 - calculator"
echo "pop - dismiss shell"
echo "parse [cmd] - grep parse command"
echo "parserr [cmd] - compile parse command"
echo "release - drop parsed messages"
echo "markb - mark beginning of region"
echo "markk - mark end of region"
echo "mark cmd - mark output of command"
}
# Clear edit buffer
joe_clear () {
echo -n '{'shell_clear'}'
}
# Release errors
joe_release () {
echo -n '{'shell_release'}'
}
# Set marked region beginning
joe_markb () {
echo -n '{'shell_markb'}'
}
# Set marked region end
joe_markk () {
echo -n '{'shell_markk'}'
}
# Mark command result
joe_mark () {
joe_markb
$*
joe_markk
}
# Parse command result (or whole buffer if no arg)
joe_parse () {
if [ "$1" = "" ]; then
echo -n '{'shell_gparse'}'
else
joe_markb
$*
joe_markk
echo '{'shell_gparse'}'
fi
}
# Parse command result (or whole buffer if no arg)
joe_parserr () {
if [ "$1" = "" ]; then
echo '{'shell_parse'}'
else
joe_markb
$*
joe_markk
echo '{'shell_parse'}'
fi
}
# Use JOE's calculator
joe_math () {
echo -n '{'shell_math,'"'$1'"',shell_rtn!,shell_typemath'}'
cat >/dev/null
}
# Edit a file
joe_edit () {
echo -n '{'shell_edit,'"'$1'"',shell_rtn'}'
}
# Pop shell window
joe_pop () {
echo -n '{'shell_pop'}'
}
unalias cd 2>/dev/null
# Change directory
joe_cd () {
# cd $1 - does not work for directories with spaces in their names
# cd "$1" - breaks cd with no args (it's supposed to go to home directory)
# So we have do this...
if [ "$1" = "" ]; then
cd
else
cd "$1"
fi
# Tell JOE our new directory
echo -n '{'shell_cd,shell_dellin!,'"'`pwd`/'"',shell_rtn'}'
}
alias clear=joe_clear
alias math=joe_math
alias edit=joe_edit
alias joe=joe_edit
alias pop=joe_pop
alias cd=joe_cd
alias parse=joe_parse
alias parserr=joe_parserr
alias release=joe_release
alias markb=joe_markb
alias markk=joe_markk
alias mark=joe_mark
# Code to automatically mark and parse output from each command
# - This is bash specific code
#joe_markb_pre () {
# joe_markb
# MARK_FLAG=1
#}
#joe_markk_post () {
# if [ "$MARK_FLAG" = "1" ]; then
# joe_markk
# MARK_FLAG=0
# joe_parse
# fi
#}
#preexec () { :; }
#preexec_invoke_exec () {
# [ -n "$COMP_LINE" ] && return # do nothing if completing
# [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
# local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"`;
# joe_markb_pre
# preexec "$this_command"
#}
#trap 'preexec_invoke_exec' DEBUG
#PROMPT_COMMAND=joe_markk_post
joe_clear
echo
echo Type joehelp for editor shell commands
echo

BIN
joe/package.joe.zip Normal file

Binary file not shown.

0
joe/root/.joerc Normal file
View file

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Version=1.0
Name=Joe's Own Editor - EMACS Emulation
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/jmacs %F
TryExec=jmacs
Icon=accessories-text-editor
Type=Application
Terminal=true
Categories=Utility;Development;TextEditor;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Version=1.0
Name=Joe's Own Editor
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/joe %F
TryExec=joe
Icon=accessories-text-editor
Type=Application
Terminal=true
Categories=Utility;Development;TextEditor;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Version=1.0
Name=Joe's Own Editor - NANO/PICO Emulation
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/jpico %F
TryExec=jpico
Icon=accessories-text-editor
Type=Application
Terminal=true
Categories=Utility;Development;TextEditor;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Version=1.0
Name=Joe's Own Editor - WordStar Emulation
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/jstar %F
TryExec=jstar
Icon=accessories-text-editor
Type=Application
Terminal=true
Categories=Utility;Development;TextEditor;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,243 @@
# Joe's Own Editor
[User manual](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/docs/man.md)
[Release Notes](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/NEWS.md)
[List of Commands](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/docs/man.md#list)
[List of Options](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/docs/man.md#options)
[JOE for Windows tips](https://sourceforge.net/p/joe-editor/mercurial/ci/windows/tree/docs/windows.md)
[Hacking](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/docs/hacking.md)
[Project page](http://www.sourceforge.net/projects/joe-editor)
[Download source](https://sourceforge.net/projects/joe-editor/files/)
[Build instructions](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/INSTALL.md)
[History](https://sourceforge.net/p/joe-editor/mercurial/ci/default/tree/docs/history.md)
<p></p>
<p>JOE is a full featured terminal-based screen editor which is distributed
under the GNU General Public License (GPL). JOE has been around since 1988
and comes standard with many Linux distributions.</p>
<p>JOE is being maintained by its original author Joseph Allen, plus all of
the people who send bug reports, feature suggestions and patches to the
project web site. JOE is hosted by SourceForge.net and its source code is
controlled under Mercurial.</p>
<p>JOE is a blending of MicroPro's venerable microcomputer word processor
WordStar and Richard Stallman's famous LISP based text editor GNU-EMACS (but
it does not use code from either program): most of the basic editing keys
are the same as in WordStar as is the overall feel of the editor. JOE also
has some of the key bindings and many of the powerful features of EMACS.</p>
<p>JOE is written in C and its only dependency is libc. This makes JOE very
easy to build (just "configure" and "make install"), making it feasible to
include on small systems and recovery disks. The compiled binary is about
300K in x86. Note that JOE can use either the termcap or terminfo terminal
capabilities databases (or a built-in termcap entry for ANSI terminals). The
choice is controlled by a "configure" option. If terminfo is used, a
library is required to access the database (on some systems this library is
ncurses, but JOE does not use curses to control the terminal- it has its own
code for this).</p>
<p>Much of the look and feel of JOE is determined by its simple
configuration file "joerc". Several variants of the editor are installed by
default in addition to "joe": "jmacs" (emulate GNU-EMACS), "jstar" emulate
WordStar, "jpico" emulate the Pine mailer editor PICO and "rjoe"- a
restricted version of JOE which allows the used to only edit the file given
on the command line. JOE is linked to several names. The name which is
used to invoke the editor with "rc" tacked on the end gives the name of
configuration file to use. It is thus easy for you to make your own variant
if you want. Also you can customize the editor by copying the system
"joerc" file to your home directory.</p>
<p>Here is a basic screen shot of JOE running in a Cygwin console:</p>
![screen capture](http://joe-editor.sourceforge.net/capture.gif)
<p>Here is a screen shot showing several windows- the first has some example
double-wide characters, the second is the same buffer as the first, but in
hex-dump view mode, the third is a shell window and the fourth shows a
selected rectangular block of numbers and their sum:</p>
![elaborate screen capture](http://joe-editor.sourceforge.net/elaborate.gif)
### JOE has the following features:
* Multi-file search and replace- file list is either given on command line or by a UNIX command (grep/find) run from within JOE.
* Mouse support, including wheel (works best when using xterm). The mouse can resize windows, scroll windows, select and paste text, and select menu entries.
* Context display on status line: allows you to see name of function cursor is in.
* UTF-8 support, optional auto-detect of UTF-8 files.
* Syntax highlighting for more than 40 languages.
* Hexadecimal edit mode. Use JOE as a disk editor: joe -overwrite -hex /dev/hda1,0,512 (edit first sector of /dev/hda1).
* Non-destructive editing of binary files even when handling MS-DOS or UNIX line endings.
* Swap file allows editing files larger than memory.
* Context sensitive on-line help.
* Bash-like TAB completion and history for all prompts, or jump into the
completion menu and use it to traverse the file system.
* Complete word in edit buffer by hitting ESC Enter (uses other words in
buffer for dictionary).
* EMACS-compatible file locks and file modification checking.
* Shell windows.
* Multiple-windows onto same or different files.
* Compile and step through errors or Grep and step through finds.
* Goto matching character delimiter "() [] {} <>" which skips comments and
quoted matter.
* Goto matching word delimiter, including XML tags and C preprocessor
directives.
* Ctrl-arrow key block selection.
* Search and replace system, including regular expression and optional
incremental search. Regular expression key for matching balanced C
expressions.
* Tags file search (tab completion at tags search prompt uses tags file as
database).
* Spell check commands which invoke aspell or ispell. Language for aspell
can be passed through editor.
* Paragraph format which preserves news/mail quoting indentation
characters.
* Unlimited Undo and Redo.
* Yank buffer allows stepping through and insertion of previously deleted
text.
* State file restores history buffers, yank buffer and last file cursor
positions.
* Cursor position history allows you to step through previously visited areas
of a file.
* Multiple interactive keyboard macros. Macros can be assigned to key
sequences in joerc file.
* Block move/copy/delete/filter.
* Rectangle (columnar) block mode- search and replace can be narrowed to
the rectangular block. Rectangular blocks can be filtered through UNIX
commands.
* Overtype/Insert modes.
* Indent/Unindent (shift block left or right).
* Auto-indent mode.
* Picture mode for ASCII graphics.
* Line number mode displays line number of each line.
* Powerful scientific calculator with block statistics functions (sum/standard-deviation/count highlighted block of numbers).
* Termcap/Terminfo support allows JOE to use any terminal or terminal emulator.
* Can accept data from a pipe, for example: ls | joe
<p>JOE does not have these features (yet):</p>
<ul>
<li>Vertical windows</li>
<li>Folding</li>
<li>Right to left editing for Hebrew and Arabic</li>
<li>Direct editing of 16-bit character sets such as UCS-16 and BIG5</li>
<li>All encompassing macro language like elisp in GNU-EMACS</li>
<li>Background spell checking, like Microsoft WORD</li>
<li>Highlight all matching words</li>
<li>Automatic unzip/untar</li>
<li>Built-in FTP</li>
<li>X-Window version (use inside a terminal emulator)</li>
<li>Interface to debugger</li>
</ul>
<p>Here are some other editors to consider:</p>
<a href="http://www.gnu.org/software/emacs">http://www.gnu.org/software/emacs</a>
Richard Stallman's powerful LISP-based editor.
<a href="http://www.jedsoft.org/jed">http://www.jedsoft.org/jed</a> John E.
Davis' version of EMACS using the S-Lang language.
<a href="http://www.jasspa.com">http://www.jasspa.com</a> Micro Emacs
<a href="http://www.vile.cx">http://www.vile.cx</a> Paul Fox's vi clone
(built on top of Micro Emacs). Now maintained by Tom Dickey and others.
<a href="http://www.nano-editor.org">http://www.nano-editor.org</a> An open
source PICO clone.
<a
href="http://www.washington.edu/pine/faq/whatis.html">http://www.washington.edu.pine/faq/whatis.html</a>
PICO: A simple editor built on Micro Emacs.
<a href="http://www.vim.org">http://www.vim.org</a> Bram Moolenaar's vi
clone</a>
<a href="http://elvis.the-little-red-haired-girl.org/whatiselvis/index.html">
http://elvis.the-little-red-haired-girl.org</a> Elvis: A
small vi clone
<a href="http://www.jedit.org">http://www.jedit.org</a> Powerful editor
written in Java
<a href="http://www.nedit.org">http://www.nedit.org</a> X-Windowing System
editor
<a href="http://www.ibiblio.org/mc">http://www.ibiblio.org/mc</a> Midnight
Commander file manager with built-in text editor with highlighting. Can
browse ZIP and TAR files.
<br>
<a href="http://www.cs.yorku.ca/~oz/wily">http://www.cs.yorku.ca/~oz/wily</a> A
UNIX/X clone of Rob Pike's Plan9 editor ACME. Originally written by Gary
Capell, but now maintained by Ozan Yigit. This is an interesting minimalist
IDE.
<a
href="http://www.eclipse.org/downloads">http://www.eclipse.org/downloads</a>
Huge IDE written in Java. Performs same function as Wily, but is literally
1300 times larger.
<a href="ftp://netlib.bell-labs.com/netlib/research/sam.shar.gz">ftp://netlib.bell-labs.com/netlib/research/sam.shar.gz</a>
UNIX/X port of Rob Pike's Plan9 editor SAM. This interesting editor
supports multi-file regular expression search &amp; replace with unlimited
undo.
<a href="http://sed.sourceforge.net">http://sed.sourceforge.net</a>
UNIX Stream EDitor. If you're on UNIX, you already have this editor, but follow
this link to see the amazing things that can be done with it.

View file

@ -0,0 +1,176 @@
Joe's Own Editor 3.6
A Free ASCII-Text Screen Editor for UNIX
by Joseph Allen (<= 2.8)
Marek 'Marx' Grac (=> 2.9)
by Joseph Allen again (=>3.0)
Get it from:
http://sourceforge.net/projects/joe-editor
If you have questions, problems or suggestions,
Use sourceforge: mailing list, bug tracker, discussion groups.
JOE is the professional freeware ASCII text screen editor for UNIX.
It makes full use of the power and versatility of UNIX, but lacks the steep
learning curve and basic nonsense you have to deal with in every other UNIX
editor. JOE has the feel of most IBM PC text editors: The key-sequences are
reminiscent of WordStar and Turbo-C. JOE is much more powerful than those
editors, however. JOE has all of the features a UNIX user should expect:
full use of termcap/terminfo, excellent screen update optimizations (JOE is
fully usable at 2400 baud), simple installation, and all of the
UNIX-integration features of VI.
JOE's initialization file determines much of JOE's personality and
the name of the initialization file is simply the name of the editor
executable followed by "rc". JOE comes with four "rc" files in addition to
the basic "joerc", which allow it to emulate these editors:
JPICO - An enhanced version of the Pine mailer system's PICO
editor.
JSTAR - A complete imitation of WordStar including many "JOE"
extensions.
RJOE - A restricted version of JOE which allowed you to edit
only the files specified on the command line.
JMACS - A GNU-EMACS imitation which is about one order of
magnitude smaller than real GNU-EMACS.
Features:
JOE has a well thought-out user-interface with great attention to
detail. The Page Up and Page Down functions do not move the cursor relative
to the edges of the screen. Left and Right arrow keys work at the beginning
and ends of lines. The cursor can move past the ends of lines without
jumping, but also without inserting or deleting extra spaces at the ends of
lines. Control characters and characters above 127 can be displayed and
entered- even ^Q and ^S. The cursor's row and column number can be
displayed in the status line.
The key layout is made to reduce terminal incompatibility nonsense.
^Q and ^S are not used and both ^H and DEL are mapped to backspace. Case
does not matter in key sequences- ^K E, ^K e, and ^K ^E are each mapped to
the same function. The arrow keys and PageUp, PageDown, Home, End, Insert
and Delete keypad keys are read from the termcap entry and are assigned to
the proper functions. A simple initialization file, similar to Semware's
Q-EDIT, allows key-bindings, simple macros and help windows to be defined.
JOE has full termcap/terminfo support and will work on any terminal.
JOE has the best screen update optimization algorithm available. It uses
VT100-style scrolling regions the way they are supposed to be used (I.E.,
without building insert and delete line functions out of them) and has a
powerful line shifting (insert/delete character) algorithm which works even
if text goes past the ends of lines. JOE has deferred screen update to
handle typeahead and uses the baud rate reported by 'stty' to ensure that
deferral is not bypassed by tty buffering.
JOE has multiple windows and lacks the confusing notion of a named
buffers. You just have files and windows. When there are more windows than
can fit on the screen, the Goto-Next-Window function scrolls through them.
The same file can have multiple windows opened on it.
JOE has VI-style unix integration. You can filter a highlighted
block through a UNIX command. Also, each place in joe which accepts a file
name (including the command line) will also accept:
!command to pipe into or out of a command
>>filename to append to a file
filename,start,size to edit a portion of a file/device
- to use stdin or stdout
File names on the command line may be preceded by +nnn to start
editing at a specified line.
JOE has shell windows. You can run a shell in a window and any
output from commands run in the shell gets stored in a buffer.
JOE has an orthogonal event-driven design. Each prompt is actually
a normal edit buffer containing a history of all of the responses entered
for that prompt. You can use all of the normal edit commands to create file
names and search strings. You can use the up arrow key (or search backwards
and any other appropriate edit command) to go back through the history of
previous responses. Prompts are reentrant- meaning that edit commands which
require prompts can still be used inside of prompts.
JOE has TAB-completion and file selection menus. If you hit tab in
a file name prompt, the name is either completed or a menu of possible
matches appears.
JOE stores edit files in a doubly linked list of gap buffers which
can spill into a temporary file. You can edit files of any size up to the
amount of free disk space and there are no line-length restrictions. Since
the buffering system is block-based, JOE will incur only a minimum of
swapping on heavily loaded systems.
When you ask for help, one of six small help reference cards appears
on the screen and remains while you continue to use the editor. Here is the
first help card:
CURSOR GO TO BLOCK DELETE MISC EXIT
^B left ^F right ^U prev. screen ^KB begin ^D char. ^KJ reformat ^KX save
^P up ^N down ^V next screen ^KK end ^Y line ^T options ^C abort
^Z previous word ^A beg. of line ^KM move ^W >word ^@ insert ^KZ shell
^X next word ^E end of line ^KC copy ^O word< ^R retype FILE
SEARCH ^KU top of file ^KW file ^J >line SPELL ^KE new
^KF find text ^KV end of file ^KY delete ^_ undo ^[N word ^KR insert
^L find next ^KL to line No. ^K/ filter ^^ redo ^[L file ^KD save
JOE has a powerful set of editing commands suitable for editing both
text files and programs:
- UTF-8 support
- Syntax highlighting
- search and replace system, including powerful regular
expressions (including matching of balanced C expressions).
- tags file search
- paragraph format
- undo and redo
- position history allows you to get back to previous
editing contexts and allows you to quickly flip between
editing contexts
- multiple keyboard macros
- block move/copy/delete/filter
- rectangle (columnar) mode
- overtype/insert modes
- indent/unindent
- goto matching ( [ {
- auto-indent mode
Plus many options can be set:
- can have EMACS-style cursor re-centering on scrolls
- characters between 128-255 can be shown as-is for
non-English character sets
- Final newline can be forced on end of file
- Can start with a help screen on
- Left/Right margin settings
- Tab width
- Indentation step and fill character
/* jhallen@world.std.com */ /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}

File diff suppressed because it is too large Load diff

3994
joe/usr/share/doc/joe/man.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,238 @@
<code_set_name> Klingon-ASCII
<comment_char> %
<escape_char> /
% version: 1.0
% An 8-bit character set with Klingon characters in range 0xD0 - 0xFF and
% KOI8-R (ASCII w/ line drawing) for the rest.
CHARMAP
<U0000> /x00 NULL (NUL)
<U0001> /x01 START OF HEADING (SOH)
<U0002> /x02 START OF TEXT (STX)
<U0003> /x03 END OF TEXT (ETX)
<U0004> /x04 END OF TRANSMISSION (EOT)
<U0005> /x05 ENQUIRY (ENQ)
<U0006> /x06 ACKNOWLEDGE (ACK)
<U0007> /x07 BELL (BEL)
<U0008> /x08 BACKSPACE (BS)
<U0009> /x09 CHARACTER TABULATION (HT)
<U000A> /x0a LINE FEED (LF)
<U000B> /x0b LINE TABULATION (VT)
<U000C> /x0c FORM FEED (FF)
<U000D> /x0d CARRIAGE RETURN (CR)
<U000E> /x0e SHIFT OUT (SO)
<U000F> /x0f SHIFT IN (SI)
<U0010> /x10 DATALINK ESCAPE (DLE)
<U0011> /x11 DEVICE CONTROL ONE (DC1)
<U0012> /x12 DEVICE CONTROL TWO (DC2)
<U0013> /x13 DEVICE CONTROL THREE (DC3)
<U0014> /x14 DEVICE CONTROL FOUR (DC4)
<U0015> /x15 NEGATIVE ACKNOWLEDGE (NAK)
<U0016> /x16 SYNCHRONOUS IDLE (SYN)
<U0017> /x17 END OF TRANSMISSION BLOCK (ETB)
<U0018> /x18 CANCEL (CAN)
<U0019> /x19 END OF MEDIUM (EM)
<U001A> /x1a SUBSTITUTE (SUB)
<U001B> /x1b ESCAPE (ESC)
<U001C> /x1c FILE SEPARATOR (IS4)
<U001D> /x1d GROUP SEPARATOR (IS3)
<U001E> /x1e RECORD SEPARATOR (IS2)
<U001F> /x1f UNIT SEPARATOR (IS1)
<U0020> /x20 SPACE
<U0021> /x21 EXCLAMATION MARK
<U0022> /x22 QUOTATION MARK
<U0023> /x23 NUMBER SIGN
<U0024> /x24 DOLLAR SIGN
<U0025> /x25 PERCENT SIGN
<U0026> /x26 AMPERSAND
<U0027> /x27 APOSTROPHE
<U0028> /x28 LEFT PARENTHESIS
<U0029> /x29 RIGHT PARENTHESIS
<U002A> /x2a ASTERISK
<U002B> /x2b PLUS SIGN
<U002C> /x2c COMMA
<U002D> /x2d HYPHEN-MINUS
<U002E> /x2e FULL STOP
<U002F> /x2f SOLIDUS
<U0030> /x30 DIGIT ZERO
<U0031> /x31 DIGIT ONE
<U0032> /x32 DIGIT TWO
<U0033> /x33 DIGIT THREE
<U0034> /x34 DIGIT FOUR
<U0035> /x35 DIGIT FIVE
<U0036> /x36 DIGIT SIX
<U0037> /x37 DIGIT SEVEN
<U0038> /x38 DIGIT EIGHT
<U0039> /x39 DIGIT NINE
<U003A> /x3a COLON
<U003B> /x3b SEMICOLON
<U003C> /x3c LESS-THAN SIGN
<U003D> /x3d EQUALS SIGN
<U003E> /x3e GREATER-THAN SIGN
<U003F> /x3f QUESTION MARK
<U0040> /x40 COMMERCIAL AT
<U0041> /x41 LATIN CAPITAL LETTER A
<U0042> /x42 LATIN CAPITAL LETTER B
<U0043> /x43 LATIN CAPITAL LETTER C
<U0044> /x44 LATIN CAPITAL LETTER D
<U0045> /x45 LATIN CAPITAL LETTER E
<U0046> /x46 LATIN CAPITAL LETTER F
<U0047> /x47 LATIN CAPITAL LETTER G
<U0048> /x48 LATIN CAPITAL LETTER H
<U0049> /x49 LATIN CAPITAL LETTER I
<U004A> /x4a LATIN CAPITAL LETTER J
<U004B> /x4b LATIN CAPITAL LETTER K
<U004C> /x4c LATIN CAPITAL LETTER L
<U004D> /x4d LATIN CAPITAL LETTER M
<U004E> /x4e LATIN CAPITAL LETTER N
<U004F> /x4f LATIN CAPITAL LETTER O
<U0050> /x50 LATIN CAPITAL LETTER P
<U0051> /x51 LATIN CAPITAL LETTER Q
<U0052> /x52 LATIN CAPITAL LETTER R
<U0053> /x53 LATIN CAPITAL LETTER S
<U0054> /x54 LATIN CAPITAL LETTER T
<U0055> /x55 LATIN CAPITAL LETTER U
<U0056> /x56 LATIN CAPITAL LETTER V
<U0057> /x57 LATIN CAPITAL LETTER W
<U0058> /x58 LATIN CAPITAL LETTER X
<U0059> /x59 LATIN CAPITAL LETTER Y
<U005A> /x5a LATIN CAPITAL LETTER Z
<U005B> /x5b LEFT SQUARE BRACKET
<U005C> /x5c REVERSE SOLIDUS
<U005D> /x5d RIGHT SQUARE BRACKET
<U005E> /x5e CIRCUMFLEX ACCENT
<U005F> /x5f LOW LINE
<U0060> /x60 GRAVE ACCENT
<U0061> /x61 LATIN SMALL LETTER A
<U0062> /x62 LATIN SMALL LETTER B
<U0063> /x63 LATIN SMALL LETTER C
<U0064> /x64 LATIN SMALL LETTER D
<U0065> /x65 LATIN SMALL LETTER E
<U0066> /x66 LATIN SMALL LETTER F
<U0067> /x67 LATIN SMALL LETTER G
<U0068> /x68 LATIN SMALL LETTER H
<U0069> /x69 LATIN SMALL LETTER I
<U006A> /x6a LATIN SMALL LETTER J
<U006B> /x6b LATIN SMALL LETTER K
<U006C> /x6c LATIN SMALL LETTER L
<U006D> /x6d LATIN SMALL LETTER M
<U006E> /x6e LATIN SMALL LETTER N
<U006F> /x6f LATIN SMALL LETTER O
<U0070> /x70 LATIN SMALL LETTER P
<U0071> /x71 LATIN SMALL LETTER Q
<U0072> /x72 LATIN SMALL LETTER R
<U0073> /x73 LATIN SMALL LETTER S
<U0074> /x74 LATIN SMALL LETTER T
<U0075> /x75 LATIN SMALL LETTER U
<U0076> /x76 LATIN SMALL LETTER V
<U0077> /x77 LATIN SMALL LETTER W
<U0078> /x78 LATIN SMALL LETTER X
<U0079> /x79 LATIN SMALL LETTER Y
<U007A> /x7a LATIN SMALL LETTER Z
<U007B> /x7b LEFT CURLY BRACKET
<U007C> /x7c VERTICAL LINE
<U007D> /x7d RIGHT CURLY BRACKET
<U007E> /x7e TILDE
<U007F> /x7f DELETE (DEL)
<U2500> /x80 BOX DRAWINGS LIGHT HORIZONTAL
<U2502> /x81 BOX DRAWINGS LIGHT VERTICAL
<U250C> /x82 BOX DRAWINGS LIGHT DOWN AND RIGHT
<U2510> /x83 BOX DRAWINGS LIGHT DOWN AND LEFT
<U2514> /x84 BOX DRAWINGS LIGHT UP AND RIGHT
<U2518> /x85 BOX DRAWINGS LIGHT UP AND LEFT
<U251C> /x86 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
<U2524> /x87 BOX DRAWINGS LIGHT VERTICAL AND LEFT
<U252C> /x88 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
<U2534> /x89 BOX DRAWINGS LIGHT UP AND HORIZONTAL
<U253C> /x8a BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
<U2580> /x8b UPPER HALF BLOCK
<U2584> /x8c LOWER HALF BLOCK
<U2588> /x8d FULL BLOCK
<U258C> /x8e LEFT HALF BLOCK
<U2590> /x8f RIGHT HALF BLOCK
<U2591> /x90 LIGHT SHADE
<U2592> /x91 MEDIUM SHADE
<U2593> /x92 DARK SHADE
<U2320> /x93 TOP HALF INTEGRAL
<U25A0> /x94 BLACK SQUARE
<U2219> /x95 BULLET OPERATOR
<U221A> /x96 SQUARE ROOT
<U2248> /x97 ALMOST EQUAL TO
<U2264> /x98 LESS-THAN OR EQUAL TO
<U2265> /x99 GREATER-THAN OR EQUAL TO
<U00A0> /x9a NO-BREAK SPACE
<U2321> /x9b BOTTOM HALF INTEGRAL
<U00B0> /x9c DEGREE SIGN
<U00B2> /x9d SUPERSCRIPT TWO
<U00B7> /x9e MIDDLE DOT
<U00F7> /x9f DIVISION SIGN
<U2550> /xa0 BOX DRAWINGS DOUBLE HORIZONTAL
<U2551> /xa1 BOX DRAWINGS DOUBLE VERTICAL
<U2552> /xa2 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
<U2553> /xa4 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
<U2554> /xa5 BOX DRAWINGS DOUBLE DOWN AND RIGHT
<U2555> /xa6 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
<U2556> /xa7 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
<U2557> /xa8 BOX DRAWINGS DOUBLE DOWN AND LEFT
<U2558> /xa9 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
<U2559> /xaa BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
<U255A> /xab BOX DRAWINGS DOUBLE UP AND RIGHT
<U255B> /xac BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
<U255C> /xad BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
<U255D> /xae BOX DRAWINGS DOUBLE UP AND LEFT
<U255E> /xaf BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
<U255F> /xb0 BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
<U2560> /xb1 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
<U2561> /xb2 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
<U2562> /xb4 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
<U2563> /xb5 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
<U2564> /xb6 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
<U2565> /xb7 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
<U2566> /xb8 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
<U2567> /xb9 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
<U2568> /xba BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
<U2569> /xbb BOX DRAWINGS DOUBLE UP AND HORIZONTAL
<U256A> /xbc BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
<U256B> /xbd BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
<U256C> /xbe BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
<U00A9> /xbf COPYRIGHT SIGN
<UF8D0> /xd0 Klingon letter A
<UF8D1> /xd1 Klingon letter B
<UF8D2> /xd2 Klingon letter CH
<UF8D3> /xd3 Klingon letter D
<UF8D4> /xd4 Klingon letter E
<UF8D5> /xd5 Klingon letter GH
<UF8D6> /xd6 Klingon letter H
<UF8D7> /xd7 Klingon letter I
<UF8D8> /xd8 Klingon letter J
<UF8D9> /xd9 Klingon letter L
<UF8DA> /xda Klingon letter M
<UF8DB> /xdb Klingon letter N
<UF8DC> /xdc Klingon letter NG
<UF8DD> /xdd Klingon letter O
<UF8DE> /xde Klingon letter P
<UF8DF> /xdf Klingon letter Q
<UF8E0> /xe0 Klingon letter QH
<UF8E1> /xe1 Klingon letter R
<UF8E2> /xe2 Klingon letter S
<UF8E3> /xe3 Klingon letter T
<UF8E4> /xe4 Klingon letter TLH
<UF8E5> /xe5 Klingon letter U
<UF8E6> /xe6 Klingon letter V
<UF8E7> /xe7 Klingon letter W
<UF8E8> /xe8 Klingon letter Y
<UF8E9> /xe9 Klingon letter glottal stop
<UF8F0> /xf0 Klingon digit 0
<UF8F1> /xf1 Klingon digit 1
<UF8F2> /xf2 Klingon digit 2
<UF8F3> /xf3 Klingon digit 3
<UF8F4> /xf4 Klingon digit 4
<UF8F5> /xf5 Klingon digit 5
<UF8F6> /xf6 Klingon digit 6
<UF8F7> /xf7 Klingon digit 7
<UF8F8> /xf8 Klingon digit 8
<UF8F9> /xf9 Klingon digit 9
<UF8FD> /xfd Klingon ,
<UF8FE> /xfe Klingon full stop
<UF8FF> /xff Klingon mummification glyph
END CHARMAP

View file

@ -0,0 +1,53 @@
.colors 16
-selection default/default inverse
-menusel default/default inverse
-linum default dim
-curlinum default bold
=Idle
=Bad bold red
=Preproc blue
=Define bold blue
=Comment green
=IncLocal cyan
=IncSystem bold cyan
=Constant cyan
=Escape bold cyan
=Type bold
=Keyword bold
=Brace magenta
=Control
=Ident
=Tag bold blue
=TagName +Tag
=TODO default/default inverse
=Title bold
=diff.DelLine red
=diff.AddLine green
=diff.ChgLine magenta
=diff.Garbage dim white
=diff.FileOld bold red
=diff.FileNew bold green
=diff.Hunk bold blue
# For backwards compatibility with older syntaxes that specify colors,
# the scheme must specify termcolors. Yes this is a bit of a kludge.
-term 0 0
-term 1 1
-term 2 2
-term 3 3
-term 4 4
-term 5 5
-term 6 6
-term 7 7
-term 8 8
-term 9 9
-term 10 10
-term 11 11
-term 12 12
-term 13 13
-term 14 14
-term 15 15

View file

@ -0,0 +1,205 @@
# Gruvbox is a VIM scheme written by Pavel Pertsev
# and can be found in its original version at https://github.com/morhetz/gruvbox
.colors 256
# Palette
.set bg 235
.set dark_red 124
.set dark_green 106
.set dark_yellow 172
.set dark_blue 66
.set dark_purple 132
.set dark_aqua 72
.set dark_gray 246
.set light_gray 245
.set light_red 167
.set light_green 142
.set light_yellow 214
.set light_blue 109
.set light_purple 175
.set light_aqua 108
.set fg 223
.set bg0_h 234
.set bg0 235
.set bg1 237
.set bg2 239
.set bg3 241
.set bg4 243
.set dark_orange 166
.set bg0_s 236
.set fg4 246
.set fg3 248
.set fg2 250
.set fg1 223
.set fg0 229
.set light_orange 208
-text [fg]/[bg]
-selection /[bg3]
-status [fg2]/[bg2] bold
-menusel /[bg2] bold
-linum [bg4]/[bg1]
-curlinum [dark_yellow]/[bg1]
-curlin /[bg1]
-cursor [bg]/[fg]
=Comment [light_gray] italic
=TODO inverse bold italic
=Bad [light_red] bold inverse
=DefinedIdent [light_blue]
=DefinedFunction [light_green]
=Builtin [light_green]
=Preproc [light_aqua]
=IncSystem [dark_aqua]
=Keyword [light_red]
=Operator
=Escape [light_orange]
=Label +Keyword
=Loop [light_red]
=Conditional +Keyword
=Statement +Keyword
=Type [light_yellow]
=StorageClass [light_orange]
=Structure [light_aqua]
=Constant [light_purple]
=String [fg2]/[bg1]
=StringEscape /[bg1]
=Character +Constant
=CharacterEscape +Escape
=Variable [light_blue]
=StringVariable [light_blue]/[bg1]
=Tag [light_blue]
=TagName [light_aqua] bold
=TagEnd +Tag
=Define [dark_blue]
=diff.AddLine [bg0]/[light_green]
=diff.DelLine [bg0]/[dark_red]
=Ignore [dark_gray]
# Terminal colors
-term 0 [bg0]
-term 1 [dark_red]
-term 2 [dark_green]
-term 3 [dark_yellow]
-term 4 [dark_blue]
-term 5 [dark_purple]
-term 6 [dark_aqua]
-term 7 [dark_gray]
-term 8 [light_gray]
-term 9 [light_red]
-term 10 [light_green]
-term 11 [light_yellow]
-term 12 [light_blue]
-term 13 [light_purple]
-term 14 [light_aqua]
-term 15 [fg]
.colors *
# Palette
.set bg $282828
.set dark_red $cc241d
.set dark_green $98971a
.set dark_yellow $d79921
.set dark_blue $458588
.set dark_purple $b16286
.set dark_aqua $689d6a
.set dark_gray $a89984
.set light_gray $928374
.set light_red $fb4934
.set light_green $b8bb26
.set light_yellow $fabd2f
.set light_blue $83a598
.set light_purple $d3869b
.set light_aqua $8ec07c
.set fg $ebdbb2
.set bg0_h $1d2021
.set bg0 $282828
.set bg1 $3c3836
.set bg2 $504945
.set bg3 $665c54
.set bg4 $7c6f64
.set dark_orange $d65d0e
.set bg0_s $32302f
.set fg4 $a89984
.set fg3 $bdae93
.set fg2 $d5c4a1
.set fg1 $ebdbb2
.set fg0 $fbf1c7
.set light_orange $fe8019
-text [fg]/[bg]
-selection /[bg3]
-status [fg2]/[bg2] bold
-menusel /[bg2] bold
-linum [bg4]/[bg1]
-curlinum [dark_yellow]/[bg1]
-curlin /[bg1]
-cursor [bg]/[fg]
=Comment [light_gray] italic
=TODO inverse bold italic
=Bad [light_red] bold inverse
=DefinedIdent [light_blue]
=DefinedFunction [light_green]
=Builtin [light_green]
=Preproc [light_aqua]
=IncSystem [dark_aqua]
=Keyword [light_red]
=Operator
=Escape [light_orange]
=Label +Keyword
=Loop [light_red]
=Conditional +Keyword
=Statement +Keyword
=Type [light_yellow]
=StorageClass [light_orange]
=Structure [light_aqua]
=Constant [light_purple]
=String [fg2]/[bg1]
=StringEscape /[bg1]
=Character +Constant
=CharacterEscape +Escape
=Variable [light_blue]
=StringVariable [light_blue]/[bg1]
=Tag [light_blue]
=TagName [light_aqua] bold
=TagEnd +Tag
=Define [dark_blue]
=diff.AddLine [bg0]/[light_green]
=diff.DelLine [bg0]/[dark_red]
=Ignore [dark_gray]
# Terminal colors
-term 0 [bg0]
-term 1 [dark_red]
-term 2 [dark_green]
-term 3 [dark_yellow]
-term 4 [dark_blue]
-term 5 [dark_purple]
-term 6 [dark_aqua]
-term 7 [dark_gray]
-term 8 [light_gray]
-term 9 [light_red]
-term 10 [light_green]
-term 11 [light_yellow]
-term 12 [light_blue]
-term 13 [light_purple]
-term 14 [light_aqua]
-term 15 [fg]

View file

@ -0,0 +1,130 @@
# Based on ir_black vim scheme
# More at: http://blog.infinitered.com/entries/show/8
.colors 256
-text 255/16
-status 252/234 italic
-selection /17
-linum 237
-cursor 16/231
-term 0 239
-term 1 203
-term 2 155
-term 3 229
-term 4 153
-term 5 207
-term 6 146
-term 7 255
-term 8 244
-term 9 217
-term 10 193
-term 11 230
-term 12 230
-term 13 219
-term 14 189
-term 15 231
=Idle
=Keyword 153
=Operator 231
=Type 229
=Boolean +Constant
=Character +Constant
=Comment 244
=Conditional 67
=Constant 151
=Define +Preproc
=DefinedFunction 223
=DefinedIdent 146
=Escape 173
=Float +Number
=IncSystem +Preproc
=Label +Statement
=Loop +Statement
=Macro +Preproc
=Number 207
=Precond +Preproc
=Preproc 153
=Statement 67
=StorageClass +Type
=String 155
=StringEscape +Escape
=Structure +Type
=TODO 246
=Tag +Escape
=Title bold
=html.Tag +Keyword
=html.TagEnd +DefinedIdent
=html.TagName +Conditional
=xml.Tag +Keyword
=xml.TagEnd +DefinedIdent
=xml.TagName +Conditional
.colors *
-text $f6f3e8/$000000
-status $CCCCCC/$202020 italic
-selection /$262D51
-linum $3D3D3D
-cursor $000000/$ffffff
-term 0 $4E4E4E
-term 1 $FF6C60
-term 2 $A8FF60
-term 3 $FFFFB6
-term 4 $96CBFE
-term 5 $FF73FD
-term 6 $C6C5FE
-term 7 $EEEEEE
-term 8 $7C7C7C
-term 9 $FFB6B0
-term 10 $CEFFAB
-term 11 $FFFFCB
-term 12 $FFFFCB
-term 13 $FF9CFE
-term 14 $DFDFFE
-term 15 $FFFFFF
=Idle
=Keyword $96CBFE
=Operator $ffffff
=Type $FFFFB6
=Boolean +Constant
=Character +Constant
=Comment $7C7C7C
=Conditional $6699CC
=Constant $99CC99
=Define +Preproc
=DefinedFunction $FFD2A7
=DefinedIdent $C6C5FE
=Escape $E18964
=Float +Number
=IncSystem +Preproc
=Label +Statement
=Loop +Statement
=Macro +Preproc
=Number $FF73FD
=Precond +Preproc
=Preproc $96CBFE
=Statement $6699CC
=StorageClass +Type
=String $A8FF60
=StringEscape +Escape
=Structure +Type
=TODO $8f8f8f
=Tag +Escape
=Title bold
=html.Tag +Keyword
=html.TagEnd +DefinedIdent
=html.TagName +Conditional
=xml.Tag +Keyword
=xml.TagEnd +DefinedIdent
=xml.TagName +Conditional

View file

@ -0,0 +1,130 @@
# Based on Molokai vim scheme by Tomas Restrepo <tomas@winterdom.com>
# Which was in turn based on the monokai theme for textmate by Wimer Hazenberg
.colors 256
-text 231/234
-status 239/231
-selection /237
-linum 250/235
-curlin /236
-menu 81/16
-menusel /244
-cursor 16/231
-term 0 234
-term 1 196
-term 2 148
-term 3 148
-term 4 125
-term 5 125
-term 6 81
-term 7 231
-term 8 250
-term 9 196
-term 10 148
-term 11 148
-term 12 141
-term 13 141
-term 14 81
-term 15 250
=Idle
=Keyword 197 bold
=Operator 197
=Type 81
=Bad 125/232
=Boolean 141
=Character 186
=Comment 239
=Conditional 197 bold
=Constant 141 bold
=Define 81
=DefinedFunction 148
=DefinedIdent 208
=Escape 81 italic
=Float 141
=Label 186
=Loop 197 bold
=Macro 144 italic
=Number 141
=Precond 148 bold
=Preproc 148
=Statement 197 bold
=StorageClass 208 italic
=String 186
=StringEscape 197 bold
=Structure 81
=TODO 231 bold
=Tag 197 italic
=Title 196
=diff.AddLine /236
=diff.ChgLine 244/238
=diff.DelLine 125/232
.colors *
-text $F8F8F2/$1B1D1E
-status $455354/$F8F8F2
-selection /$403D3D
-linum $BCBCBC/$232526
-curlin /$293739
-menu $66D9EF/$000000
-menusel /$808080
-cursor $000000/$F8F8F0
-term 0 $1B1D1E
-term 1 $EF5939
-term 2 $A6E22E
-term 3 $E6DB74
-term 4 $13354A
-term 5 $465457
-term 6 $66D9EF
-term 7 $F8F8F2
-term 8 $FFFFFF
-term 9 $EF5939
-term 10 $A6E22E
-term 11 $E6DB74
-term 12 $AE81FF
-term 13 $AE81FF
-term 14 $66D9EF
-term 15 $FFFFFF
=Idle
=Keyword $F92672 bold
=Operator $F92672
=Type $66D9EF
=Bad $960050/$1E0010
=Boolean $AE81FF
=Character $E6DB74
=Comment $465457
=Conditional $F92672 bold
=Constant $AE81FF bold
=Define $66D9EF
=DefinedFunction $A6E22E
=DefinedIdent $FD971F
=Escape $66D9EF italic
=Float $AE81FF
=Label $E6DB74
=Loop $F92672 bold
=Macro $C4BE89 italic
=Number $AE81FF
=Precond $A6E22E bold
=Preproc $A6E22E
=Statement $F92672 bold
=StorageClass $FD971F italic
=String $E6DB74
=StringEscape $F92672 bold
=Structure $66D9EF
=TODO $FFFFFF bold
=Tag $F92672 italic
=Title $ef5939
=diff.AddLine /$13354A
=diff.ChgLine $89807D/$4C4745
=diff.DelLine $960050/$1E0010

View file

@ -0,0 +1,169 @@
# Port of Solarized color scheme by Ethan Schoonover
# http://ethanschoonover.com/solarized
.colors *
# Palette
.set base03 $002b36
.set base02 $073642
.set base01 $586e75
.set base00 $657b83
.set base0 $839496
.set base1 $93a1a1
.set base2 $eee8d5
.set base3 $fdf6e3
.set yellow $b58900
.set orange $cb4b16
.set red $dc322f
.set magenta $d33682
.set violet $6c71c4
.set blue $268bd2
.set cyan $2aa198
.set green $859900
# Uncommenting these lines changes this scheme to a light background
#.set base3 $002b36
#.set base2 $073642
#.set base1 $586e75
#.set base0 $657b83
#.set base00 $839496
#.set base01 $93a1a1
#.set base02 $eee8d5
#.set base03 $fdf6e3
-text [base0]/[base03]
-status [base1]/[base02]
-selection [base03]/[base01]
-linum [base01]/[base02]
-menu [base0]/[base02]
-menusel [base01]/[base2]
-curlin /[base02]
-curlinum [base0]
-message [blue]
-cursor [base03]/[base0]
=Comment [base01] italic
=Constant [cyan]
=DefinedIdent [blue]
=Keyword [green]
=Statement [green]
=Preproc [orange]
=Precond [orange]
=Type [yellow]
=Structure +Type
=StorageClass +Type
=Escape [red]
=Bad [red] bold
=TODO [magenta] bold
=Title [orange] bold
=Tag [base01]
=TagName [blue] bold
=TagEnd +Tag
=diff.AddLine [green]/[base02] bold
=diff.ChgLine [yellow]/[base02] bold
=diff.DelLine [red]/[base02] bold
=diff.Garbage [blue]/[base02] bold
# Terminal colors
-term 0 [base02]
-term 1 [red]
-term 2 [green]
-term 3 [yellow]
-term 4 [blue]
-term 5 [magenta]
-term 6 [cyan]
-term 7 [base0]
-term 8 [base03]
-term 9 [red]
-term 10 [base01]
-term 11 [base00]
-term 12 [base0]
-term 13 [violet]
-term 14 [base1]
-term 15 [base3]
.colors 256
# 256-color palette
.set base03 234
.set base02 235
.set base01 240
.set base00 241
.set base0 244
.set base1 245
.set base2 254
.set base3 230
.set yellow 136
.set orange 166
.set red 160
.set magenta 125
.set violet 61
.set blue 33
.set cyan 37
.set green 64
# Uncommenting these lines changes this scheme to a light background
#.set base3 234
#.set base2 235
#.set base1 240
#.set base0 241
#.set base00 244
#.set base01 245
#.set base02 254
#.set base03 230
-text [base0]/[base03]
-status [base1]/[base02]
-selection [base03]/[base01]
-linum [base01]/[base02]
-menu [base0]/[base02]
-menusel [base01]/[base2]
-curlin /[base02]
-curlinum [base0]
-message [blue]
-cursor [base03]/[base0]
=Comment [base01] italic
=Constant [cyan]
=DefinedIdent [blue]
=Keyword [green]
=Statement [green]
=Preproc [orange]
=Precond [orange]
=Type [yellow]
=Structure +Type
=StorageClass +Type
=Escape [red]
=Bad [red] bold
=TODO [magenta] bold
=Title [orange] bold
=Tag [base01]
=TagName [blue] bold
=TagEnd +Tag
=diff.AddLine [green]/[base02] bold
=diff.ChgLine [yellow]/[base02] bold
=diff.DelLine [red]/[base02] bold
=diff.Garbage [blue]/[base02] bold
# Terminal colors
-term 0 [base02]
-term 1 [red]
-term 2 [green]
-term 3 [yellow]
-term 4 [blue]
-term 5 [magenta]
-term 6 [cyan]
-term 7 [base0]
-term 8 [base03]
-term 9 [red]
-term 10 [base01]
-term 11 [base00]
-term 12 [base0]
-term 13 [violet]
-term 14 [base1]
-term 15 [base3]

View file

@ -0,0 +1,87 @@
# Based on Wombat vim scheme by Lars H. Nielsen <dengmao@gmail.com>
.colors 256
-text 255/235
-status /238 italic
-selection /238
-linum 244/16
-cursor 235/242
-term 0 235
-term 1 203
-term 2 113
-term 3 149
-term 4 238
-term 5 244
-term 6 153
-term 7 255
-term 8 248
-term 9 203
-term 10 113
-term 11 149
-term 12 244
-term 13 246
-term 14 153
-term 15 194
=Idle
=Keyword 153
=Type 149
=Comment 246 italic
=Constant 203
=DefinedFunction 149
=DefinedIdent 149
=Escape 194
=Number 203
=Preproc 203
=Statement 153
=String 113 italic
=TODO 246 italic
=Title bold
.colors *
-text $f6f3e8/$242424
-status /$444444 italic
-selection /$444444
-linum $857b6f/$000000
-cursor $242424/$656565
-term 0 $242424
-term 1 $E5786D
-term 2 $95E454
-term 3 $CAE682
-term 4 $384048
-term 5 $A0A8B0
-term 6 $8AC6F2
-term 7 $F6F3E8
-term 8 $E7F6DA
-term 9 $E5786D
-term 10 $95E454
-term 11 $CAE682
-term 12 $384048
-term 13 $A0A8B0
-term 14 $8AC6F2
-term 15 $E7F6DA
=Idle
=Keyword $8ac6f2
=Type $cae682
=Comment $99968b italic
=Constant $e5786d
=DefinedFunction $cae682
=DefinedIdent $cae682
=Escape $e7f6da
=Number $e5786d
=Preproc $e5786d
=Statement $8ac6f2
=String $95e454 italic
=TODO $8f8f8f italic
=Title bold

View file

@ -0,0 +1,60 @@
# Xoria256 is a VIM scheme written by Dmitriy Y. Zotikov
# and can be found at http://www.vim.org/scripts/script.php?script_id=2140
# This is a straightforward port into JOE based on the 1.5 version
.colors 256
-text 252/234
-cursor 214
-status 231/239 bold
-menu 16/250
-menusel 255/243
-selection 255/96
-prompt 149/234
-message 149/234
-linum 247/233
-curlin /237
-cursor 16/214
=Comment 244
=Constant 229
=DefinedIdent 182
=Number 180
=Preproc 150
=Keyword 110
=Type 146
=TODO 16/184
=Bad 231/160
=Escape 174
=IncSystem +Keyword
=IncLocal +Constant
=Ignore 238
=diff.AddLine 150
=diff.DelLine 174
=Garbage +Ignore
=TagEdge 244
=TagName +Keyword
=Key +Ident
=Value +Constant
=Title 225
-term 0 234
-term 1 160
-term 2 77
-term 3 184
-term 4 98
-term 5 98
-term 6 151
-term 7 252
-term 8 254
-term 9 160
-term 10 77
-term 11 184
-term 12 98
-term 13 98
-term 14 151
-term 15 231

View file

@ -0,0 +1,149 @@
# High-contrast version of zenburn
#
# Nothing too fancy, just some alien fruit salad to keep you in the zone.
# This syntax file was designed to be used with dark environments and
# low light situations. Of course, if it works during a daybright office, go
# ahead :)
#
# Owes heavily to other Vim color files! With special mentions
# to "BlackDust", "Camo" and "Desert".
#
# Credits [from VIM]:
# - Jani Nurminen - original Zenburn
# - Steve Hall & Cream posse - higher-contrast Visual selection
# - Kurt Maier - 256 color console coloring, low and high contrast toggle,
# bug fixing
# - Charlie - spotted too bright StatusLine in non-high contrast mode
# - Pablo Castellazzi - CursorLine fix for 256 color mode
.colors 256
-text 253/234
-status 236/186
-selection 236/79
-linum 145/233
-curlin /233 bold
-curlinum 187/233
-menu 251/235
-menusel 186/237 bold
-cursor 232/109 bold
-term 0 234
-term 1 167
-term 2 115
-term 3 186
-term 4 238
-term 5 139
-term 6 116
-term 7 253
-term 8 188
-term 9 167
-term 10 115
-term 11 228
-term 12 103
-term 13 139
-term 14 116
-term 15 231
=Idle
=Keyword 223 bold
=Operator 230
=Type 187 bold
=Bad 167/237 bold
=Boolean 181
=Character 181 bold
=Comment 108 italic
=Conditional 223 bold
=Constant 181 bold
=Define 180 bold
=DefinedFunction 186
=DefinedIdent 223
=Escape 251
=Float 250
=IncSystem 180 bold
=Label 223 underline
=Loop 223 bold
=Macro 180 bold
=Number 116
=Precond 180 bold
=Preproc 180 bold
=Statement 187
=StorageClass 144 bold
=String 174
=StringEscape 181 bold
=Structure 229 bold
=TODO 188 bold
=Tag 174 bold
=Title 255 bold
=diff.AddLine 66 bold
=diff.ChgLine /236 bold
=diff.DelLine 236/238
.colors *
-text $dcdccc/$1f1f1f
-status $313633/$ccdc90
-selection $233323/$71d3b4
-linum $9fafaf/$161616
-curlin /$121212 bold
-curlinum $f2f3bb/$161616
-menu $ccccbc/$242424
-menusel $ccdc90/$353a37 bold
-cursor $000d18/$8faf9f bold
-term 0 $1F1F1F
-term 1 $E37170
-term 2 $9CCC9C
-term 3 $EFEF8F
-term 4 $000D18
-term 5 $BC8CBC
-term 6 $8CD0D3
-term 7 $DCDCCC
-term 8 $DFDFDF
-term 9 $E37170
-term 10 $CCDC90
-term 11 $F8F893
-term 12 $8C8CBC
-term 13 $BC8CBC
-term 14 $8CD0D3
-term 15 $FFFFFF
=Idle
=Keyword $f0dfaf bold
=Operator $f0efd0
=Type $dfdfbf bold
=Bad $e37170/$3d3535 bold
=Boolean $dca3a3
=Character $dca3a3 bold
=Comment $7f9f7f italic
=Conditional $f0dfaf bold
=Constant $dca3a3 bold
=Define $ffcfaf bold
=DefinedFunction $efef8f
=DefinedIdent $efdcbc
=Escape $cfbfaf
=Float $c0bed1
=IncSystem $dfaf8f bold
=Label $dfcfaf underline
=Loop $ffd7a7 bold
=Macro $ffcfaf bold
=Number $8cd0d3
=Precond $dfaf8f bold
=Preproc $ffcfaf bold
=Statement $e3ceab
=StorageClass $c3bf9f bold
=String $cc9393
=StringEscape $dca3a3 bold
=Structure $efefaf bold
=TODO $dfdfdf bold
=Tag $e89393 bold
=Title $efefef bold
=diff.AddLine $709080/$313c36 bold
=diff.ChgLine /$333333
=diff.DelLine $333333/$464646

View file

@ -0,0 +1,147 @@
# Nothing too fancy, just some alien fruit salad to keep you in the zone.
# This syntax file was designed to be used with dark environments and
# low light situations. Of course, if it works during a daybright office, go
# ahead :)
#
# Owes heavily to other Vim color files! With special mentions
# to "BlackDust", "Camo" and "Desert".
#
# Credits [from VIM]:
# - Jani Nurminen - original Zenburn
# - Steve Hall & Cream posse - higher-contrast Visual selection
# - Kurt Maier - 256 color console coloring, low and high contrast toggle,
# bug fixing
# - Charlie - spotted too bright StatusLine in non-high contrast mode
# - Pablo Castellazzi - CursorLine fix for 256 color mode
.colors 256
-text 253/237
-status 236/186
-selection 236/79
-linum 145/235
-curlin /238
-curlinum 187/235
-menu 247/236
-menusel 187/235 bold
-cursor 232/109 bold
-term 0 237
-term 1 167
-term 2 115
-term 3 186
-term 4 238
-term 5 139
-term 6 116
-term 7 253
-term 8 188
-term 9 167
-term 10 115
-term 11 228
-term 12 103
-term 13 139
-term 14 116
-term 15 231
=Idle
=Keyword 223 bold
=Operator 230
=Type 187 bold
=Bad 167/237 bold
=Boolean 181
=Character 181 bold
=Comment 108 italic
=Conditional 223 bold
=Constant 181 bold
=Define 180 bold
=DefinedFunction 186
=DefinedIdent 223
=Escape 251
=Float 250
=IncSystem 180 bold
=Label 223 underline
=Loop 223 bold
=Macro 180 bold
=Number 116
=Precond 180 bold
=Preproc 180 bold
=Statement 187
=StorageClass 144 bold
=String 174
=StringEscape 181 bold
=Structure 229 bold
=TODO 188 bold
=Tag 174 bold
=Title 255 bold
=diff.AddLine 66 bold
=diff.ChgLine /236 bold
=diff.DelLine 236/238
.colors *
-text $dcdccc/$3f3f3f
-status $313633/$ccdc90
-selection $233323/$71d3b4
-linum $9fafaf/$262626
-curlin /$434443
-curlinum $d2d39b/$262626
-menu $9f9f9f/$2c2e2e
-menusel $d0d0a0/$242424 bold
-cursor $000d18/$8faf9f bold
-term 0 $3F3F3F
-term 1 $E37170
-term 2 $9CCC9C
-term 3 $EFEF8F
-term 4 $000D18
-term 5 $BC8CBC
-term 6 $8CD0D3
-term 7 $DCDCCC
-term 8 $DFDFDF
-term 9 $E37170
-term 10 $CCDC90
-term 11 $F8F893
-term 12 $8C8CBC
-term 13 $BC8CBC
-term 14 $8CD0D3
-term 15 $FFFFFF
=Idle
=Keyword $f0dfaf bold
=Operator $f0efd0
=Type $dfdfbf bold
=Bad $e37170/$3d3535 bold
=Boolean $dca3a3
=Character $dca3a3 bold
=Comment $7f9f7f italic
=Conditional $f0dfaf bold
=Constant $dca3a3 bold
=Define $ffcfaf bold
=DefinedFunction $efef8f
=DefinedIdent $efdcbc
=Escape $cfbfaf
=Float $c0bed1
=IncSystem $dfaf8f bold
=Label $dfcfaf underline
=Loop $ffd7a7 bold
=Macro $ffcfaf bold
=Number $8cd0d3
=Precond $dfaf8f bold
=Preproc $ffcfaf bold
=Statement $e3ceab
=StorageClass $c3bf9f bold
=String $cc9393
=StringEscape $dca3a3 bold
=Structure $efefaf bold
=TODO $dfdfdf bold
=Tag $e89393 bold
=Title $efefef bold
=diff.AddLine $709080/$313c36 bold
=diff.ChgLine /$333333
=diff.DelLine $333333/$464646

2160
joe/usr/share/joe/lang/de.po Normal file

File diff suppressed because it is too large Load diff

2111
joe/usr/share/joe/lang/fr.po Normal file

File diff suppressed because it is too large Load diff

2190
joe/usr/share/joe/lang/ru.po Normal file

File diff suppressed because it is too large Load diff

2188
joe/usr/share/joe/lang/uk.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,219 @@
# JOE syntax highlight file for Progress 4GL
# by Gediminas http://proc.w3.lt
# Version 1.04
=Idle
=Comment
=Constant
=String +Constant
=Number +Constant
=Type
=Ident
# conditional operators, blocks
=Keyword
=Conditional +Keyword
=Operator +Keyword
# preprocessor include, definition, reference
=Preproc
=Include +Preproc
=PreRef +Ident
:idle Idle
* idle
"/" slash
"{" brace
"&" prep buffer
"a-zA-Z" ident buffer
"'" string recolor=-1
"\"" string2 recolor=-1
"0-9" number recolor=-1
"?" question recolor=-1
# Comments - 2 levels of nesting allowed
:slash Idle
* idle noeat
"*" comment recolor=-2
:comment Comment comment
* comment
"/" slash2
"*" maybe_end_comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
:maybe_end_comment Comment comment
* comment
"/" idle
"*" maybe_end_comment
:slash2 Idle
* comment noeat
"*" comment2 recolor=-2
:comment2 Comment comment
* comment2
"*" maybe_end_comment2
"BFHNTX" comment2 noeat call=comment_todo.comment_todo()
:maybe_end_comment2 Comment comment
* comment2
"/" comment
"*" maybe_end_comment2
# Preprocessor
# Allow preprocessor name reference inside include file reference:
# {include/trace {&FILE-NAME} {&LINE-NUMBER}}
:brace Include
* include noeat
"&" scoped recolor=-2
"}" idle
:include Include
* include recolor=-2
"{" brace2
"}" idle
:brace2 Include
* include2 noeat
"}" idle
:include2 Include
* include2 recolor=-2
"}" include
:scoped PreRef
* scoped
"}" idle
:prep Preproc
* idle noeat istrings
"&IF" predir
"&THEN" predir
"&ELSEIF" predir
"&ELSE" predir
"&ENDIF" predir
"&SCOPED-DEFINE" predir
"&SCOP" predir
"&GLOBAL-DEFINE" predir
"&GLOB" predir
"&MESSAGE" predir
"&UNDEFINE" predir
"&UNDEF" predir
done
"-a-zA-Z0-9_" prep
:predir Preproc
* idle noeat
# String constants, copied from pascal.jsf with " added
:string String string
* string
"\n" idle
"'" maybe_end_string
:maybe_end_string String string
* idle recolor=-1 noeat
"'" string
:string2 String string
* string2
"\n" idle
"\"" maybe_end_string2
:maybe_end_string2 String string
* idle recolor=-1 noeat
"\"" string2
# Numeric constant, same as pascal.jsf
:number Number
* idle noeat
"0-9" number
"eE" epart
"." dot
:dot Number
* idle noeat
"0-9" float
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:question Constant
* idle noeat
# Keywords
# Available jumps: cond type oper kw
# TODO: This needs to be vastly expanded, it seems like every other
# token in this language is a keyword.
:ident Ident
* idle noeat istrings
"assign" cond
"case" cond
"cha" type
"char" type
"character" type
"create" reserved
"dat" type
"date" type
"dec" type
"decimal" type
"defined" oper
"delete" reserved
"do" reserved
"else" cond
"end" cond
"find" reserved
"for" reserved
"function" cond
"get" reserved
"handle" type
"if" cond
"int" type
"integer" type
"leave" cond
"log" type
"logical" type
"memptr" type
"next" cond
"otherwise" cond
"param" cond
"parameter" cond
"procedure" cond
"raw" type
"rec" type
"repeat" cond
"reposition" reserved
"return" cond
"rowid" type
"run" cond
"then" cond
"when" cond
"widget-handle" type
done
"-a-zA-Z0-9_" ident
:cond Conditional
* idle noeat
:type Type
* idle noeat
:oper Operator
* idle noeat
:reserved Keyword
* idle noeat

View file

@ -0,0 +1,193 @@
# JOE syntax highlight file for ADA
# Define colors
=Idle
=Comment
=Constant
=Character +Constant
=Number +Constant
=String +Constant
=StringEscape +Escape +String
=Keyword
=Operator +Keyword
:idle Idle
* idle
"-" maybe_comment
"'" char recolor=-1
"\"" string recolor=-1
"0-9" first_digit recolor=-1
"." maybe_float
"\"" string recolor=-1
"Bb" maybe_binary buffer
"Oo" maybe_octal buffer
"Xx" maybe_hex buffer
"ac-np-wyzAC-NP-WYZ" ident buffer
:maybe_comment Idle
* idle noeat
"-" comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" idle
# Character constant
:char Idle
* char1
:char1 Idle
* idle
"'" char2 recolor=-3
:char2 Character
* idle noeat
# Strings
:maybe_binary Idle
* ident noeat
"\"" string recolor=-2
:maybe_octal Idle
* ident noeat
"\"" string recolor=-2
:maybe_hex Idle
* ident noeat
"\"" string recolor=-2
:string String string
* string
"\n" idle
"\"" idle
"\\" string_escape recolor=-1
:string_escape StringEscape string
* string
"\n" string recolor=-2
# Integer constants
:first_digit Number
* idle noeat
"." float
"_" first_digit
"0-9" first_digit
# Floating point
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
# Identifiers
:ident Idle
* quote noeat istrings
"abort" kw
"abs" operator
"abstract" kw
"accept" kw
"aliased" kw
"all" kw
"and" operator
"array" kw
"at" kw
"begin" kw
"body" kw
"case" kw
"constant" kw
"declare" kw
"delay" kw
"delta" kw
"digits" kw
"do" kw
"else" kw
"elsif" kw
"end" kw
"entry" kw
"exception" kw
"exit" kw
"for" kw
"function" kw
"generic" kw
"goto" kw
"if" kw
"in" kw
"interface" kw
"is" kw
"limited" kw
"loop" kw
"mod" kw
"new" kw
"not" operator
"null" kw
"of" kw
"or" operator
"others" kw
"out" kw
"overriding" kw
"package" kw
"pragma" kw
"private" kw
"procedure" kw
"protected" kw
"raise" kw
"range" kw
"record" kw
"rem" operator
"renames" kw
"requeue" kw
"return" kw
"reverse" kw
"select" kw
"separate" kw
"subtype" kw
"synchronized" kw
"tagged" kw
"task" kw
"terminate" kw
"then" kw
"type" kw
"until" kw
"use" kw
"when" kw
"while" kw
"with" kw
"xor" operator
done
"a-zA-Z0-9_" ident
:operator Operator
* idle noeat
:kw Keyword
* idle noeat
# identifiers separated with quote '
:quote Idle
* idle noeat
"'" quote_word
:quote_word Idle
* idle noeat
"a-zA-Z" ident buffer

View file

@ -0,0 +1,30 @@
# JOE syntax highlight file for Ant's build scripts
# by Christian Nicolai (http://mycrobase.de)
# Refactored to XML by John J. Jordan
# http://ant.apache.org/
=Idle
=String +Constant
=StringEscape +Escape +String
:init Idle
* idle noeat call=xml.xml(ant)
.subr maybe_antvar
# initial state
:maybe_antvar String string
* NULL return
"{" antvar recolor=-2
:antvar StringEscape string
* antvar
"}" NULL return
.end
.subr antvar
:antvar StringEscape string
* antvar
"}" NULL return
.end

View file

@ -0,0 +1,257 @@
# JOE syntax highlight file for assembly language
# Highlights ';' comments, C-preprocessor stuff and C-like constants.
# Some assembly languages do not use C-preprocessor and use '#' for
# comments. For them, eliminate all states up to ':idle'. and change the
# ";" line in 'idle' to '#'.
# For UNIX assembly ';' actually separates instructions, but I've only seen
# this for 'rep; movsb'. If it bothers you eliminate the ';' line in
# ':idle'.
# This highlighter is too strict for numeric constants. Many assembly
# languages allow '000009', which looks like a bad octal constant in C/UNIX.
=Idle
=Ident
=Bad
=Preproc
=Define
=Comment
=IncLocal +String +Preproc
=IncSystem +Preproc
=Constant
=Number +Constant
=String +Constant
=Character +String
=CharacterEscape +Escape +Character
=StringEscape +Escape +String
=Type
=Brace
=Control
:reset Idle
* first noeat
" \t" reset
:first Idle
* idle noeat
"#" pre recolor=-1
:pre Preproc
* preproc noeat
" \t" pre
"a-z" preident recolor=-1 buffer
:preident Preproc
* preproc noeat strings
"define" predef
"include" preinc
done
"a-z" preident
:preinc Preproc
* preinc
" \t" preinc_ws
"\n" reset
:preinc_ws Preproc
* prebad recolor=-1
" \t" preinc_ws
"\"" preinc_local recolor=-1
"<" preinc_system recolor=-1
:preinc_local IncLocal
* preinc_local
"\"\n" reset
:preinc_system IncSystem
* preinc_system
">\n" reset
:prebad Bad
* prebad
"\n" reset
:predef Preproc
* predef
" \t" predef_ws
"\n" reset
:predef_ws Preproc
* prebad recolor=-1
" \t" predef_ws
"a-zA-Z0-9_" predef_ident recolor=-1
:predef_ident Define
* idle noeat
"a-zA-Z0-9_" predef_ident
:preproc Preproc
* preproc
"\n" reset
"\\" preproc_cont
"/" preproc_slash
:preproc_slash Preproc
* preproc noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
:preproc_cont Preproc
* preproc_cont
"\n" preproc
# All following states are for when we're not in a preprocessor line
:idle Idle
* idle
";" line_comment recolor=-1
"\n" reset
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"a-zA-Z_" ident buffer
"{}" brace recolor=-1
",:=()><[]*&|!~+\-%^" control recolor=-1
:brace Brace
* idle noeat
:control Control
* idle noeat
:slash Idle
* idle noeat recolor=-2 # Not sure about this
"*" comment recolor=-2
"/" line_comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\n" reset
"diouxXeEfFgGaAcspn%SC" string
:char CharacterEscape
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape
* char
"x" char_hex1
"0-7" char_octal2
"\n" char recolor=-2
:char_hex1 CharacterEscape
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape
* char noeat
"0-7" char
:ident Ident
* idle noeat
"a-zA-Z0-9_" ident

View file

@ -0,0 +1,197 @@
# JOE syntax highlight file for AVR assembly language
=Idle
=Ident
=Preproc # basic color for directives
=Include +Preproc # "include" - color
=Define +Preproc # same for "def" and "equ"
=DefinedIdent +Define +Ident # text after ".def" or ".equ"
=Macro +Define # color of word "macro"
=Path +String # color for include-path
=Com +Keyword # command
=Comment # comment-color
=Label +DefinedIdent # label
:idle Idle
* idle
"." preproc recolor=-1
";" comment recolor=-1
"a-zA-Z_0-9" ident recolor=-1 buffer mark
:preproc Preproc
* preproc
"a-zA-Z" preident buffer
"\n" idle
";" comment recolor=-1
:preident Preproc
* preproc noeat istrings
"include" preinc
"def" predef
"equ" predef
"macro" premacro
"endmacro" premacro
"endm" premacro
done
"a-zA-Z" preident
";" comment recolor=-1
:preinc Include
* preinc
" \t" path
"\n" idle
";" comment recolor=-1
:predef Define
* predef
" \t" definition
"\n" idle
";" comment recolor=-1
:definition DefinedIdent
* definition
"\n" idle
";" comment recolor=-1
:premacro Macro
* premacro
" \t\n" idle
";" comment recolor=-1
:path Path
* path
"\n" idle
";" comment recolor=-1
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" idle
:ident Ident
* idle noeat istrings
"and" com
"andi" com
"eor" com
"or" com
"ori" com
"com" com
"neg" com
"clr" com
"ser" com
"cr" com
"tst" com
"swap" com
"add" com
"adc" com
"adiw" com
"sub" com
"subi" com
"sbc" com
"sbci" com
"sbiw" com
"dec" com
"inc" com
"asr" com
"lsl" com
"lsr" com
"rol" com
"ror" com
"mul" com
"muls" com
"mulsu" com
"fmul" com
"fmuls" com
"fmulsu" com
"cbr" com
"sbr" com
"sbi" com
"cbi" com
"bclr" com
"bset" com
"bld" com
"bst" com
"clc" com
"sec" com
"cln" com
"sen" com
"clz" com
"sez" com
"cli" com
"sei" com
"cls" com
"ses" com
"clv" com
"sev" com
"clt" com
"set" com
"clh" com
"seh" com
"mov" com
"movw" com
"ldi" com
"ld" com
"ldd" com
"lds" com
"st" com
"std" com
"sts" com
"lpm" com
"elpm" com
"spm" com
"espm" com
"in" com
"out" com
"push" com
"pop" com
"rjmp" com
"ijmp" com
"eijmp" com
"jmp" com
"rcall" com
"icall" com
"eicall" com
"call" com
"ret" com
"reti" com
"cp" com
"cpc" com
"cpi" com
"cpse" com
"sbrc" com
"sbrs" com
"sbic" com
"sbis" com
"brbc" com
"brbs" com
"brcs" com
"brcc" com
"breq" com
"brne" com
"brsh" com
"brlo" com
"brmi" com
"brpl" com
"brge" com
"brlt" com
"brhs" com
"brhc" com
"brts" com
"brtc" com
"brvs" com
"brvc" com
"brid" com
"brie" com
"nop" com
"sleep" com
"wdr" com
done
"a-zA-Z0-9_" ident
":" itslabel recolor=-1 markend recolormark
:itslabel Label
* idle
:com Com
* idle noeat

View file

@ -0,0 +1,237 @@
# JOE syntax highlight file for AWK
# Resync whole file
-
=Idle
=Ident
=Bad
=Preproc
=Define +Preproc
=Comment
=IncLocal +String +Preproc
=IncSystem +Preproc
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape +String
=Character +String
=CharacterEscape +Escape +Character
=Type
=Keyword
=Brace +Control
=Control
:reset Idle
* first noeat
" \t" reset
:first Idle
* idle noeat
"/" regex
"#" reset_line_comment recolor=-1
:regex Idle
* regex
"/" idle
"\\" regex_skip
:regex_skip Idle
* regex
:reset_line_comment Comment comment
* reset_line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:idle Idle
* idle
"\n" reset
"#" line_comment recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"a-zA-Z_" ident buffer
"{}" brace recolor=-1
"/,:;=()><[]*&|!~+\-%^" control recolor=-1
:brace Brace
* idle noeat
:control Control
* idle noeat
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string
"\"" string noeat
"\n" reset
"0-9.\-+ #hjILtz$" string_control
:char Character
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape
* char
"x" char_hex1
"0-7" char_octal2
"\n" char recolor=-2
:char_hex1 CharacterEscape
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape
* char noeat
"0-7" char
:ident Ident
* idle noeat istrings
"if" kw
"else" kw
"while" kw
"do" kw
"for" kw
"break" kw
"continue" kw
"delete" kw
"exit" kw
"close" kw
"getline" kw
"next" kw
"nextfile" kw
"print" kw
"printf" kw
"system" kw
"fflush" kw
"atan2" kw
"cos" kw
"exp" kw
"int" kw
"log" kw
"rand" kw
"sin" kw
"sqrt" kw
"srand" kw
"asort" kw
"asorti" kw
"gensub" kw
"gsub" kw
"index" kw
"length" kw
"match" kw
"split" kw
"sprintf" kw
"strtonum" kw
"sub" kw
"substr" kw
"tolower" kw
"toupper" kw
"mktime" kw
"strftime" kw
"systime" kw
"and" kw
"compl" kw
"lshift" kw
"or" kw
"rshift" kw
"xor" kw
"bindtextdomain" kw
"dcgettext" kw
"dcngettext" kw
"function" kw
"return" kw
done
"a-zA-Z0-9_" ident
:kw Keyword
* idle noeat

View file

@ -0,0 +1,186 @@
# JOE syntax highlight file for Windows batch scripts
=Idle
=Comment
=Command +Type
=Statement +Keyword
=Brace
=Variable +DefinedIdent
=StringVariable +StringEscape
=Label
=Conditional +Statement
=Loop +Statement
=String +Constant
:reset Idle
* linebegin noeat
" \t\r\n" reset
:linebegin Idle
* stmtorcommand noeat buffer
":" labelorcomment
"@" linebegin
"%" args call=.variable() recolor=-1
"\"" qargs recolor=-1
"'" sqargs recolor=-1 # These two encountered in
"`" bqargs recolor=-1 # certain varieties of for-loops
:stmtorcommand Command
* command noeat istrings
"call" stmt
"cd" stmt
"chdir" stmt
"cls" stmt
"copy" stmt
"del" stmt
"dir" stmt
"echo" echostmt
"echo." echostmt
"endlocal" stmt
"erase" stmt
"exit" stmt
"for" cond
"goto" loop
"if" cond
"move" stmt
"pause" stmt
"popd" stmt
"pushd" stmt
"rd" stmt
"rem" comment
"ren" stmt
"rename" stmt
"rmdir" stmt
"set" stmt
"setlocal" stmt
"setx" stmt
"shift" stmt
"sleep" stmt
"start" stmt
"type" stmt
"xcopy" stmt
done
"a-zA-Z." stmtorcommand
"\"\\_0-9" command
")" rparen recolor=-1
:labelorcomment Idle
* label recolor=-2
":" comment recolor=-2
:label Label
* label
"\r\n" reset
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\r\n" reset
:loop Loop
* args noeat
:cond Conditional
* args noeat
:stmt Statement
* args noeat
:echostmt Statement
* echoargs noeat
:echoargs String string
* echoargs
"%" echoargs call=.strvariable() recolor=-1
"&" and recolor=-1
">|" reset recolor=-1
"\r\n" reset
:command Command
* command
"\"" qcommand
" \t" args
"\r\n" reset
:qcommand Command
* qcommand
"\"" command
"\r\n" reset
:args Idle
* args
"%" args call=.variable() recolor=-1
"(" lparen recolor=-1
")" rparen recolor=-1
"\r\n" reset
"\"" qargs recolor=-1
"&" and recolor=-1
# Double-quoted args
:qargs String string
* qargs
"\"" args
"%" qargs call=.strvariable() recolor=-1
"\r\n" reset
# Single-quoted args
:sqargs String string
* sqargs
"'" args
"%" sqargs call=.strvariable() recolor=-1
"\r\n" reset
# Back-quoted (`) args, found in some for-loops
:bqargs String string
* bqargs
"`" args
"%" bqargs call=.strvariable() recolor=-1
"\r\n" reset
:and Idle
"&" and
* reset noeat
:lparen Brace
* linebegin noeat
:rparen Brace
* args noeat
.subr variable
:variable Variable
* args noeat return
"%~" shortvar
"\*" noeat return
"0-9" variable return
"A-Za-z_" varbody
:shortvar Variable
* args noeat return
"A-Za-z0-9_" shortvar
:varbody Variable
* varbody
"%" args return
.end
.subr strvariable
:variable StringVariable string
* args noeat return
"%~" shortvar
"\*" noeat return
"0-9" variable return
"A-Za-z_" varbody
:shortvar StringVariable string
* args noeat return
"A-Za-z0-9_" shortvar
:varbody StringVariable string
* varbody
"%" args return
.end

View file

@ -0,0 +1,522 @@
# JOE syntax highlight file for C and C++
# A (deterministic) state machine which performs lexical analysis of C.
# (This is the "assembly language" of syntax highlighting. A separate
# program could be used to convert a regular expression NFA syntax into this
# format).
# Each state begins with ':<name> <color-name> <context>'
#
# <color-name> is the color used for characters eaten by the state
# (really a symbol for a user definable color).
#
# <context> tells JOE if the current character is part of a comment or a string.
# This allows JOE to skip over comments and strings when matching characters
# such as parentheses. To use this feature, the -highlighter_context option
# must be applied to the files highlighted by the corresponding syntax. To
# apply the option, add it to ftyperc for those file entries.
#
# The valid contexts are:
# comment This character is part of a comment. Example: /* comment */
#
# string This character is part of a string. Examples: "string" 'c' 'string'
#
# The comment and string delimiters themselves should be marked with the
# appropriate context. The context is considered to be part of the color, so
# the recolor=-N and recolormark options apply the context to previous
# characters.
# The first state defined is the initial state.
# Within a state, define transitions (jumps) to other states. Each
# jump has the form: <character-list> <target-state> [<option>s]
# There are three ways to specify <character-list>s, either * for any
# character not otherwise specified, % or & to match the character in the
# delimiter match buffer or a literal list of characters within quotes
# (ranges and escape sequences allowed). When the next character matches
# any in the list, a jump to the target-state is taken and the character is
# eaten (we advance to the next character of the file to be colored).
#
# The * transition should be the first transition specified in the state.
#
# There are several options:
# noeat do not eat the character, instead feed it to the next state
# (this tends to make the states smaller, but be careful: you
# can make infinite loops). 'noeat' implies 'recolor=-1'.
#
# recolor=-N Recolor the past N characters with the color of the
# target-state. For example once /* is recognized as the
# start of C comment, you want to color the /* with the C
# comment color with recolor=-2.
#
# mark Mark beginning of a region with current position.
#
# markend Mark end of region.
#
# recolormark Recolor all of the characters in the marked region with
# the color of the target-state. If markend is not given,
# all of the characters up to the current position are recolored.
# Note that the marked region can not cross line boundaries and
# must be on the same line as recolormark.
#
# buffer start copying characters to a string buffer, beginning with this
# one (it's ok to not terminate buffering with a matching
# 'strings' option- the buffer is limited to leading 23
# characters).
#
# save_c Save character in delimiter match buffer.
#
# save_s Copy string buffer to delimiter match buffer.
#
# strings A list of strings follows. If the buffer matches any of the
# given strings, a jump to the target-state in the string list
# is taken instead of the normal jump.
#
# istrings Same as strings, but case is ignored.
#
# Note: strings and istrings should be the last option on the
# line. They cause any options which follow them to be ignored.
#
# hold Stop buffering string- a future 'strings' or 'istrings' will
# look at contents of buffer at this point. Useful for distinguishing
# commands and function calls in some languages 'write 7' is a command
# 'write (' is a function call- hold lets us stop at the space and delay
# the string lookup until the ( or 7.
#
# The format of the string list is:
#
# "string" <target-state> [<options>s]
# "string" <target-state> [<options>s]
# "&" <target-state> [<options>s] # matches contents of delimiter match buffer
# done
#
# (all of the options above are allowed except "strings", "istrings" and "noeat". noeat is
# always implied after a matched string).
#
# Weirdness: only states have colors, not transitions. This means that you
# sometimes have to make dummy states with '* next-state noeat' just to get
# a color specification.
#
# Delimiter match buffer is for perl and shell: a regex in perl can be s<..>(...)
# and in shell you can say: <<EOS ....... EOS
# New feature: subroutines
#
# Highlighter state machines can now make subroutine calls. The highlighter has
# a run-time stack that allows unlimited recursion.
#
# To call a subroutine, use the 'call' option:
#
# "\"" fred call=string(dquote)
#
# The subroutine called 'string' is called and the jump to 'fred' is
# ignored. The 'dquote' option is passed to the subroutine.
#
# The subroutine itself returns to the caller like this:
# "\"" whatever return
#
# If we're in a subroutine, the return is made. Otherwise the jump
# to 'whatever' is made.
#
# There are several ways of delimiting subroutines which show up in how it
# is called. Here are the options:
#
# call=string() A file called string.jsf is the subroutine.
# The entire file is the subroutine. The starting
# point is the first state in the file.
#
# call=library.string() A file called library.jsf has the subroutine.
# The subroutine within the file is called string.
#
# call=.string() There is a subroutine called string in the current file.
#
# When a subroutine is within a file, but is not the whole file, it is delimited
# as follows:
#
# .subr string
#
# . . . states for string subroutine . . .
#
# .end
#
# Option flags can be passed to subroutines which control preprocessor-like
# directives. For example:
#
# .ifdef dquote
# "\"" idle return
# .endif
# .ifdef squote
# "'" idle return
# .endif
#
# .else if also available. .ifdefs can be nested.
# Obsolete feature: the sync lines specification no longer matter. We now always parse
# from the beginning of the file. Here is the old description:
#
# Define no. sync lines
# You can say:
# -200 means 200 lines
# - means always start parsing from beginning of file when we lose sync
# if nothing is specified, the default is -50
-
=Idle
=Ident
=Bad
=Preproc
=Precond +Preproc
=Define +DefinedIdent +Preproc
=IncLocal +String +Preproc
=IncSystem +Preproc +Keyword
=Comment
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape +String
=Character +String
=CharacterEscape +StringEscape +Character
=Escape
=Keyword
=CppKeyword +Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
=Label +DefinedIdent
=Type
=StorageClass +Type +Keyword
=Structure +Type +Keyword
=Brace
=Control
:reset Idle
* first noeat
" \t" reset
:first Idle
* idle noeat
"#" pre mark
:pre Preproc
* preproc noeat
" \t" pre
"a-z" preident recolor=-1 buffer
:preident Preproc
* preproc noeat markend recolormark strings
"define" predef markend recolormark
"include" preinc markend recolormark
"if" precond markend recolormark
"ifdef" precond markend recolormark
"ifndef" precond markend recolormark
"else" precond markend recolormark
"elif" precond markend recolormark
"endif" precond markend recolormark
done
"a-z" preident
:precond Precond
* preproc noeat
:preinc Preproc
* preinc
" \t" preinc_ws
"\n" reset
:preinc_ws Preproc
* prebad recolor=-1
" \t" preinc_ws
"\"" preinc_local recolor=-1
"<" preinc_system recolor=-1
:preinc_local IncLocal string
* preinc_local
"\"\n" reset
:preinc_system IncSystem string
* preinc_system
">\n" reset
:prebad Bad
* prebad
"\n" reset
:predef Preproc
* predef
" \t" predef_ws
"\n" reset
:predef_ws Preproc
* prebad recolor=-1
" \t" predef_ws
"\c" predef_ident recolor=-1
:predef_ident Define
* idle noeat
"\c" predef_ident
:preproc Preproc
* preproc
"\n" reset
"\\" preproc_cont
"/" preproc_slash
:preproc_slash Preproc
* preproc noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
:preproc_cont Preproc
* preproc_cont
"\n" preproc
# All following states are for when we're not in a preprocessor line
:idle Idle
* idle
"\n" reset
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"\i" ident recolor=-1 buffer
"\\" outside_escape recolor=-1
"{}" brace recolor=-1
",:;=()><[]*&|!~+\-%^" control recolor=-1
:outside_escape Escape
* idle
:brace Brace
* idle noeat
:control Control
* idle noeat
:slash Idle
* idle noeat recolor=-2 # Not sure about this
"*" comment recolor=-2
"/" line_comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:first_digit Number
* idle noeat
"xX" hex recolor=-2
"." float
"eE" epart
"0-7" octal recolor=-2
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex
"0-7" string_octal2
"\n" string recolor=-2
# \x will consume all successive hex digits (ANSI C).
:string_hex StringEscape string
* string noeat
"0-9a-fA-F" string_hex
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string
"\"" string noeat
"\n" reset
"\\" string_escape recolor=-1
"0-9.\-+ #hjILtz$" string_control
:char Character string
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"x" char_hex
"0-7" char_octal2
"\n" char recolor=-2
# \x will consume all successive hex digits (ANSI C).
:char_hex CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
:ident Ident
* idle noeat strings
"int" type
"float" type
"long" type
"short" type
"char" type
"double" type
"signed" type
"unsigned" type
"void" type
"static" storage
"register" storage
"extern" storage
"inline" type
"auto" storage
"const" storage
"volatile" storage
"if" cond
"else" cond
"while" loop
"for" loop
"break" stmt
"continue" stmt
"do" loop
"case" label
"default" label
"switch" cond
"goto" stmt
"struct" struct
"enum" struct
"return" stmt
"sizeof" kw
"typedef" struct
"union" struct
"asm" kw
# C++ keywords
#"asm" cppkw (listed above as a C keyword)
"bool" cppkw
"catch" cppkw
"class" struct
"const_cast" cppkw
"delete" cppkw
"dynamic_cast" cppkw
"explicit" cppkw
"false" cppkw
"friend" cppkw
#"inline" cppkw (listed above as a C keyword)
"mutable" cppkw
"namespace" cppkw
"new" cppkw
"operator" cppkw
"private" cppkw
"protected" cppkw
"public" cppkw
"reinterpret_cast" cppkw
"static_cast" cppkw
"template" cppkw
"this" cppkw
"throw" cppkw
"true" cppkw
"try" cppkw
"typeid" cppkw
"typename" cppkw
"using" cppkw
"virtual" cppkw
"wchar_t" type
# Non-Standard
"typeof" cppkw
done
"\c" ident
:type Type
* idle noeat
:kw Keyword
* idle noeat
:cppkw CppKeyword
* idle noeat
:label Label
* idle noeat
:loop Loop
* idle noeat
:stmt Statement
* idle noeat
:storage StorageClass
* idle noeat
:cond Conditional
* idle noeat
:struct Structure
* idle noeat

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,697 @@
# JOE syntax highlight file for COBOL
=Idle
=Bad
=Preproc
=Define +Preproc
=Comment
=IncLocal +String +Preproc
=IncSystem +Preproc
=Constant
=String +Constant
=Number +Constant
=Boolean +Constant
=Character +String
=Escape
=StringEscape +Escape
=CharacterEscape +StringEscape
=Type
=Keyword
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Ident
:reset Idle
* idle noeat
"*" line_comment recolor=-1
" \t" reset
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
# All following states are for when we're not in a preprocessor line
:idle Idle
* idle
"\n" reset
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"a-zA-Z_" ident buffer
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\n" reset
"diouxXeEfFgGaAcspn%SC" string
:char Character string
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"x" char_hex1
"0-7" char_octal2
"\n" char recolor=-2
:char_hex1 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape string
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
:ident Ident
* idle noeat istrings
"accept" kw
"access" kw
"add" kw
"address" kw
"advancing" kw
"after" kw
"all" kw
"allowing" kw
"alphabet" kw
"alphabetic" kw
"alphabetic-lower" kw
"alphabetic-upper" kw
"alphanumeric" kw
"alphanumeric-edited" kw
"also" kw
"alter" kw
"alternate" kw
"and" oper
"any" kw
"apply" kw
"are" kw
"area" kw
"areas" kw
"arithmetic" kw
"ascending" kw
"assign" kw
"at" kw
"author" kw
"automatic" kw
"b-and" oper
"b-exor" oper
"b-less" oper
"b-not" oper
"b-or" oper
"basis" kw
"before" kw
"beginning" kw
"binary" kw
"bit" kw
"bits" kw
"blank" kw
"block" kw
"boolean" kw
"bottom" kw
"by" kw
"call" kw
"cancel" kw
"cbl" kw
"cd" kw
"cf" kw
"ch" kw
"character" kw
"characters" kw
"class" kw
"class-id" kw
"clock-units" kw
"close" kw
"cobol" kw
"code" kw
"code-set" kw
"collating" kw
"column" kw
"com-reg" kw
"comma" kw
"commit" kw
"common" kw
"communication" kw
"comp" kw
"comp-1" kw
"comp-2" kw
"comp-3" kw
"comp-4" kw
"comp-5" kw
"comp-6" kw
"comp-7" kw
"comp-8" kw
"comp-9" kw
"computational" kw
"computational-1" kw
"computational-2" kw
"computational-3" kw
"computational-4" kw
"computational-5" kw
"computational-6" kw
"computational-7" kw
"computational-8" kw
"computational-9" kw
"compute" kw
"configuration" kw
"connect" kw
"contained" kw
"contains" kw
"content" kw
"continue" kw
"control" kw
"controls" kw
"converting" kw
"copy" kw
"corr" kw
"corresponding" kw
"count" kw
"currency" kw
"current" kw
"cycle" kw
"data" kw
"date" kw
"date-compiled" kw
"date-written" kw
"day" kw
"day-of-week" kw
"db" kw
"db-access-control-key" kw
"db-data-name" kw
"db-exception" kw
"db-record-name" kw
"db-set-name" kw
"db-status" kw
"dbcs" kw
"de" kw
"debug-contents" kw
"debug-item" kw
"debug-line" kw
"debug-name" kw
"debug-sub-1" kw
"debug-sub-2" kw
"debug-sub-3" kw
"debugging" kw
"decimal-point" kw
"declaratives" kw
"default" kw
"delete" kw
"delimited" kw
"delimiter" kw
"depending" kw
"descending" kw
"destination" kw
"detail" kw
"disable" kw
"disconnect" kw
"display" kw
"display-1" kw
"display-2" kw
"display-3" kw
"display-4" kw
"display-5" kw
"display-6" kw
"display-7" kw
"display-8" kw
"display-9" kw
"divide" kw
"division" kw
"down" kw
"duplicate" kw
"duplicates" kw
"dynamic" kw
"egcs" kw
"egi" kw
"eject" kw
"else" cond
"emi" kw
"empty" kw
"enable" kw
"end" kw
"end-add" kw
"end-call" kw
"end-compute" kw
"end-delete" kw
"end-disable" kw
"end-divide" kw
"end-enable" kw
"end-evaluate" kw
"end-if" cond
"end-invoke" kw
"end-multiply" kw
"end-of-page" kw
"end-perform" kw
"end-read" kw
"end-receive" kw
"end-return" kw
"end-rewrite" kw
"end-search" kw
"end-send" kw
"end-start" kw
"end-string" kw
"end-subtract" kw
"end-transceive" kw
"end-unstring" kw
"end-write" kw
"ending" kw
"enter" kw
"entry" kw
"environment" kw
"eop" kw
"equal" oper
"equals" kw
"erase" kw
"error" kw
"esi" kw
"evaluate" kw
"every" kw
"exact" kw
"exceeds" kw
"exception" kw
"exclusive" kw
"exit" kw
"extend" kw
"external" kw
"false" bool
"fd" kw
"fetch" kw
"file" kw
"file-control" kw
"filler" kw
"final" kw
"find" kw
"finish" kw
"first" kw
"footing" kw
"for" kw
"form" kw
"format" kw
"free" kw
"from" kw
"function" kw
"generate" kw
"get" kw
"giving" kw
"global" kw
"go" kw
"goback" kw
"greater" oper
"group" kw
"heading" kw
"high-value" const
"high-values" const
"i-o" kw
"i-o-control" kw
"id" kw
"identification" kw
"if" cond
"in" oper
"index" kw
"index-1" kw
"index-2" kw
"index-3" kw
"index-4" kw
"index-5" kw
"index-6" kw
"index-7" kw
"index-8" kw
"index-9" kw
"indexed" kw
"indicate" kw
"inherits" kw
"initial" kw
"initialize" kw
"initiate" kw
"input" kw
"input-output" kw
"insert" kw
"inspect" kw
"installation" kw
"into" kw
"invalid" kw
"invoke" kw
"is" oper
"just" kw
"justified" kw
"kanji" kw
"keep" kw
"key" kw
"label" kw
"last" kw
"ld" kw
"leading" kw
"left" kw
"length" kw
"less" oper
"limit" kw
"limits" kw
"linage" kw
"linage-counter" kw
"line" kw
"line-counter" kw
"lines" kw
"linkage" kw
"locally" kw
"local-storage" kw
"lock" kw
"low-value" const
"low-values" const
"member" kw
"memory" kw
"merge" kw
"message" kw
"metaclass" kw
"method" kw
"method-id" kw
"mode" kw
"modify" kw
"modules" kw
"more-labels" kw
"move" kw
"multiple" kw
"multiply" kw
"native" kw
"negative" kw
"next" kw
"no" kw
"normal" kw
"not" oper
"null" const
"nulls" const
"number" kw
"numeric" kw
"numeric-edited" kw
"object" kw
"object-computer" kw
"occurs" kw
"of" kw
"off" kw
"omitted" kw
"on" kw
"only" kw
"open" kw
"optional" kw
"or" oper
"order" kw
"organization" kw
"other" kw
"output" kw
"overflow" kw
"override" kw
"owner" kw
"packed-decimal" kw
"padding" kw
"page" kw
"page-counter" kw
"paragraph" kw
"password" kw
"perform" kw
"pf" kw
"ph" kw
"pic" kw
"picture" kw
"plus" kw
"pointer" kw
"position" kw
"positive" kw
"present" kw
"previous" kw
"printing" kw
"prior" kw
"procedure" kw
"procedure-pointer" kw
"procedures" kw
"proceed" kw
"processing" kw
"program" kw
"program-id" kw
"protected" kw
"purge" kw
"queue" kw
"quote" const
"quotes" const
"random" kw
"rd" kw
"read" kw
"ready" kw
"realm" kw
"receive" kw
"reconnect" kw
"record" kw
"record-name" kw
"recording" kw
"records" kw
"recursive" kw
"redefines" kw
"reel" kw
"reference" kw
"references" kw
"relation" kw
"relative" kw
"release" kw
"reload" kw
"remainder" kw
"removal" kw
"renames" kw
"repeated" kw
"replace" kw
"replacing" kw
"report" kw
"reporting" kw
"reports" kw
"repository" kw
"rerun" kw
"reserve" kw
"reset" kw
"retaining" kw
"retrieval" kw
"return" kw
"return-code" kw
"returning" kw
"reversed" kw
"rewind" kw
"rewrite" kw
"rf" kw
"rh" kw
"right" kw
"rollback" kw
"rounded" kw
"run" kw
"same" kw
"sd" kw
"search" kw
"section" kw
"security" kw
"segment" kw
"segment-limit" kw
"select" kw
"self" kw
"send" kw
"sentence" kw
"separate" kw
"sequence" kw
"sequential" kw
"service" kw
"session-id" kw
"set" kw
"shared" kw
"shift-in" kw
"shift-out" kw
"sign" kw
"size" kw
"skip1" kw
"skip2" kw
"skip3" kw
"sort" kw
"sort-control" kw
"sort-core-size" kw
"sort-file-size" kw
"sort-merge" kw
"sort-message" kw
"sort-mode-size" kw
"sort-return" kw
"source" kw
"source-computer" kw
"space" const
"spaces" const
"special-names" kw
"standard" kw
"standard-1" kw
"standard-2" kw
"standard-3" kw
"standard-4" kw
"start" kw
"status" kw
"stop" kw
"store" kw
"string" kw
"sub-queue-1" kw
"sub-queue-2" kw
"sub-queue-3" kw
"sub-schema" kw
"subtract" kw
"sum" kw
"super" kw
"suppress" kw
"symbolic" kw
"sync" kw
"synchronized" kw
"table" kw
"tally" kw
"tallying" kw
"tape" kw
"tenant" kw
"terminal" kw
"terminate" kw
"test" kw
"text" kw
"than" oper
"then" kw
"through" kw
"thru" loop
"time" kw
"timeout" kw
"times" loop
"title" kw
"to" oper
"top" kw
"trace" kw
"trailing" kw
"transceive" kw
"true" bool
"type" kw
"unequal" kw
"unit" kw
"unstring" kw
"until" loop
"up" kw
"update" kw
"upon" kw
"usage" kw
"usage-mode" kw
"use" kw
"using" kw
"valid" kw
"validate" kw
"value" kw
"values" kw
"varying" loop
"wait" kw
"when" kw
"when-compiled" kw
"with" kw
"within" kw
"words" kw
"working-storage" kw
"write" kw
"write-only" kw
"zero" const
"zeroes" const
"zeros" const
done
"a-zA-Z0-9_\-" ident
:kw Keyword
* idle noeat
:oper Operator
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:const Constant
* idle noeat
:bool Boolean
* idle noeat

View file

@ -0,0 +1,580 @@
# JOE syntax highlight file for Coffeescript
# node = a.b.c /\s+/ seems to be allowed, foo
# need to recognize ... and ..
# include - as part of number?
# after term: it's a regex if
# suppress literals after .
=Idle
=Comment
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=Regex +String
=Escape
=StringEscape +Escape
=StringVariable +StringEscape
=RegexEscape +StringEscape
=RegexVariable +RegexEscape
=Keyword
=Structure +Keyword
=Operator +Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
=Label +DefinedIdent
=Ident
=Bad
:pre_idle Idle
* NULL noeat call=.coffee()
.subr coffee
:idle Idle
* idle
"(" idle call=.coffee(paren)
"[" idle call=.coffee(brack)
"{" idle call=.coffee(squiggly)
.ifdef paren
")" idle return
.else
")" stray recolor=-1
.endif
.ifdef brack
"]" idle return
.else
"]" stray recolor=-1
.endif
.ifdef squiggly_str
"}" string_end_subst noeat
.else
.ifdef squiggly_regex
"}" regex_end_subst noeat
.else
.ifdef squiggly
"}" idle return
.else
"}" stray recolor=-1
.endif
.endif
.endif
"#" comment recolor=-1
"0" zero recolor=-1
"1-9" decimal recolor=-1
"." decimal_point recolor=-1
"\"" maybe_string recolor=-1
"'" maybe_char recolor=-1
"/" slash recolor=-1
"@$\i" ident buffer
:stray Bad
* idle
:after_term Idle
* idle noeat
" \t" after_term_1
"/" slash_after_term_0
# "foo/x" is division?
# "foo/ x" is division.
:slash_after_term_0 Idle
* idle noeat
:after_term_1 Idle
* idle noeat
" \t" after_term_1
"/" slash_after_term_1
# "foo / x" is division
# "foo /x" is regex
:slash_after_term_1 Idle
* sregex noeat recolor=-2
"/" slashslash
" = " idle noeat
:comment Comment comment
* line_comment noeat
"#" maybe_block_comment
:maybe_block_comment Comment comment
* line_comment noeat
"#" maybe_block_comment_1
# This is weird... #### is a line comment, but ### is a block comment
:maybe_block_comment_1 Comment comment
* block_comment noeat
"#" line_comment
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:block_comment Comment comment
* block_comment
"BFHNTX" block_comment noeat call=comment_todo.comment_todo()
"#" block_comment_1
:block_comment_1 Comment comment
* block_comment noeat
"#" block_comment_2
:block_comment_2 Comment comment
* block_comment noeat
"#" idle
# Check for regex
:slash Constant
* sregex noeat recolor=-2
"/" slashslash
:slashslash Constant
* after_term noeat
"/" regex recolor=-3
# Regex like this ///foo///
:regex Regex
* regex
"\\" regex_escape recolor=-1
"#" regex_maybe_subst recolor=-1
"/" regexslash
:regex_maybe_subst RegexVariable
* regex noeat recolor=-1
"{" regex call=.coffee(squiggly_regex)
:regex_end_subst RegexVariable
* idle return
:regexslash Regex
* regex noeat
"/" regexslashslash
:regexslashslash Regex
* regex noeat
"/" after_term
:regex_escape RegexEscape
* regex
"x" regex_hex2
"u" regex_hex4
:regex_uni RegexEscape
* regex_uni
"}" regex
:regex_hex4 RegexEscape
* regex noeat
"{" regex_uni
"0-9a-fA-F" regex_hex3
:regex_hex3 RegexEscape
* regex noeat
"0-9a-fA-F" regex_hex2
:regex_hex2 RegexEscape
* regex noeat
"0-9a-fA-F" regex_hex1
:regex_hex1 RegexEscape
* regex noeat
"0-9a-fA-F" regex
# Regex like this: /foo/
:sregex Regex
* sregex
"\\" sregex_escape recolor=-1
"#" sregex_maybe_subst recolor=-1
"/" after_term
:sregex_maybe_subst RegexVariable
* sregex noeat recolor=-1
"{" sregex call=.coffee(squiggly_regex)
:sregex_escape RegexEscape
* sregex
"x" sregex_hex2
"u" sregex_hex4
:sregex_uni RegexEscape
* sregex_uni
"}" sregex
:sregex_hex4 RegexEscape
* sregex noeat
"{" sregex_uni
"0-9a-fA-F" sregex_hex3
:sregex_hex3 RegexEscape
* sregex noeat
"0-9a-fA-F" sregex_hex2
:sregex_hex2 RegexEscape
* sregex noeat
"0-9a-fA-F" sregex_hex1
:sregex_hex1 RegexEscape
* sregex noeat
"0-9a-fA-F" sregex
# Numbers
:bad_number Bad
* after_term noeat
"0-9" bad_number
:zero Number
* after_term noeat
"b" binary
"o" octal
"x" hex
"." maybe_float
"eE" epart
"0-9" decimal recolor=-1
:decimal_point Number
* after_term noeat recolor=-2
"." decimal_point_1 recolor=-2
"\i" not_ident recolor=-2
"0-9" float
:not_ident Idle
* after_term noeat
"\c" not_ident
:decimal_point_1 Number
* idle noeat
"." idle
:octal Number
* after_term noeat
"0-7_" octal
"89" bad_number recolor=-1
:binary Number
* after_term noeat
"01_" binary
"2-9" bad_number recolor=-1
:hex Number
* after_term noeat
"0-9A-Fa-f_" hex
:decimal Number
* after_term noeat
"0-9_" decimal
"eE" epart
"." maybe_float
:maybe_float Number
* after_term noeat recolor=-2
"." decimal_point_1 recolor=-2
"eE" epart
"0-9_" float
:float Number
* after_term noeat
"eE" epart
"0-9_" float
:epart Number
* after_term noeat
"0-9+\-" enum
:enum Number
* after_term noeat
"0-9_" enum
# strings like "hello"
:maybe_string String string
* string noeat
"\"" maybe_string_1
:maybe_string_1 String string
* after_term noeat
"\"" stringstring
:string String string
* string
"\"" after_term
"#" string_maybe_subst recolor=-1
"\\" string_escape recolor=-1
:string_maybe_subst StringVariable string
* string noeat recolor=-1
"{" string call=.coffee(squiggly_str)
:string_end_subst StringVariable string
* idle return
:string_escape StringEscape string
* string
"x" string_hex2
"u" string_hex4
:string_uni StringEscape string
* string_uni
"}" string
:string_hex4 StringEscape string
* string noeat
"{" string_uni
"0-9a-fA-F" string_hex3
:string_hex3 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string_hex1
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string
# Strings like """ foo """
:stringstring String string
* stringstring
"\"" stringstring_1
"#" stringstring_maybe_subst recolor=-1
"\\" stringstring_escape recolor=-1
:stringstring_1 String string
* stringstring noeat
"\"" stringstring_2
:stringstring_2 String string
* stringstring noeat
"\"" after_term
:stringstring_maybe_subst StringVariable string
* stringstring noeat recolor=-1
"{" stringstring call=.coffee(squiggly_str)
:stringstring_escape StringEscape string
* stringstring
"x" stringstring_hex2
"u" stringstring_hex4
:stringstring_uni StringEscape string
* stringstring_uni
"}" stringstring
:stringstring_hex4 StringEscape string
* stringstring noeat
"{" stringstring_uni
"0-9a-fA-F" stringstring_hex3
:stringstring_hex3 StringEscape string
* stringstring noeat
"0-9a-fA-F" stringstring_hex2
:stringstring_hex2 StringEscape string
* stringstring noeat
"0-9a-fA-F" stringstring_hex1
:stringstring_hex1 StringEscape string
* stringstring noeat
"0-9a-fA-F" stringstring
# string constants like 'h'
:maybe_char String string
* char noeat
"'" maybe_char_1
:maybe_char_1 String string
* after_term noeat
"'" charchar
:char String string
* char
"'" after_term
"\\" char_escape recolor=-1
:char_escape StringEscape string
* char noeat
"x" char_hex2
"u" char_hex4
:char_uni StringEscape string
* char_uni
"}" char_done
:char_hex4 StringEscape string
* char noeat
"{" char_uni
"0-9a-fA-F" char_hex3
:char_hex3 StringEscape string
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 StringEscape string
* char noeat
"0-9a-fA-F" char_hex1
:char_hex1 StringEscape string
* char noeat
"0-9a-fA-F" char
# strings like this '''foo'''
:charchar String string
* charchar
"'" charchar_1
"\\" charchar_escape recolor=-1
:charchar_1 String string
* charchar noeat
"'" charchar_2
:charchar_2 String string
* charchar noeat
"'" after_term
:charchar_escape StringEscape string
* charchar noeat
"x" charchar_hex2
"u" charchar_hex4
:charchar_uni StringEscape string
* charchar_uni
"}" charchar_done
:charchar_hex4 StringEscape string
* charchar noeat
"{" charchar_uni
"0-9a-fA-F" charchar_hex3
:charchar_hex3 StringEscape string
* charchar noeat
"0-9a-fA-F" charchar_hex2
:charchar_hex2 StringEscape string
* charchar noeat
"0-9a-fA-F" charchar_hex1
:charchar_hex1 StringEscape string
* charchar noeat
"0-9a-fA-F" charchar
# Identifiers
:ident Ident
* after_term noeat strings
"and" operator
"break" loop
"by" kw
"catch" kw
"class" struct
"continue" loop
"delete" kw
"debugger" stmt
"do" loop
"else" cond
"extends" kw
"false" bool
"finally" kw
"for" loop
"if" cond
"in" operator
"instanceof" kw
"is" operator
"isnt" operator
"loop" loop
"new" kw
"no" bool
"not" operator
"null" lit
"off" bool
"of" operator
"on" bool
"or" operator
"return" stmt
"super" kw
"switch" cond
"then" kw
"this" lit
"throw" stmt
"true" bool
"try" kw
"typeof" kw
"undefined" lit
"unless" cond
"until" loop
"when" kw
"while" loop
"yes" lit
"yield" stmt
"case" label
"default" label
"function" forbid
"var" forbid
"void" forbid
"with" forbid
"const" forbid
"let" forbid
"enum" forbid
"export" forbid
"import" forbid
"native" forbid
"implements" forbid
"interface" forbid
"package" forbid
"private" forbid
"protected" forbid
"public" forbid
"static" forbid
"arguments" forbid
"eval" forbid
done
"$\c" ident
:kw Keyword
* idle noeat
:forbid Keyword
* idle noeat
:lit Constant
* after_term noeat
:bool Boolean
* after_term noeat
:stmt Statement
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:struct Structure
* idle noeat
:operator Operator
* idle noeat
:label Label
* idle noeat
.end

View file

@ -0,0 +1,29 @@
# JOE syntax highlight file for highlighting TODO: FIXME: XXX: etc
# by Christian Nicolai (http://mycrobase.de)
=Comment
=TODO +Comment
.subr comment_todo
# initial state
:comment_todo_init Comment comment
* comment_todo_guess buffer
# highlight common TODO labels
:comment_todo_guess Comment comment
* comment_todo_unknown noeat strings
"BUG" comment_todo
"FIXME" comment_todo
"HACK" comment_todo
"NOTE" comment_todo
"TODO" comment_todo
"XXX" comment_todo
done
"A-Z" comment_todo_guess
:comment_todo_unknown Comment comment
* NULL noeat return
:comment_todo TODO comment
* NULL noeat return
.end

View file

@ -0,0 +1,86 @@
# JOE syntax highlight file for typical UNIX configuration files
=Idle
=Comment
=String +Constant
=Escape
=StringEscape +Escape
=Backtick +Character +Constant +String
:idle Idle
* idle
"#" comment recolor=-1
"\"" string recolor=-1
"'" single recolor=-1
"\`" backtick recolor=-1
"\\" escape recolor=-1
:escape Escape
* idle
:comment Comment comment
* comment
"\n" idle
:string String string
* string
"\"" idle
"\`" backtick_in_str recolor=-1
"\\" string_escape recolor=-1
:string_escape StringEscape string
* string
"\n" string recolor=-2
:backtick_in_str Backtick
* backtick_in_str
"\`" string
"\\" bt_escape_2 recolor=-1
:bt_escape_2 Escape
* backtick_in_str
"\n" backtick_in_str recolor=-2
:single String string
* single
"'" idle
"\\" single_escape recolor=-1
:single_escape StringEscape string
* single
"\n" single recolor=-2
:backtick Backtick
* backtick
"\`" idle
"\"" string_in_bt recolor=-1
"'" single_in_bt recolor=-1
"\\" bt_escape recolor=-1
:bt_escape Escape
* backtick
"\n" backtick recolor=-2
:string_in_bt String string
* string_in_bt
"\"" backtick
"\\" string_escape_b recolor=-1
:string_escape_b StringEscape string
* string_in_bt
"\n" string_in_bt recolor=-2
:single_in_bt String string
* single_in_bt
"'" backtick
"\\" single_escape_b recolor=-1
:single_escape_b StringEscape string
* single_in_bt
"\n" single_in_bt recolor=-2

View file

@ -0,0 +1,61 @@
# Identify title lines for status line context display
=Idle
=Title bold # Doesn't matter, just make it visible
:idle Idle
* title_line buffer noeat recolor=-1
"b" maybe_begin_1 buffer
"B" maybe_BEGIN_1 buffer
"\n" idle
"/" maybe_comment buffer
"-" maybe_comment_1 buffer
";{} \t\r\f#" comment
:maybe_comment Idle
* title_line noeat recolor=-1
"/*" comment
:maybe_comment_1 Idle
* title_line noeat recolor=-1
"-" comment
:title_line Title
* title_line
"\n" idle save_s
:comment Idle
* comment
"\n" idle
:maybe_begin_1 Idle
* title_line noeat recolor=-2
"e" maybe_begin_2
:maybe_begin_2 Idle
* title_line noeat recolor=-3
"g" maybe_begin_3
:maybe_begin_3 Idle
* title_line noeat recolor=-4
"i" maybe_begin_4
:maybe_begin_4 Idle
* title_line noeat recolor=-5
"n" comment
:maybe_BEGIN_1 Idle
* title_line noeat recolor=-2
"E" maybe_BEGIN_2
:maybe_BEGIN_2 Idle
* title_line noeat recolor=-3
"G" maybe_BEGIN_3
:maybe_BEGIN_3 Idle
* title_line noeat recolor=-4
"I" maybe_BEGIN_4
:maybe_BEGIN_4 Idle
* title_line noeat recolor=-5
"N" comment

View file

@ -0,0 +1,248 @@
# JOE syntax highlight file for csh
# needs work: I just copied this from sh and
# changed the keywords.
# Colors
=Idle
=Ident
=Comment
=String +Constant
=Escape
=StringEscape +Escape
=Keyword
=Variable +DefinedIdent
=StringVariable +StringEscape
=Label +DefinedIdent
=Loop +Statement +Keyword
=Conditional +Statement +Keyword
# Syntax
:idle Idle
* idle
"#" comment recolor=-1
"\\" escape recolor=-1
"$" subst recolor=-1
"'" string_sq recolor=-1
"\"" string_dq recolor=-1
"\`" string_bq recolor=-1
"a-zA-Z{}![" ident buffer
:comment Comment comment
* comment
"\n" idle
:escape Escape
* idle
:subst Variable
* idle
"{" subst_brack
"a-zA-Z_" subst_name
"0-9*@?\-$_!" idle
:subst_name Variable
* idle noeat recolor=-1
"a-zA-Z0-9_" subst_name
:subst_brack Variable
* subst_brack
"}" idle
# Simplest case: no quoting allowed
:string_sq String string
* string_sq
"\'" idle
# double-quote: quoting, backqoutes and substitution allowed
:string_dq String string
* string_dq
"$" string_dq_subst recolor=-1
"\"" idle
"\\" string_dq_esc recolor=-1
"`" string_dq_bq recolor=-1
:string_dq_subst StringEscape string
* string_dq noeat recolor=-2
"$0-9!_\-?*@" string_dq
"a-zA-Z_" string_dq_subst_name
"{" string_dq_subst_brack
:string_dq_subst_name StringVariable string
* string_dq recolor=-1 noeat
"a-zA-Z0-9_" string_dq_subst_name
:string_dq_subst_brack StringEscape string
* string_dq_subst_brack
"}" string_dq
:string_dq_esc StringEscape string
* string_dq recolor=-2
"$`\"\\" string_dq
"\n" string_dq recolor=-2
:string_dq_bq String string
* string_dq_bq
"$" string_dq_bq_subst recolor=-1
"\`" string_dq
"\\" string_dq_bq_esc recolor=-1
:string_dq_bq_subst StringEscape string
* string_dq_bq noeat recolor=-2
"$0-9!_\-?*@" string_dq_bq
"a-zA-Z_" string_dq_bq_subst_name
"{" string_dq_bq_subst_brack
:string_dq_bq_subst_name StringVariable string
* string_dq_bq recolor=-1 noeat
"a-zA-Z0-9_" string_dq_bq_subst_name
:string_dq_bq_subst_brack StringEscape string
* string_dq_bq_subst_brack
"}" string_dq_bq
:string_dq_bq_esc StringEscape string
* string_dq_bq recolor=-2
"$`\"\\" string_dq_bq
"\n" string_dq_bq recolor=-2
# backquote
:string_bq String string
* string_bq
"$" string_bq_subst recolor=-1
"\`" idle
"\\" string_bq_esc recolor=-1
# escape in backquote
:string_bq_esc StringEscape string
* string_bq recolor=-2
"$`\"\\" string_bq
"\n" string_bq recolor=-2
# Substitution in a backquote
:string_bq_subst StringEscape string
* string_bq noeat recolor=-2
"$0-9!_\-?*@" string_bq
"a-zA-Z_" string_bq_subst_name
"{" string_bq_subst_brack
:string_bq_subst_name StringVariable string
* string_bq recolor=-1 noeat
"a-zA-Z0-9_" string_bq_subst_name
:string_bq_subst_brack StringEscape string
* string_bq_subst_brack
"}" string_bq
:ident Ident
* idle noeat strings
"!" kw
"{" kw
"}" kw
"[" kw
"]" kw
"alias" kw
"alloc" kw
"bg" kw
"bindkey" kw
"break" loop
"breaksw" kw
"builtins" kw
"bye" kw
"case" label
"cd" kw
"chdir" kw
"complete" kw
"continue" loop
"default" label
"dirs" kw
"echo" kw
"echotc" kw
"else" cond
"end" kw
"endif" cond
"endsw" kw
"eval" kw
"exec" kw
"exit" kw
"fg" kw
"filetest" kw
"foreach" loop
"getspath" kw
"getxvers" kw
"glob" kw
"goto" kw
"hashstat" kw
"history" kw
"hup" kw
"if" cond
"inlib" kw
"jobs" kw
"kill" kw
"limit" kw
"log" kw
"login" kw
"logout" kw
"ls-F" kw
"migrate" kw
"newgrp" kw
"nice" kw
"nohup" kw
"notify" kw
"onintr" kw
"popd" kw
"printenv" kw
"pushd" kw
"rehash" kw
"repeat" kw
"rootnode" kw
"sched" kw
"set" kw
"setenv" kw
"setpath" kw
"setspath" kw
"settc" kw
"setty" kw
"setxvers" kw
"shift" kw
"source" kw
"stop" kw
"suspend" kw
"switch" cond
"case" label
"telltc" kw
"time" kw
"umask" kw
"unalias" kw
"uncomplete" kw
"unhash" kw
"universe" kw
"unlimit" kw
"unset" kw
"unsetenv" kw
"ver" kw
"wait" kw
"warp" kw
"watchdog" kw
"where" kw
"which" kw
"while" loop
done
"a-zA-Z0-9\-" ident
:kw Keyword
* idle noeat
:cond Conditional
* idle noeat
:loop Loop
* idle noeat
:label Label
* idle noeat

View file

@ -0,0 +1,506 @@
# JOE syntax highlight file for C#
# Based on Java highlighter
=Idle
=Ident
=Preproc
=Precondit +Preproc
=Define +Preproc
=DefinedIdent +Ident
=Comment
=DocComment +Comment
=Constant
=String +Constant
=Character +Constant +String
=Number +Constant
=Boolean +Constant
=Escape
=StringEscape +Escape
=CharacterEscape +Escape
=Type
=Structure +Keyword
=StorageClass +Type +Keyword
=Modifier +StorageClass
=Keyword
=Operator +Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
=Label +DefinedIdent
=Bad
=Brace
=Control
:begin Idle
* begin noeat call=.csharp()
.subr csharp
:reset Idle
* first noeat
" \t" reset
:first Idle
* idle noeat
"#" pre mark
:pre Preproc
* pre noeat
"a-zA-Z" preident recolor=-1 buffer
" \t" pre
"\n" reset
:preident Preproc
* preunknown markend recolormark strings
"if" precondit markend recolormark
"else" precondit markend recolormark
"elif" precondit markend recolormark
"endif" precondit markend recolormark
"region" preregion markend recolormark
"endregion" preregion markend recolormark
"define" predefine markend recolormark
"undef" predefine markend recolormark
"warning" preregion markend recolormark
"error" preregion markend recolormark
"line" prebody markend recolormark
done
"a-z" preident
:prebody Preproc
* prebody
"\n" reset
:precondit Precondit
* precondit
"\n" reset
:preregion Preproc
* preregion_text
"\n" reset
:preregion_text Comment
* preregion_text
"\n" reset
:predefine Define
* predefine_text noeat
" \t" predefine
"\n" reset
:predefine_text DefinedIdent
* predefine_text
" \t" predefine_value
"\n" reset
:predefine_value Idle
* predefine_value
"\n" reset
:preunknown Preproc
* preunknown
"\n" reset
:idle Idle
* idle
"\n" reset
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"@" forcedliteral recolor=-1
"'" char recolor=-1
"\i" ident buffer
"{}" brace recolor=-1
",:;=()><[]*&|!~+\-%^" control recolor=-1
:maybe_done Control
* idle noeat
"/" idle noeat return recolor=-2
:brace Brace
* idle noeat
:control Control
* idle noeat
:forcedliteral Ident
* idle noeat
"\i" ident recolor=-2
"\"" forcedstring recolor=-2
:forcedstring String string
* forcedstring
"\"" forcedstringquot
:forcedstringquot String string
* idle noeat
"\"" forcedstring # @"This -> "" <- is a literal quote"
:slash Idle
* idle noeat
"*" comment recolor=-2
"/" maybe_line_comment recolor=-2
:comment Comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment
* comment
"/" idle
"*" maybe_end_comment
:maybe_line_comment Comment
* line_comment noeat recolor=-1
"/" doc_comment recolor=-3
:line_comment Comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:doc_comment DocComment
* doc_comment
"BFHNTX" doc_comment noeat call=comment_todo.comment_todo()
"\n" reset
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"{" maybe_string_control recolor=-1
"}" maybe_control_end recolor=-1
:string_escape StringEscape string
* string
"xu" string_hex_4 # Yes, \x has up to 4 numbers in C#
"U" string_hex_8
"0-7" string_octal2
"\n" string recolor=-2
# Eight all-purpose (hex/unicode short/unicode long) states for hexadecimal
# escape sequences
:string_hex_8 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_7
:string_hex_7 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_6
:string_hex_6 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_5
:string_hex_5 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_4
:string_hex_4 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_3
:string_hex_3 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_2
:string_hex_2 StringEscape string
* string noeat
"0-9a-fA-F" string_hex_1
:string_hex_1 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:maybe_string_control StringEscape string
* string noeat recolor=-2
"0-9" string_control
"{" string
:string_control StringEscape string
* string_control
"\"" string noeat
"}" string
:maybe_control_end StringEscape string
* string noeat recolor=-2
"}" string
:char Character string
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"xu" char_hex4
"U" char_hex8
"0-7" char_octal2
"\n" char recolor=-2
:char_hex8 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex7
:char_hex7 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex6
:char_hex6 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex5
:char_hex5 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex4
:char_hex4 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex3
:char_hex3 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex1
:char_hex1 CharacterEscape string
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
:ident Ident # http://msdn.microsoft.com/en-us/library/x53a06bb.aspx
* idle noeat strings
"abstract" modifier
"as" operator
"base" kw
"break" loop
"case" label
"catch" stmt
"checked" operator
"class" struct
"const" storage
"continue" loop
"default" label
"delegate" kw
"do" loop
"else" cond
"enum" struct
"event" kw
"explicit" kw
"extern" modifier
"finally" stmt
"fixed" kw
"for" loop
"foreach" loop
"goto" loop
"if" cond
"implicit" kw
"in" operator
"interface" struct
"internal" modifier
"is" operator
"lock" stmt
"nameof" kw
"namespace" struct
"new" operator
"operator" kw
"out" storage
"override" storage
"params" kw
"private" modifier
"protected" modifier
"public" modifier
"readonly" modifier
"ref" storage
"return" stmt
"sealed" modifier
"sizeof" operator
"stackalloc" storage
"static" modifier
"struct" struct
"switch" cond
"this" kw
"throw" stmt
"try" stmt
"typeof" operator
"unchecked" operator
"unsafe" kw
"using" stmt
"virtual" modifier
"volatile" modifier
"while" loop
# Types
"bool" type
"Boolean" type
"byte" type
"Byte" type
"char" type
"Character" type
"decimal" type
"double" type
"Double" type
"float" type
"Float" type
"int" type
"Integer" type
"int16" type
"Int16" type
"int32" type
"Int32" type
"int64" type
"Int64" type
"IntPtr" type
"long" type
"object" type
"Object" type
"sbyte" type
"short" type
"string" type
"String" type
"uint" type
"uint16" type
"uint32" type
"uint64" type
"ulong" type
"ushort" type
"void" type
# These are "contextual" keywords. Should try to do a better and
# and find the context (most are LINQ), but it may not be possible
# in all cases:
"add" kw
"alias" kw
"ascending" kw
"async" kw
"await" kw
"descending" kw
"dynamic" type
"from" kw
"get" kw
"global" kw
"group" kw
"into" kw
"join" kw
"let" kw
"orderby" kw
"partial" kw
"remove" kw
"select" kw
"set" kw
"value" kw
"var" type
"where" kw
"yield" kw
# Literals
"true" bool
"false" bool
"null" lit
done
"\c" ident
:type Type
* idle noeat
:kw Keyword
* idle noeat
:stmt Statement
* idle noeat
:cond Conditional
* idle noeat
:loop Loop
* idle noeat
:struct Structure
* idle noeat
:storage StorageClass
* idle noeat
:modifier Modifier
* idle noeat
:bool Boolean
* idle noeat
:lit Constant
* idle noeat
:operator Operator
* idle noeat
.end

View file

@ -0,0 +1,169 @@
# JOE syntax highlight file for CSS
# by Eric Lin
# Define colors
=Idle
=Comment
=Constant
=Number +Constant
=Escape
=Keyword
=Bad
=Class +Type
=Id +String +DefinedIdent
=Tag
=HTML # TODO: Get back to this when going over html, xml, php, ant, etc
# from html.jsf to support <?php?>
=TagEdge
:begin Idle
* begin noeat call=.css()
#
# For <style> in html
#
.subr css
:reset HTML
* reset
"<" maybe_done recolor=-1
"/" slash
# prevent duplicate code
"#.a-zA-Z" selector noeat
"@" command recolor=-1
:maybe_done TagEdge
* reset_html noeat
"/" reset noeat return recolor=-2
.ifdef php
"?%" rtn_php call=php.php()
.endif
# fix needed to produce similar output without php
:reset_html HTML
* reset noeat recolor=-2
# this state allows php and perl to recolor the ?> %> or &> properly.
:rtn_php TagEdge
* reset noeat
:slash Idle
* reset noeat
"*" comment recolor=-2
:comment Comment comment
* comment
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment
"/" reset
"*" maybe_end_comment
:command Idle
* command
";" reset
"{" command_block
:command_block Idle
* command_block
"}" reset
# CSS selectors
:selector Idle
* selector
"#" id_sel recolor=-1
"." class_sel recolor=-1
"a-zA-Z" tag_sel recolor=-1
":" pseudo_class_sel recolor=-1
"{" style_block recolor=-1
:id_sel Id
* selector noeat
"a-zA-Z0-9_-" id_sel
:class_sel Class
* selector noeat
"a-zA-Z0-9_-" class_sel
:tag_sel Tag
* selector noeat
"a-zA-Z0-9_-" tag_sel
"[" tag_sel_attr recolor=-1
:tag_sel_attr Idle
* tag_sel_attr
"]" selector
:pseudo_class_sel Idle
* selector noeat
"a-zA-Z0-9_-" pseudo_class_sel
# everything inside "{ ... }", containing many "key: value;" pairs
:style_block Idle
* style_block
"}" reset
"/" maybe_style_comment
"a-zA-Z-" style_word recolor=-1
:maybe_style_comment Idle
* style_block recolor=-1
"*" style_comment recolor=-2
:style_comment Comment comment
* style_comment
"*" maybe_end_style_comment
:maybe_end_style_comment Comment comment
* comment
"/" style_block
"*" maybe_end_style_comment
# property-key
:style_word Keyword
* style_word
":" style_value recolor=-1
# property-value
:style_value Idle
* style_value
";" style_block
# treat } without previous ; like ;}
"}" style_block noeat
"#" color recolor=-1
"0-9" decimal recolor=-1
"." maybe_float
"a-zA-Z_" ident
:color Constant
* style_value noeat
"0-9a-fA-F" color
:decimal Number
* style_value noeat
"0-9" decimal
"." float
"a-zA-Z%" decimal_unit
:maybe_float Number
* style_value noeat recolor=-2
"0-9" float recolor=-2
:float Number
* style_value noeat
"0-9" float
"a-zA-Z%" decimal_unit
:decimal_unit Number
* style_value noeat
"a-zA-Z" decimal_unit
:ident Idle
* style_value noeat
"a-ZA-Z0-9_-" ident
.end

View file

@ -0,0 +1,560 @@
# JOE syntax highlight file for D
=Idle
=Ident
=Comment
=Constant
=String +Constant
=Number +Constant
=Boolean +Constant
=Character +String
=Escape
=StringEscape +Escape
=CharacterEscape +StringEscape
=Type
=Keyword
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Label +DefinedIdent
=Bad
=Brace
=Control
=Methods
:begin Idle
* begin noeat call=.d()
.subr d
:idle Idle
* idle
"(" idle call=.d(paren)
"[" idle call=.d(brack)
"{" do_brace recolor=-1 noeat
# "{" brace recolor=-1 call=.d(squiggly)
.ifdef paren
")" idle return
.else
")" stray recolor=-1
.endif
.ifdef brack
"]" idle return
.else
"]" stray recolor=-1
.endif
.ifdef squiggly
"}" brace recolor=-1 return
.else
"}" stray recolor=-1
.endif
"\n" idle
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"\i" ident mark buffer
",:;=><*&|!~+\-%^" control recolor=-1
"r" maybe_rstring mark buffer
"x" maybe_xstring mark buffer
"q" maybe_qstring recolor=-1 mark buffer
"`" bstring recolor=-1
:do_brace Brace
* idle noeat
"{" brace call=.d(squiggly)
:brace Brace
* idle noeat
:stray Bad
* idle noeat
:maybe_done Control
* idle noeat
"/" idle noeat return recolor=-2
:control Control
* idle noeat
:slash Idle
* idle noeat
"*" comment recolor=-2
"+" idle recolor=-2 call=.block_comment()
"/" line_comment recolor=-2
:comment Comment comment
* comment
# might be TODO label
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment noeat
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
# might be TODO label
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:int_postfix Number
* idle noeat
"uU" int_postfix_1
"L" int_postfix_2
:int_postfix_1 Number
* idle noeat
"L" idle
:int_postfix_2 Number
* idle noeat
"uU" idle
:float_postfix Number
* idle noeat
"fF" float_postfix_1
"L" float_postfix_1
"i" idle
:float_postfix_1 Number
* idle noeat
"i" idle
:first_digit Number
* int_postfix noeat
"xX" hex
"bB" bin
"." float
"eE" epart
"0-9" decimal
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* int_postfix noeat
"0-7_" octal
"89" bad_number recolor=-1
:hex Number
* int_postfix noeat
"0-9A-Fa-f_" hex
"." hexfloat
"pP" ppart
:hexfloat Number
* float_postfix noeat
"0-9A-Fa-f_" hexfloat
"pP" ppart
:ppart Number
* float_postfix noeat
"0-9+\-" pnum
:pnum Number
* float_postfix noeat
"0-9_" pnum
:decimal Number
* int_postfix noeat
"0-9_" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"\i" not_ident recolor=-2
"0-9" float recolor=-2
:not_ident Idle
* idle noeat
"\c" not_ident
:float Number
* float_postfix noeat
"eE" epart
"0-9_" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* float_postfix noeat
"0-9_" enum
:maybe_qstring Brace
* ident recolor=-1 noeat
"{" brace call=.d(squiggly)
"\"" qdstring recolor=-2
:qdstring String string
* qstring save_c
"\i" qdelim buffer
:qdelim String string
* qdelim_bad noeat save_s
"\c" qdelim
"\n" skipline noeat save_s
:qdelim_bad Bad
* qdelim_bad
"\n" skipline noeat
:skipline String string
* skipline
"\n" next_line
:todelim String string
* todelim
"\n" next_line
"\"" next_line strings
"&" founddelim
done
:founddelim String string
* idle noeat
"\"" bad_line
:bad_line Bad
* bad_line
"\n" idle
# eat \n so it's not in string.
:next_line String string
* todelim buffer
"\n" next_line
:qstring String string
* qstring
& qstring_1
:qstring_1 String string
* qstring noeat
"\"" string_postfix
:maybe_xstring Idle
* ident noeat
"\"" xstring recolor=-2
:xstring String string
* bad_xstring recolor=-1
" \t\r\n\f0-9A-Fa-f" xstring
"\"" string_postfix
:bad_xstring Bad
* xstring noeat
:maybe_rstring Idle
* ident noeat
"\"" rstring recolor=-2
:rstring String string
* rstring
"\"" string_postfix
:bstring String string
* bstring
"`" string_postfix
:string String string
* string
"\"" string_postfix
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_postfix String string
* idle noeat
"cwd" idle
:string_escape StringEscape string
* string
"U" string_hex8
"u" string_hex4
"x" string_hex2
"0-7" string_octal2
"\n" string recolor=-2
:string_hex8 StringEscape string
* string noeat
"0-9a-fA-F" string_hex7
:string_hex7 StringEscape string
* string noeat
"0-9a-fA-F" string_hex6
:string_hex6 StringEscape string
* string noeat
"0-9a-fA-F" string_hex5
:string_hex5 StringEscape string
* string noeat
"0-9a-fA-F" string_hex4
:string_hex4 StringEscape string
* string noeat
"0-9a-fA-F" string_hex3
:string_hex3 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string_hex1
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal1
:string_octal1 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\n" idle
"\"" string noeat
"diouxXeEfFgGaAcspn%SCM" string
:char Character string
* char_done
"'" idle
"\\" char_escape recolor=-1
:char_done Character string
* idle noeat recolor=-3
"\'" idle
:char_escape CharacterEscape string
* char_done
"U" char_hex8
"u" char_hex4
"x" char_hex2
"0-7" char_octal2
:char_hex8 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex7
:char_hex7 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex6
:char_hex6 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex5
:char_hex5 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex4
:char_hex4 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex3
:char_hex3 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_hex1
:char_hex1 CharacterEscape string
* char_done noeat
"0-9a-fA-F" char_done
:char_octal2 CharacterEscape string
* char_done noeat
"0-7" char_octal1
:char_octal1 CharacterEscape string
* char_done noeat
"0-7" char_done
:ident Ident
* ident_end noeat recolormark strings
"abstract" kw
"alias" kw
"align" kw
"asm" kw
"assert" kw
"auto" kw
"body" kw
"bool" kw
"break" kw
"byte" kw
"case" kw
"cast" kw
"catch" kw
"cdouble" kw
"cent" kw
"cfloat" kw
"char" kw
"class" kw
"const" kw
"continue" kw
"creal" kw
"dchar" kw
"debug" kw
"default" kw
"delegate" kw
"delete" kw
"deprecated" kw
"do" kw
"double" kw
"else" kw
"enum" kw
"export" kw
"extern" kw
"false" kw
"final" kw
"finally" kw
"float" kw
"for" kw
"foreach" kw
"foreach_reverse" kw
"function" kw
"goto" kw
"idouble" kw
"if" kw
"ifloat" kw
"immutable" kw
"import" kw
"in" kw
"inout" kw
"int" kw
"interface" kw
"invariant" kw
"ireal" kw
"is" kw
"lazy" kw
"long" kw
"macro" kw
"mixin" kw
"module" kw
"new" kw
"nothrow" kw
"null" kw
"out" kw
"override" kw
"package" kw
"pragma" kw
"private" kw
"protected" kw
"public" kw
"pure" kw
"real" kw
"ref" kw
"return" kw
"scope" kw
"shared" kw
"short" kw
"static" kw
"struct" kw
"super" kw
"switch" kw
"synchronized" kw
"template" kw
"this" kw
"throw" kw
"true" kw
"try" kw
"typedef" kw
"typeid" kw
"typeof" kw
"ubyte" kw
"ucent" kw
"uint" kw
"ulong" kw
"union" kw
"unittest" kw
"ushort" kw
"version" kw
"void" kw
"volatile" kw
"wchar" kw
"while" kw
"with" kw
"__FILE__" kw
"__MODULE__" kw
"__LINE__" kw
"__FUNCTION__" kw
"__PRETTY_FUNCTION__" kw
"__gshared" kw
"__traits" kw
"__vector" kw
"__parameters" kw
done
"\c" ident
:type Type
* idle noeat
:kw Keyword
* idle noeat
:bad_kw Bad
* idle noeat
:bool Boolean
* idle noeat
:lit Constant
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:stmt Statement
* idle noeat
:operator Operator
* idle noeat
:ident_end Idle
* idle noeat
" " ident_end
"(" method_end noeat recolormark
:method_end Methods
* idle noeat
.end
# Recursive block comments
.subr block_comment
:idle Comment comment
* idle
# might be TODO label
"BFHNTX" idle noeat call=comment_todo.comment_todo()
"+" maybe_done
"/" maybe_recur
:maybe_done Comment comment
* idle noeat
"/" idle return
:maybe_recur Comment comment
* idle noeat
"+" idle call=.block_comment()
.end

View file

@ -0,0 +1,67 @@
# JOE syntax highlight file for apt's sources.list
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Comment
=Keyword
=Bad
=URL +Constant
=SpacyURL +String +Constant
=Distribution +Preproc
=Component +DefinedIdent
:line_start Idle
* line_rest noeat
"#" line_comment recolor=-1
"a-zA-Z" deb recolor=-1
:line_rest Idle
* line_rest
"\n" line_start
:line_comment Comment comment
* line_comment
"\n" line_start
:deb Keyword
* deb
" \t" deb_url_pre
# allow multiple spaces
:deb_url_pre Idle
* deb_url noeat
" \t" deb_url_pre
:deb_url URL
* deb_url
"[" deb_spacy_url recolor=-1
" \t" deb_distro_pre
:deb_spacy_url SpacyURL
* deb_spacy_url
"]" deb_url
# allow multiple spaces
:deb_distro_pre Idle
* deb_distro noeat
" \t" deb_distro_pre
:deb_distro Distribution
* deb_distro
" \t" deb_component_pre
# distro is the last obligatory part,
# components are all optional
"\n" line_start
# allow multiple spaces
:deb_component_pre Idle
* deb_component noeat
" \t" deb_component_pre
:deb_component Component
* deb_component
" \t" deb_component_pre
"\n" line_start

View file

@ -0,0 +1,427 @@
# JOE syntax highlight file for diff/patch files
#
# 2017-02-03 :
#
# Rework color definitions for color schemes
#
# 2007-05-11 :
#
# This file is just udiff.jsf, ndiff.jsf and cdiff.jsf merged together
# into one file, to handle cases where A) it's difficult to tell what
# type of diff might be inside the file to highlight and B) the file to
# highlight may contain hunks of different types of diffs (unlikely).
# Of course it can be used to replace the 3 abovementioned files
# completely. If you want that, you need to edit ftyperc accordingly.
#
# Dirk Schenkewitz <Dirk.Schenkewitz (AT) gmx.de>
# Color definitions
=Idle
=Garbage +Comment
=DiffCmd +Statement
=File +Type
=FileOld +File
=FileNew +File
=Hunk +File
=HunkHead +Hunk
=HunkMid +Hunk
# Inheritances here are admittedly bizarre
=DelLine +Escape
=AddLine +DefinedIdent
=ChgLine +Preproc
=CtxLine
:reset Idle
* garbage recolor=-1
"\n" reset
"d" garbage buffer recolor=-1 # may be a "diff" command
"-" udiff_o1 # may start a unified diff hunk
"*" cdiff_o1 # may start a context diff hunk
"0-9" ndiff_r0 mark recolor=-1 # may start a "normal" diff hunk
:garbage Garbage
* garbage strings
"diff" diff_cmd recolor=-3
done
"\n" reset
:diff_cmd DiffCmd
* diff_cmd
"\n" reset
#----------------------------------------------
# unified diffs:
:udiff_o1 Idle
* garbage recolor=-2 buffer
"-" udiff_o2
:udiff_o2 Idle
* garbage recolor=-3 buffer
"-" udiff_o3
:udiff_o3 Idle
* garbage recolor=-4 buffer
" " udiff_o4
:udiff_o4 Idle
* udiff_oldf recolor=-5
" " garbage recolor=-5 buffer
:udiff_n0 Idle
* garbage recolor=-1 buffer
"+" udiff_n1
:udiff_n1 Idle
* garbage recolor=-2 buffer
"+" udiff_n2
:udiff_n2 Idle
* garbage recolor=-3 buffer
"+" udiff_n3
:udiff_n3 Idle
* garbage recolor=-4 buffer
" " udiff_newf recolor=-4
:udiff_oldf FileOld
* udiff_oldf
"\n" udiff_n0
:udiff_newf FileNew
* udiff_newf
"\n" udiff_prehunk1
:udiff_prehunk1 Idle
* garbage
"@" udiff_prehunk2
"\n" reset
:udiff_prehunk2 Idle
* garbage recolor=-1
"@" udiff_prehunk3
"\n" reset
:udiff_prehunk3 Idle
* garbage recolor=-1
" " udiff_hunkhead recolor=-3
"\n" reset
:udiff_hunkhead HunkHead
* udiff_hunkhead
"\n" udiff_hunkbody
:udiff_hunkbody Idle
* reset noeat
"d" garbage recolor=-1 buffer
"-" udiff_minus1
"+" udiff_add recolor=-1
" " udiff_ctx recolor=-1
"@" udiff_prehunk2
:udiff_minus1 Idle
* udiff_del noeat recolor=-2
"-" udiff_minus2
:udiff_minus2 Idle
* udiff_del noeat recolor=-3
"-" udiff_minus3
:udiff_minus3 Idle
* udiff_del noeat recolor=-4
" " udiff_minus4
:udiff_minus4 Idle
* udiff_oldf recolor=-5
"\n" udiff_hunkbody
" " udiff_del recolor=-5
:udiff_del DelLine
* udiff_del
"\n" udiff_hunkbody
:udiff_add AddLine
* udiff_add
"\n" udiff_hunkbody
:udiff_ctx CtxLine
* udiff_ctx
"\n" udiff_hunkbody
#----------------------------------------------
# "normal" diffs:
:ndiff_r0 Idle
* garbage noeat recolormark
"0-9" ndiff_r0
"," ndiff_r1
"adc" ndiff_r2
"\n" reset markend
:ndiff_r1 Idle
* garbage recolormark
"0-9" ndiff_r1
"adc" ndiff_r2
"\n" reset markend
:ndiff_r2 Idle
* garbage noeat recolormark
"0-9" ndiff_r2
"," ndiff_r3
"\n" ndiff_re noeat recolormark
:ndiff_r3 Idle
* garbage noeat recolormark
"0-9" ndiff_r3
"\n" ndiff_re noeat recolormark
:ndiff_re HunkHead
"\n" ndiff_hunk0
:ndiff_hunk0 HunkHead
* reset noeat
"<" ndiff_o1
">" ndiff_n1
"\\" ndiff_t1
:ndiff_hunk1 HunkHead
* reset noeat
"<" ndiff_o1
">" ndiff_n1
"-" ndiff_m1 recolor=-1
"\\" ndiff_t1
:ndiff_t1 Idle
* garbage recolor=-3
"\n" reset
" " ndiff_txt recolor=-3
:ndiff_o1 Idle
* garbage recolor=-3
"\n" reset
" " ndiff_del recolor=-3
:ndiff_n1 Idle
* garbage recolor=-3
"\n" reset
" " ndiff_add recolor=-3
:ndiff_txt CtxLine
* ndiff_txt
"\n" ndiff_hunk1
:ndiff_del DelLine
* ndiff_del
"\n" ndiff_hunk1
:ndiff_add AddLine
* ndiff_add
"\n" ndiff_hunk1
:ndiff_m1 Idle
* garbage recolor=-2
"-" ndiff_m2
"\n" reset recolor=-2
:ndiff_m2 Idle
* garbage recolor=-3
"-" ndiff_m3 recolor=-3
:ndiff_m3 HunkMid
* garbage recolor=-4
"\n" ndiff_hunk0
#----------------------------------------------
# context diffs:
:cdiff_o1 Idle
* garbage recolor=-2 buffer
"*" cdiff_o2
:cdiff_o2 Idle
* garbage recolor=-3 buffer
"*" cdiff_o3
:cdiff_o3 Idle
* garbage recolor=-4 buffer
" " cdiff_o4
:cdiff_o4 Idle
* cdiff_oldf recolor=-5
" " garbage recolor=-5 buffer
:cdiff_oldf FileOld
* cdiff_oldf
"\n" cdiff_n0
:cdiff_n0 Idle
* garbage recolor=-1 buffer
"-" cdiff_n1
:cdiff_n1 Idle
* garbage recolor=-2 buffer
"-" cdiff_n2
:cdiff_n2 Idle
* garbage recolor=-3 buffer
"-" cdiff_n3
:cdiff_n3 Idle
* garbage recolor=-4 buffer
" " cdiff_newf recolor=-4
:cdiff_newf FileNew
* cdiff_newf
"\n" cdiff_prehunk0
:cdiff_prehunk0 Idle
* manystars buffer
:manystars Idle
* garbage noeat strings
"***************" cdiff_prehunk1
done
"*" manystars
:cdiff_prehunk1 HunkHead
* cdiff_ho0
:cdiff_ho0 Idle
* garbage recolor=-1 buffer
"*" cdiff_ho1
:cdiff_ho1 Idle
* garbage recolor=-2 buffer
"*" cdiff_ho2
:cdiff_ho2 Idle
* garbage recolor=-3 buffer
"*" cdiff_ho3
:cdiff_ho3 Idle
* garbage recolor=-4 buffer
" " cdiff_ho4 recolor=-4 mark
:cdiff_ho4 HunkHead
* garbage recolormark buffer
"0-9," cdiff_ho4
" " cdiff_ho5 recolormark buffer
"\n" reset markend
:cdiff_ho5 HunkHead
* garbage recolor=-1 buffer
"*" cdiff_ho6
:cdiff_ho6 Idle
* garbage recolor=-2 buffer
"*" cdiff_ho7
:cdiff_ho7 Idle
* garbage recolor=-3 buffer
"*" cdiff_ho8
:cdiff_ho8 Idle
* garbage recolor=-4 buffer
"*" cdiff_ho9 recolor=-4
:cdiff_ho9 HunkHead
* garbage recolor=-5 buffer
"\n" cdiff_hunk
:cdiff_hn0 Idle
* garbage recolor=-1 buffer
"-" cdiff_hn1
:cdiff_hn1 Idle
* garbage recolor=-2 buffer
"-" cdiff_hn2
:cdiff_hn2 Idle
* garbage recolor=-3 buffer
"-" cdiff_hn3
:cdiff_hn3 Idle
* garbage recolor=-4 buffer
" " cdiff_hn4 recolor=-4 mark
:cdiff_hn4 HunkHead
* garbage recolormark buffer
"0-9," cdiff_hn4
" " cdiff_hn5 recolormark buffer
"\n" reset markend
:cdiff_hn5 HunkHead
* garbage recolor=-1 buffer
"-" cdiff_hn6
:cdiff_hn6 Idle
* garbage recolor=-2 buffer
"-" cdiff_hn7
:cdiff_hn7 Idle
* garbage recolor=-3 buffer
"-" cdiff_hn8
:cdiff_hn8 Idle
* garbage recolor=-4 buffer
"-" cdiff_hn9 recolor=-4
:cdiff_hn9 HunkHead
* garbage recolor=-5 buffer
"\n" cdiff_hunk
:cdiff_hunk Idle
* garbage recolor=-1 buffer
" " cdiff_h_c0
"+" cdiff_h_p0
"!" cdiff_h_x0
"-" cdiff_h_m0
"*" manystars buffer
:cdiff_h_c0 Idle
* garbage recolor=-2 buffer
" " cdiff_h_c1 recolor=-2
"\n" reset
:cdiff_h_c1 CtxLine
* cdiff_h_c1
"\n" cdiff_hunk
:cdiff_h_p0 Idle
* garbage recolor=-2 buffer
" " cdiff_h_p1 recolor=-2
"\n" reset
:cdiff_h_p1 AddLine
* cdiff_h_p1
"\n" cdiff_hunk
:cdiff_h_x0 Idle
* garbage recolor=-2 buffer
" " cdiff_h_x1 recolor=-2
"\n" reset
:cdiff_h_x1 ChgLine
* cdiff_h_x1
"\n" cdiff_hunk
:cdiff_h_m0 Idle
* garbage recolor=-2 buffer
" " cdiff_h_m1 recolor=-2
"-" cdiff_hn2 recolor=-2
"\n" reset
:cdiff_h_m1 DelLine
* cdiff_h_m1
"\n" cdiff_hunk

View file

@ -0,0 +1,171 @@
# Barebones Dockerfile syntax for JOE. Doesn't handle more sophisticated sh syntax.
=Idle
=Command +Statement +Keyword
=Comment
=Constant
=String +Constant
=Ident
=Escape
=Brace
=StringEscape +Escape
=Variable +DefinedIdent
# Start of line is special
:start Idle
* idle
" \t" start
"#" comment noeat
"A-Za-z" command buffer noeat
"\n" start
# Comments between commands
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" start
# Comments in the middle of a command
:comment_idle Comment comment
* comment_idle
"\n" idle
# Start of line in the middle of "idle" mode (skips command recognition in case a comment
# comes in the middle of a RUN)
:start_idle Idle
* idle noeat
"#" comment_idle recolor=-1
# Generic middle-of-a-command
:idle Idle
* idle
"$" idle recolor=-1 call=.variable()
"\n" start
"\\" escape recolor=-1
:escape Escape
* idle recolor=-2 noeat
"\\\"" idle
"\r" escape
"\n" start_idle
:command Idle
* idle noeat istrings
"FROM" from
"MAINTAINER" string_command
"RUN" list_command
"CMD" list_command
"LABEL" label
"EXPOSE" generic_command
"ENV" generic_command
"ADD" list_command
"COPY" list_command
"ENTRYPOINT" list_command
"VOLUME" list_command
"USER" string_command
"WORKDIR" string_command
"ARG" generic_command
"ONBUILD" generic_command
"STOPSIGNAL" generic_command
done
"a-zA-Z" command
# EXPOSE, ENV, ARG, ONBUILD, STOPSIGNAL
:generic_command Command
* idle
# MAINTAINER, USER, WORKDIR
:string_command Command
* string_command_data
:string_command_data Constant
* string_command_data
"$" string_command_data recolor=-1 call=.variable()
"\n" start
# FROM
:from Command
* from_image noeat
:from_image Constant
* from_image
":@" from_tag noeat
"\n" start
:from_tag Idle
* from_tag
"\n" start
# RUN, CMD, ADD, COPY, ENTRYPOINT, VOLUME
:list_command Command
* idle noeat
" \t" list_command
"[" array noeat
"\n" start
:array Idle
* array
"[]" bracket noeat
"\"'" array recolor=-1 call=.string() save_c
"\n" start
:comma Idle
* array noeat
:bracket Brace
"]" idle
"[" array
# LABEL
:label Command
* label_key
"\n" start
:label_key Variable
* label_key
"=" label_value noeat
"\n" start
:label_value Constant
* label_value
"\"" label_value recolor=-1 call=.string() save_c
"\n" start
.subr variable
:variable Variable
* variable recolor=-2 return noeat
"A-Za-z_" variable_name
"{" variable_long
:variable_name Variable
* variable_name return noeat
"A-Za-z0-9_" variable_name
:variable_long Variable
* variable_long
& variable return noeat
"\n" variable return noeat
"}" variable return
":" variable_after
:variable_after Idle
* variable_after
& variable_after return noeat
"}" variable_long noeat
.end
.subr string
:string String string
* string
& string return
"\n" string return noeat
"\\" string_escape recolor=-1
"$" string recolor=-1 call=.variable()
:string_escape StringEscape string
* string
.end

View file

@ -0,0 +1,239 @@
# JOE syntax highlight file for Elixir
# Written by Andrey Lisin (at gmail.com)
# TODO
# - test attributes and docstrings highlighting
# - maybe highlight arithmetical operations
# - comprehensions highlighting
# Changes
# - fix atom with underscore highlighting
# - distinct docstrings and module attributes
=Idle
=Ident
=Comment
=Keyword
=Statement +Keyword
=Conditional +Statement
=Type
=DefinedIdent +Ident
=DefinedType +DefinedIdent
=DefinedFunction +DefinedIdent
=Operator +Keyword
=Constant
=Boolean +Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=StringVariable +StringEscape
=Atom +Constant +DefinedIdent
=Attribute +Define +Preproc
=Brace +Escape
=Bracket +Brace
=Underscore +Keyword
=ModAttr +Atom # key in %{key: value}
:idle Idle
* idle
"#" line_comment noeat
"A-Z" type recolor=-1
"a-z" ident noeat
"_" underscore recolor=-1
"'" single_quoted recolor=-1
"\"" double_quoted recolor=-1
":" atom recolor=-1
"@" modattr recolor=-1
"[]" brack recolor=-1
"{}" brace recolor=-1
"|" maybe_pipe
"\\" maybe_opt
"-" maybe_rarrow recolor=-1
"<" maybe_larrow recolor=-1
"0-9" decimal recolor=-1
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:single_quoted String string
* single_quoted
"'" idle
:double_quoted String string
* double_quoted
"#" maybe_extrapolation
"\"" idle
:maybe_extrapolation String string
* double_quoted noeat
"{" extrapolation recolor=-2
:extrapolation StringVariable string
* extrapolation
"}" double_quoted
"\"" double_quoted noeat
:atom Atom
* idle noeat
"a-zA-Z0-9_" atom
:modattr ModAttr
* idle
"a-zA-Z0-9_" modattr
" " maybe_edoc
:maybe_edoc Idle
* idle
" " maybe_edoc
"\"" string_dq_1 recolor=-1
:string_dq_1 String string
* double_quoted recolor=-1
"\"" string_dq_2
:string_dq_2 Comment comment
* idle
"\"" docstr_dq recolor=-3
:docstr_dq Comment comment
* docstr_dq
"\"" docstr_dq_1
:docstr_dq_1 Comment comment
* docstr_dq
"\"" docstr_dq_2
:docstr_dq_2 Comment comment
* docstr_dq
"\"" idle
:brace Brace
* idle noeat
:brack Bracket
* idle noeat
:maybe_larrow Idle
"-" arrow recolor=-2
* idle noeat
:maybe_rarrow Idle
">" arrow recolor=-2
* idle noeat
:arrow Operator
* idle noeat
:maybe_pipe Idle
* idle
">" pipe recolor=-2
:pipe Operator
* idle noeat
:maybe_opt Idle
* idle
"\\" opt recolor=-2
:opt Keyword
* idle noeat
:decimal Number
* idle noeat
"0-9_" decimal
"." float
:float Number
* idle noeat
"0-9" float
:underscore Underscore
* idle noeat
"a-zA-Z0-9?_" underscore
:type Type
"a-zA-Z0-9_" type
* idle noeat
:ident Ident
* ident1 noeat buffer mark
:ident1 Ident
* idle noeat strings
"def" start_func_def
"defp" start_func_def
"defmodule" start_mod_def
"defprotocol" start_def
"defmacro" start_def
"defmacrop" start_def
"defdelegate" start_def
"defexception" start_def
"defstruct" start_def
"defimpl" start_def
"defcallback" start_def
"import" start_mod_def
"require" start_mod_def
"test" start_def
"use" start_mod_def
"alias" start_mod_def
"end" stmt
"do" kw
"for" loop
"if" cond
"else" cond
"unless" cond
"case" cond
"cond" cond
"true" bool
"false" bool
"fn" kw
done
"a-zA-Z_0-9" ident1
":" attr noeat recolormark
:attr Attribute
* idle
:kw Keyword
* idle noeat
:stmt Statement
* idle noeat
:cond Conditional
* idle noeat
:bool Boolean
* idle noeat
:start_def Statement
* def
:start_mod_def Statement
* moddef
:start_func_def Statement
* funcdef
:def DefinedIdent
* def
" (" idle noeat
:funcdef DefinedFunction
* funcdef
" (" idle noeat
:moddef DefinedType
* moddef
" " idle noeat
"\n" idle

View file

@ -0,0 +1,31 @@
# JOE syntax highlight file for plain ERB
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Keyword
=Bad
=Brace
=ERB +Escape
:content Idle
* content
"<" maybe_erb_start
:maybe_erb_start Idle
* content noeat
"%" maybe_erb_eq recolor=-2
:maybe_erb_eq ERB
* rtn_ruby noeat call=ruby.ruby(erb)
"=" rtn_ruby call=ruby.ruby(erb)
:rtn_ruby ERB
* content noeat
:erb ERB
* erb
"%" maybe_erb_end
:maybe_erb_end ERB
* erb
">" content

View file

@ -0,0 +1,506 @@
# JOE syntax highlight file for Erlang
# by Christian Nicolai (http://mycrobase.de)
# with contributions from Jonas Rosling and Andrew Lisin
# TODO Handle type information ::
# TODO implement subroutines for cleaner and more correct implementation.
# TODO Probably use less colors to be less distractive.
=Idle
=Ident
=Comment
=Constant
=String +Constant
=String_mod +StringEscape
=String_esc +StringEscape
=Number +Constant
=Keyword
=Operator +Keyword
=Type
=Module +Type
=Brace +Control
=Bracket +Control
=Character +String +Constant
=CharacterEscape +StringEscape +Character
=Attribute +Preproc
=Variable #+DefinedIdent +Ident ??
=Record +Include +Preproc
=Macro +Define
=Guard +Conditional +Statement +Bif
=Bif +DefinedFunction
=Fun +Ident
=Recatt
:idle Idle
* idle
"A-Z_" variable noeat
"%" line_comment noeat
"\"" string recolor=-1
"'" quoted_atom mark
"0-9" decimal recolor=-1
"[]" brack recolor=-1
"{}" brace recolor=-1
"-" maybe_attribute buffer
"a-z" atom buffer mark noeat
"#" record recolor=-1
"$" char recolor=-1
"?" is_macro mark
"<|" lc buffer
:lc Idle
* idle noeat strings
"<-" kw
"||" kw
done
"-<|" lc
:pipe Idle
* idle noeat
"|" kw recolormark
:is_macro Idle
* macro recolormark noeat
"a-zA-Z0-9_@" is_macro
:macro Macro
* idle noeat
:char Character string
* idle
"\\" charesc
:charesc Character string
* idle
:line_comment Comment comment
* line_comment
"@" is_edoc noeat buffer
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:is_edoc Comment comment
* line_comment noeat strings
"@clear" edoc
"@docfile" edoc
"@headerfle" edoc
"@todo" edoc
"@TODO" edoc
"@type" edoc
"@reference" edoc
"@see" edoc
"@since" edoc
"@deprecated" edoc
"@hidden" edoc
"@private" edoc
"@equiv" edoc
"@throws" edoc
"@author" edoc
"@copyright" edoc
"@version" edoc
"@title" edoc
"@spec" edoc
"@doc" edoc
"@end" edoc
done
"A-Za-z@" is_edoc
:edoc Keyword
* line_comment noeat
:variable Variable
* idle noeat
"a-zA-Z0-9_" variable
:record Record
* idle noeat
"a-z" rec noeat
"'" qtrec recolor=-1
:rec Record
* idle noeat
"a-zA-Z0-9_@" rec
"." recatt recolor=-1
:qtrec Record
* qtrec
"'" rec
:recatt Recatt
* idle noeat
"a-zA-Z_" recatt
"#" record
# STRINGS
:string String string
* string
"\\" string_escape recolor=-1
"~" string_ mark
"\"" idle
:string_escape String_esc string
* string
:string_ String string
* string_mod noeat
"0-9" string_f
"t" string_mod
:string_f String string
* string_mod noeat
"0-9*" string_f
"." string_p
:string_p String string
* string_mod noeat
"0-9*" string_p
:string_mod String string
* string
"cfegswpWPBX#bx+ni" string_modifier recolormark noeat
:string_modifier String_mod string
* string
# END STRINGS
:decimal Number
* idle noeat
"0-9" decimal
"." float
"#" base
:float Number
* idle noeat
"0-9" float
"Ee" eintval
:base Number
* idle noeat
"0-9A-Fa-f" base
:eintval Number
* eint noeat
"-" eint
:eint Number
* idle noeat
"0-9" eint
:brace Brace
* idle noeat
:brack Bracket
* idle noeat
:maybe_attribute Idle
* idle noeat strings
"-module" attribute
"-export" attribute
"-import" attribute
"-compile" attribute
"-ifdef" attribute
"-endif" attribute
"-define" attribute
"-file" attribute
"-type" attribute
"-opaque" attribute
"-export_type" attribute
"-spec" attribute
"-author" attribute
"-copyright" attribute
"-include" attribute
"-include_lib" attribute
"-vsn" attribute
"-behaviour" attribute
"-behavior" attribute
"-record" attribute
"-on_load" attribute
"-connect_all" attribute
"-hidden" attribute
"-name" attribute
"-setcookie" attribute
"-sname" attribute
"-mode" attribute
done
"a-z_" maybe_attribute
:attribute Attribute
* idle noeat
:no_atom Idle
* idle noeat
" " no_atom
"(" function recolormark noeat
":" module recolormark noeat
"/" funarity
:module Module
* idle noeat
:function Fun
* idle noeat
:funarity Fun
* function recolormark noeat
"0-9" idle
:kw Keyword
* idle noeat
:guard Guard
* idle noeat
:rterr Guard
* idle noeat
:bif Bif
* idle recolormark noeat
" " bif
"(" idle noeat
:type Type
* idle recolormark noeat
"(" idle noeat
":" module recolormark noeat
:quoted_atom Idle
* quoted_atom
"'" no_atom
# This implementation is sort of funky.
# Most of the cases it's correct but some highlighting may be wrong.
# Should be looked over...
:atom Ident
* no_atom noeat strings
"after" kw
"and" kw
"andalso" kw
"band" kw
"begin" kw
"bnot" kw
"bor" kw
"bsl" kw
"bsr" kw
"bxor" kw
"case" kw
"catch" kw
"cond" kw
"div" kw
"end" kw
"fun" kw
"if" kw
"let" kw
"not" kw
"of" kw
"or" kw
"orelse" kw
"query" kw
"receive" kw
"rem" kw
"try" kw
"when" kw
"xor" kw
"any" type
"none" type
"pid" type
"port" type
"reference" type
"float" type
"atom" type
"binary" type
"integer" type
"list" type
"improper_list" type
"maybe_improper_list" type
"tuple" type
"term" type
"boolean" type
"byte" type
"char" type
"non_neg_integer" type
"pos_integer" type
"neg_integer" type
"number" type
"string" type
"nonempty_string" type
"iolist" type
"module" type
"mfa" type
#interfears with the bif "node" type
"timeout" type
"no_return" type
"badarg" rterr
"badarith" rterr
"badmatch" rterr
"function_clause" rterr
"case_clause" rterr
"if_clause" rterr
"try_clause" rterr
"undef" rterr
"badfun" rterr
"badarity" rterr
"timeout_value" rterr
"noproc" rterr
"nocatch" rterr
"system_limit" rterr
"is_atom" guard
"is_binary" guard
"is_bitstream" guard
"is_boolean" guard
"is_float" guard
"is_function" guard
"is_integer" guard
"is_list" guard
"is_number" guard
"is_pid" guard
"is_port" guard
"is_record" guard
"is_reference" guard
"is_tuple" guard
"abs" bif
"adler32" bif
"adler32_combine" bif
"append_element" bif
"apply" bif
"atom_to_binary" bif
"atom_to_list" bif
"binary_part" bif
"binary_to_atom" bif
"binary_to_existing_atom" bif
"binary_to_list" bif
"bitstring_to_list" bif
"binary_to_term" bif
"bit_size" bif
"bump_reductions" bif
"byte_size" bif
"cancel_timer" bif
"check_old_code" bif
"check_process_code" bif
"crc32" bif
"crc32_combine" bif
"date" bif
"decode_packet" bif
"delete_module" bif
"demonitor" bif
"disconnect_node" bif
"display" bif
"element" bif
"erase" bif
"error" bif
"exit" bif
"external_size" bif
"float" bif
"float_to_list" bif
"fun_info" bif
"fun_to_list" bif
"function_exported" bif
"garbage_collect" bif
"get" bif
"get_cookie" bif
"get_keys" bif
"get_stacktrace" bif
"group_leader" bif
"halt" bif
"hash" bif
"hd" bif
"hibernate" bif
"integer_to_list" bif
"iolist_to_binary" bif
"iolist_size" bif
"is_alive" bif
"is_builtin" bif
"is_process_alive" bif
"length" bif
"link" bif
"list_to_atom" bif
"list_to_binary" bif
"list_to_bitstring" bif
"list_to_existing_atom" bif
"list_to_float" bif
"list_to_integer" bif
"list_to_pid" bif
"list_to_tuple" bif
"load_module" bif
"load_nif" bif
"loaded" bif
"local_time" bif
"local_time_to_universaltime" bif
"make_ref" bif
"make_tuple" bif
"max" bif
"md5" bif
"md5_final" bif
"md5_init" bif
"md5_update" bif
"memory" bif
"min" bif
"module_loaded" bif
"monitor" bif
"monitor_node" bif
"nif_error" bif
"node" bif
"nodes" bif
"now" bif
"open_port" bif
"phash" bif
"phash2" bif
"pid_to_list" bif
"port_close" bif
"port_command" bif
"port_connect" bif
"port_control" bif
"port_call" bif
"port_info" bif
"port_to_list" bif
"ports" bif
"pre_loaded" bif
"process_display" bif
"process_flag" bif
"process_info" bif
"processes" bif
"purge_module" bif
"put" bif
"raise" bif
"read_timer" bif
"ref_to_list" bif
"register" bif
"registered" bif
"resume_process" bif
"round" bif
"self" bif
"send" bif
"send_after" bif
"send_nosuspend" bif
"set_cookie" bif
"setelement" bif
"size" bif
"spawn" bif
"spawn_link" bif
"spawn_monitor" bif
"spawn_opt" bif
"split_binary" bif
"start_timer" bif
"statistics" bif
"suspended_process" bif
"system_flag" bif
"system_info" bif
"system_monitor" bif
"system_profile" bif
"term_to_binary" bif
"throw" bif
"time" bif
"tl" bif
"trace" bif
"trace_deliviered" bif
"trace_info" bif
"trace_pattern" bif
"trunc" bif
"tuple_size" bif
"tuple_to_list" bif
"universaltime" bif
"universaltime_to_localtime" bif
"unlink" bif
"unregister" bif
"whereis" bif
"yield" bif
done
"a-zA-Z0-9_@" atom

View file

@ -0,0 +1,21 @@
# Filename highlighter
=Idle
=Notused +Comment
:idle Idle
* filename noeat mark
:filename Idle
* filename
"/" slash
"\n" idle
:slash Idle
* filename
"/" restart noeat recolormark
"~" restart noeat recolormark
"\n" idle
:restart Notused
* filename noeat mark

View file

@ -0,0 +1,822 @@
# JOE syntax highlight file for FORTRAN
# Heavily improved by: Malte Thoma (thoma@uni-muenster.de)
# Bugs:
# in: 4. eq. -- does not recognize the .eq.
# needs more intrinsics.
=Idle
=Ident
=Comment
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=Type
=Keyword
=Operator +Keyword
=Statement +Keyword
=Builtin +DefinedFunction
=Loop +Statement
=Conditional +Statement
=Label +Statement
=Preproc
=Bad
# First character of line...
:reset Idle
* idle noeat
"\n" reset
"cC*" comment recolor=-1
"#" pre recolor=-1
:pre Preproc
* pre
"\n" reset
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" reset
:idle Idle
* idle
"!" comment recolor=-1
"\n" reset
"0-9" first_number recolor=-1
"." have_dot
"'" string recolor=-1
"a-zA-Z_" ident buffer
:first_number Number
* idle noeat
"0-9" first_number
"." second_start
"eEdD" epart
:have_dot Number
* idle recolor=-2 noeat
"0-9" second_number recolor=-2
" \ta-zA-Z" operator1 noeat recolor=-2
# Color the left .
:operator1 Operator
* operator buffer noeat
" \t" operator1
# Default color is Idle for unknown operator
:operator Idle
* idle noeat
"a-zA-Z" operator
". \t" unknown noeat istrings
"gt" op
"ge" op
"eq" op
"le" op
"ne" op
"lt" op
"and" op
"or" op
"llt" op
"lle" op
"lgt" op
"lge" op
"not" op
"false" bool
"true" bool
done
# Eat the right .
:unknown Operator
* idle
" \t" unknown
:op Operator
* idle
" \t" op
:bool Boolean
* idle
"." op noeat
" \t" const
# For distrinuishing between 4.e1 and 4.eq.
:second_start Number
* idle noeat
"a-zA-Z" operator1 noeat recolor=-2
"dD" epart
"eE" epart1
"0-9" second_number
:epart1 Number
* idle noeat
"q" epart2
"0-9+\-" enum
:epart2 Idle
* idle noeat
". \t" op noeat recolor=-4
:second_number Number
* idle noeat
"eEdD" epart
"0-9" second_number
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\n" reset
"'" maybe_end_string
:maybe_end_string String string
* idle noeat
"'" string
:ident Ident
* idle noeat istrings
"allocate" kw
"allocatable" kw
"assign" kw
"assignment" kw
"backspace" kw
"block" kw
"blockdata" kw
"call" kw
"case" label
"character" type
"close" kw
"common" kw
"complex" type
"contains" kw
"continue" loop
"cycle" kw
"data" kw
"deallocate" kw
"default" label
"dimension" type
"do" loop
"double" type
"doubleprecision" type
"elemental" kw
"else" cond
"elseif" cond
"elsewhere" cond
"end" kw
"endblock" kw
"endblockdata" kw
"enddo" loop
"endfile" kw
"endforall" loop
"endif" cond
"endinterface" kw
"endmodule" kw
"endselect" cond
"endtype" kw
"endwhere" kw
"entry" kw
"equivalence" kw
"exit" kw
"external" kw
"forall" loop
"format" kw
"function" kw
"go" loop
"goto" loop
"if" cond
"implicit" kw
"in" kw
"inout" kw
"inquire" kw
"integer" type
"intent" kw
"interface" kw
"intrinsic" kw
"iolength" kw
"kind" kw
"logical" type
"module" kw
"namelist" kw
"none" kw
"nullify" kw
"only" kw
"open" kw
"optional" kw
"out" kw
"parameter" kw
"pause" kw
"pointer" kw
"precision" type
"print" kw
"private" kw
"procedure" kw
"program" kw
"publc" kw
"public" kw
"pure" kw
"read" kw
"real" type
"recursive" kw
"result" kw
"return" kw
"rewind" kw
"save" kw
"select" cond
"selectcase" cond
"sequence" kw
"stat" kw
"stop" kw
"subroutine" kw
"target" kw
"then" cond
"to" loop
"type" kw
"use" kw
"where" kw
"while" loop
"write" kw
done
"(" idle noeat istrings
# Keywords have to be duplicated here...
"allocate" kw
"allocatable" kw
"assign" kw
"assignment" kw
"backspace" kw
"block" kw
"blockdata" kw
"call" kw
"case" label
"character" type
"close" kw
"common" kw
"complex" type
"contains" kw
"continue" loop
"cycle" kw
"data" kw
"deallocate" kw
"default" label
"dimension" type
"do" loop
"double" type
"doubleprecision" type
"elemental" kw
"else" cond
"elseif" cond
"elsewhere" cond
"end" kw
"endblock" kw
"endblockdata" kw
"enddo" loop
"endfile" kw
"endforall" loop
"endif" cond
"endinterface" kw
"endmodule" kw
"endselect" cond
"endtype" kw
"endwhere" kw
"entry" kw
"equivalence" kw
"exit" kw
"external" kw
"forall" loop
"format" kw
"function" kw
"go" loop
"goto" loop
"if" cond
"implicit" kw
"in" kw
"inout" kw
"inquire" kw
"integer" type
"intent" kw
"interface" kw
"intrinsic" kw
"iolength" kw
"kind" kw
"logical" type
"module" kw
"namelist" kw
"none" kw
"nullify" kw
"only" kw
"open" kw
"optional" kw
"out" kw
"parameter" kw
"pause" kw
"pointer" kw
"precision" type
"print" kw
"private" kw
"procedure" kw
"program" kw
"publc" kw
"public" kw
"pure" kw
"read" kw
"real" kw
"recursive" kw
"result" kw
"return" kw
"rewind" kw
"save" kw
"select" cond
"selectcase" cond
"sequence" kw
"stat" kw
"stop" kw
"subroutine" kw
"target" kw
"then" cond
"to" loop
"type" kw
"use" kw
"where" kw
"while" loop
"write" kw
# Here are instrinsics
"abs" intrinsic
"achar" intrinsic
"acos" intrinsic
"adjustl" intrinsic
"adjustr" intrinsic
"aimag" intrinsic
"aint" intrinsic
"all" intrinsic
"allocated" intrinsic
"alog" intrinsic
"alog10" intrinsic
"anint" intrinsic
"any" intrinsic
"asin" intrinsic
"associated" intrinsic
"atan" intrinsic
"atan2" intrinsic
"bit_size" intrinsic
"btest" intrinsic
"ceiling" intrinsic
"char" intrinsic
"cmplx" intrinsic
"conjg" intrinsic
"cos" intrinsic
"cosh" intrinsic
"count" intrinsic
"cpu_time" intrinsic
"cshift" intrinsic
"date_and_time" intrinsic
"dble" intrinsic
"digits" intrinsic
"dim" intrinsic
"dot_product" intrinsic
"dprod" intrinsic
"eoshift" intrinsic
"epsilon" intrinsic
"exp" intrinsic
"exponent" intrinsic
"false" bool
"floor" intrinsic
"float" intrinsic
"fraction" intrinsic
"huge" intrinsic
"iachar" intrinsic
"iand" intrinsic
"ibclr" intrinsic
"ibits" intrinsic
"ibset" intrinsic
"ichar" intrinsic
"ieor" intrinsic
"index" intrinsic
"int" intrinsic
"int2" intrinsic
"ior" intrinsic
"ishft" intrinsic
"ishftc" intrinsic
"kind" intrinsic
"lbound" intrinsic
"len" intrinsic
"len_trim" intrinsic
"lge" intrinsic
"lgt" intrinsic
"lle" intrinsic
"llt" intrinsic
"log" intrinsic
"log10" intrinsic
"matmul" intrinsic
"max" intrinsic
"maxexponent" intrinsic
"maxloc" intrinsic
"maxval" intrinsic
"merge" intrinsic
"min" intrinsic
"minexponent" intrinsic
"minloc" intrinsic
"minval" intrinsic
"mod" intrinsic
"modulo" intrinsic
"mvbits" intrinsic
"nearest" intrinsic
"nint" intrinsic
"not" intrinsic
"null" intrinsic
"pack" intrinsic
"present" intrinsic
"product" intrinsic
"radix" intrinsic
"random_number" intrinsic
"random_seed" intrinsic
"range" intrinsic
"real" intrinsic
"repeat" intrinsic
"reshape" intrinsic
"rrspacing" intrinsic
"scale" intrinsic
"scan" intrinsic
"selected_int_kind" intrinsic
"selected_real_kind" intrinsic
"set_exponent" intrinsic
"shape" intrinsic
"sign" intrinsic
"sin" intrinsic
"sinh" intrinsic
"size" intrinsic
"spacing" intrinsic
"spread" intrinsic
"sqrt" intrinsic
"sum" intrinsic
"system_clock" intrinsic
"tan" intrinsic
"tanh" intrinsic
"tiny" intrinsic
"transfer" intrinsic
"transpose" intrinsic
"trim" intrinsic
"true" intrinsic
"ubound" intrinsic
"unpack" intrinsic
"verify" intrinsic
done
"a-zA-Z0-9_" ident
" \t" ws_ident hold
# Whitespace after an identifier... we wait to see if there is a "("
:ws_ident Idle
* idle noeat istrings
"allocate" kw
"allocatable" kw
"assign" kw
"assignment" kw
"backspace" kw
"block" kw
"blockdata" kw
"call" kw
"case" label
"character" type
"close" kw
"common" kw
"complex" type
"contains" kw
"continue" loop
"cycle" kw
"data" kw
"deallocate" kw
"default" label
"dimension" type
"do" loop
"double" type
"doubleprecision" type
"elemental" kw
"else" cond
"elseif" cond
"elsewhere" cond
"end" kw
"endblock" kw
"endblockdata" kw
"enddo" loop
"endfile" kw
"endforall" loop
"endif" cond
"endinterface" kw
"endmodule" kw
"endselect" cond
"endtype" kw
"endwhere" kw
"entry" kw
"equivalence" kw
"exit" kw
"external" kw
"forall" loop
"format" kw
"function" kw
"go" loop
"goto" loop
"if" cond
"implicit" kw
"in" kw
"inout" kw
"inquire" kw
"integer" type
"intent" kw
"interface" kw
"intrinsic" kw
"iolength" kw
"kind" kw
"logical" type
"module" kw
"namelist" kw
"none" kw
"nullify" kw
"only" kw
"open" kw
"optional" kw
"out" kw
"parameter" kw
"pause" kw
"pointer" kw
"precision" type
"print" kw
"private" kw
"procedure" kw
"program" kw
"publc" kw
"public" kw
"pure" kw
"read" kw
"real" type
"recursive" kw
"result" kw
"return" kw
"rewind" kw
"save" kw
"select" cond
"selectcase" cond
"sequence" kw
"stat" kw
"stop" kw
"subroutine" kw
"target" kw
"then" cond
"to" loop
"type" kw
"use" kw
"where" kw
"while" loop
"write" kw
done
"(" idle noeat istrings
# Keywords have to be duplicated here...
"allocate" kw
"allocatable" kw
"assign" kw
"assignment" kw
"backspace" kw
"block" kw
"blockdata" kw
"call" kw
"case" label
"character" type
"close" kw
"common" kw
"complex" type
"contains" kw
"continue" loop
"cycle" kw
"data" kw
"deallocate" kw
"default" label
"dimension" type
"do" loop
"double" type
"doubleprecision" type
"elemental" kw
"else" cond
"elseif" cond
"elsewhere" cond
"end" kw
"endblock" kw
"endblockdata" kw
"enddo" loop
"endfile" kw
"endforall" loop
"endif" cond
"endinterface" kw
"endmodule" kw
"endselect" cond
"endtype" kw
"endwhere" kw
"entry" kw
"equivalence" kw
"exit" kw
"external" kw
"forall" loop
"format" kw
"function" kw
"go" loop
"goto" loop
"if" cond
"implicit" kw
"in" kw
"inout" kw
"inquire" kw
"integer" kw
"intent" kw
"interface" kw
"intrinsic" kw
"iolength" kw
"kind" kw
"logical" type
"module" kw
"namelist" kw
"none" kw
"nullify" kw
"only" kw
"open" kw
"optional" kw
"out" kw
"parameter" kw
"pause" kw
"pointer" kw
"precision" type
"print" kw
"private" kw
"procedure" kw
"program" kw
"publc" kw
"public" kw
"pure" kw
"read" kw
"real" type
"recursive" kw
"result" kw
"return" kw
"rewind" kw
"save" kw
"select" cond
"selectcase" cond
"sequence" kw
"stat" kw
"stop" kw
"subroutine" kw
"target" kw
"then" cond
"to" loop
"type" kw
"use" kw
"where" kw
"while" loop
"write" kw
# Here are instrinsics
"abs" intrinsic
"achar" intrinsic
"acos" intrinsic
"adjustl" intrinsic
"adjustr" intrinsic
"aimag" intrinsic
"aint" intrinsic
"all" intrinsic
"allocated" intrinsic
"alog" intrinsic
"alog10" intrinsic
"anint" intrinsic
"any" intrinsic
"asin" intrinsic
"associated" intrinsic
"atan" intrinsic
"atan2" intrinsic
"bit_size" intrinsic
"btest" intrinsic
"ceiling" intrinsic
"char" intrinsic
"cmplx" intrinsic
"conjg" intrinsic
"cos" intrinsic
"cosh" intrinsic
"count" intrinsic
"cpu_time" intrinsic
"cshift" intrinsic
"date_and_time" intrinsic
"dble" intrinsic
"digits" intrinsic
"dim" intrinsic
"dot_product" intrinsic
"dprod" intrinsic
"eoshift" intrinsic
"epsilon" intrinsic
"exp" intrinsic
"exponent" intrinsic
"false" intrinsic
"floor" intrinsic
"float" intrinsic
"fraction" intrinsic
"huge" intrinsic
"iachar" intrinsic
"iand" intrinsic
"ibclr" intrinsic
"ibits" intrinsic
"ibset" intrinsic
"ichar" intrinsic
"ieor" intrinsic
"index" intrinsic
"int" intrinsic
"int2" intrinsic
"ior" intrinsic
"ishft" intrinsic
"ishftc" intrinsic
"kind" intrinsic
"lbound" intrinsic
"len" intrinsic
"len_trim" intrinsic
"lge" intrinsic
"lgt" intrinsic
"lle" intrinsic
"llt" intrinsic
"log" intrinsic
"log10" intrinsic
"matmul" intrinsic
"max" intrinsic
"maxexponent" intrinsic
"maxloc" intrinsic
"maxval" intrinsic
"merge" intrinsic
"min" intrinsic
"minexponent" intrinsic
"minloc" intrinsic
"minval" intrinsic
"mod" intrinsic
"modulo" intrinsic
"mvbits" intrinsic
"nearest" intrinsic
"nint" intrinsic
"not" intrinsic
"null" intrinsic
"pack" intrinsic
"present" intrinsic
"product" intrinsic
"radix" intrinsic
"random_number" intrinsic
"random_seed" intrinsic
"range" intrinsic
"real" intrinsic
"repeat" intrinsic
"reshape" intrinsic
"rrspacing" intrinsic
"scale" intrinsic
"scan" intrinsic
"selected_int_kind" intrinsic
"selected_real_kind" intrinsic
"set_exponent" intrinsic
"shape" intrinsic
"sign" intrinsic
"sin" intrinsic
"sinh" intrinsic
"size" intrinsic
"spacing" intrinsic
"spread" intrinsic
"sqrt" intrinsic
"sum" intrinsic
"system_clock" intrinsic
"tan" intrinsic
"tanh" intrinsic
"tiny" intrinsic
"transfer" intrinsic
"transpose" intrinsic
"trim" intrinsic
"true" bool
"ubound" intrinsic
"unpack" intrinsic
"verify" intrinsic
done
" \t" ws_ident
:intrinsic Builtin
* idle noeat
:kw Keyword
* idle noeat
:type Type
* idle noeat
:label Label
* idle noeat
:cond Conditional
* idle noeat
:loop Loop
* idle noeat

View file

@ -0,0 +1,17 @@
# JOE syntax highlight file for Markdown
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Ignore +Comment
:line_start Idle
* idle noeat
"#" ignore recolor=-1
:idle Idle
* idle
"\n" line_start
:ignore Ignore
* ignore
"\n" line_start

View file

@ -0,0 +1,361 @@
# Google Go (golang) syntax
# (c) 2012 Matthias S. Benkmann
# License: http://creativecommons.org/licenses/by/3.0/deed.en_US
=Idle
=Bad
=Comment
=Constant
=Boolean +Constant
=String +Constant
=Character +String
=BackQuoted +String
=StringEscape +Escape
=Number +Constant
=Ident
=DefinedIdent +Ident
=Keyword
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Label +DefinedIdent
=Structure +Type +Keyword
=Type
=Builtin +DefinedFunction
=Control
=Brackets +Control
=Brace +Control
=Semicolon +Control
=Comma +Control
=Period +Control
=PeriodDecimal +Period +Number
##################### main #########################
:main Idle
* keyword_or_identifier noeat buffer
" \t" main
"\n" main
"/" maybe_comment recolor=-1
"'" single_quoted recolor=-1
"\"" double_quoted recolor=-1
"`" back_quoted recolor=-1
"+&=!|*^<>:%-" operator noeat
"()" parentheses noeat
"[]" brackets noeat
"{}" curlies noeat
";" semicolon noeat
"," comma noeat
"." period
"0" number0 recolor=-1
"1-9" float recolor=-1
"#$@~" error noeat
#################### error ##########################
:error Bad
* error
"\n" main
"/" maybe_comment_err recolor=-1
:maybe_comment_err Operator
* error noeat recolor=-2
"/" line_comment recolor=-2
"*" block_comment recolor=-2
################## comments #########################
:maybe_comment Operator
* main noeat
"/" line_comment recolor=-2
"*" block_comment recolor=-2
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" main
:block_comment Comment comment
* block_comment
"BFHNTX" block_comment noeat call=comment_todo.comment_todo()
"*" maybe_end_block_comment
:maybe_end_block_comment Comment comment
* block_comment noeat
"/" main
################ strings ############################
:single_quoted Character string
* single_quoted
"'" main
"\\" single_quoted call=.escape() recolor=-1
"\n" error
:double_quoted String string
* double_quoted
"\"" main
"\\" double_quoted call=.escape() recolor=-1
"\n" error
:back_quoted BackQuoted string
* back_quoted
"`" main
################### operators #######################
:operator Operator
* main
:parentheses Control
* main
:brackets Brackets
* main
:curlies Brace
* main
:semicolon Semicolon
* main
:comma Comma
* main
##################### period #######################
:period Period
* period_other noeat recolor=-2
"0-9" period_decimal noeat recolor=-2
:period_other Period
* main noeat
:period_decimal PeriodDecimal
* float_no_period noeat
################### numbers ####################
:float_no_period Number
* end_of_number noeat
"0-9" float_no_period
"eE" integer
:integer Number
* error noeat
"+-" unsigned
"0-9" unsigned_or_end
:unsigned Number
* error noeat
"0-9" unsigned_or_end
:unsigned_or_end Number
* end_of_number noeat
"0-9" unsigned_or_end
:end_of_number Number
* main noeat
"i" main # imaginary number suffix
:number0 Number
* end_of_number noeat
"xX" hex
"." period_decimal recolor=-1
# 099i is a valid imaginary number, 099.0 is a valid float,
# but 099 is an invalid octal.
#We don't check for this and simply lump both cases together.
"0-9" float
:hex Number
* main noeat
"0-9a-fA-F" hex
:float Number
* end_of_number noeat
"0-9" float
"." period_decimal recolor=-1
"eE" integer
################# keywords and identifiers ##########################
:keyword_or_identifier Ident
* identifier
"\p{Lu}\p{Lt}" exported_identifier recolor=-1
"\p{Ll}\p{Lo}\p{Pc}\p{Nl}" keyword_or_identifier2
:exported_identifier DefinedIdent
* exported_identifier
"\x01-/:-@[-^`{-\x7f" main noeat
:identifier Ident
* identifier
"\x01-/:-@[-^`{-\x7f" main noeat
:keyword_or_identifier2 Ident
* identifier
"\c" keyword_or_identifier2
"\x01-/:-@[-^`{-\x7f" main noeat hold strings
"_" keyword
"break" stmt
"default" label
"func" keyword
"interface" struct
"select" cond
"case" label
"defer" stmt
"go" keyword
"struct" struct
"else" cond
"goto" stmt
"package" stmt
"switch" cond
"const" stmt
"fallthrough" keyword
"if" cond
"range" loop
"type" struct
"continue" stmt
"for" loop
"import" stmt
"return" stmt
"var" stmt
"true" boolean
"false" boolean
"nil" constant
"iota" constant
"byte" type
"rune" type
"int" type
"uint" type
"uintptr" type
"uint8" type
"uint16" type
"uint32" type
"uint64" type
"int8" type
"int16" type
"int32" type
"int64" type
"float32" type
"float64" type
"complex64" type
"complex128" type
"bool" type
"string" type
"error" type
"map" type
"chan" type
"delete" builtin
"make" builtin
"len" builtin
"cap" builtin
"new" builtin
"copy" builtin
"append" builtin
"close" builtin
"complex" builtin
"imag" builtin
"panic" builtin
"print" builtin
"println" builtin
"real" builtin
"recover" builtin
done
:keyword Keyword
* main noeat
:constant Constant
* main noeat
:type Type
* main noeat
:builtin Builtin
* main noeat
:stmt Statement
* main noeat
:label Label
* main noeat
:struct Structure
* main noeat
:cond Conditional
* main noeat
:loop Loop
* main noeat
:boolean Boolean
* main noeat
########################## .subr escape START ######################################
.subr escape
:esc StringEscape string
* esc_err noeat
"abfnrtv'\"" whatever return
# For some reason joe doesn't interpret \\ properly if merged with the
# previous case. So create a separate case for it.
"\\" whatever return
"x" hex2
"u" hex4
"U" hex8
"0-3" oct2
:hex8 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex7
:hex7 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex6
:hex6 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex5
:hex5 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex4
:hex4 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex3
:hex3 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex2
:hex2 StringEscape string
* esc_err noeat
"a-fA-F0-9" hex1
:hex1 StringEscape string
* esc_err noeat
"a-fA-F0-9" whatever return
:oct2 StringEscape string
* esc_err noeat
"0-7" oct1
:oct1 StringEscape string
* esc_err noeat
"0-7" whatever return
:esc_err Bad
* esc_err return
"\n" esc_err_newline noeat recolor=-2
:esc_err_newline Bad
* esc_err return noeat
.end
########################## .subr escape END ######################################

View file

@ -0,0 +1,502 @@
# JOE syntax highlight file for Groovy
=Idle
=Ident
=Comment
=Shebang +Preproc
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=Regex +String
=Escape
=StringEscape +Escape +String
=RegexEscape +StringEscape
=Keyword
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Structure +Type +Keyword
=Label +DefinedIdent
=StorageClass +Type +Keyword
=Bad
=Brace
=Builtin +DefinedFunction
:pre_idle Idle
* NULL noeat call=.groovy()
.subr groovy
# #! allowed on first line
:reset Idle
* idle noeat
"#" maybe_shebang
:maybe_shebang Idle
* idle noeat
"!" shebang recolor=-2
:shebang Shebang
* shebang
"\n" idle
:idle Idle
* idle
"{}" brace recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." ident_no_kw
"\"" double_quote recolor=-1
"'" single_quote recolor=-1
"/" maybe_regex recolor=-1
"$" not_string buffer
"\i" ident buffer
# / / regex not allowed after terms
:after_term Idle
* idle noeat
" \t)" after_term
"/" slash_after_term
:slash_after_term Idle
* idle noeat
"/" line_comment recolor=-2
"*" comment recolor=-2
:maybe_regex Regex string
* regex noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
:regex Regex string
* regex
"\\" regex_quote recolor=-1
"/" after_term
"$" maybe_regex_subst recolor=-1
:maybe_regex_subst Regex string
* regex noeat
"\i" regex_subst1 recolor=-2
"{" regex_subst recolor=-2
:regex_subst RegexEscape string
* regex_subst
"}" regex
:regex_subst1 RegexEscape string
* regex noeat
".\c" regex_subst1
:regex_quote RegexEscape string
* regex
:not_string Idle
* idle noeat
"\c" builtin recolor=-2
"/" dstring recolor=-2
:brace Brace
* idle noeat
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:end_of_file_comment Comment comment
* end_of_file_comment
:first_digit Number
* after_term noeat
"x" hex
"b" binary
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
"gGlLiIdDfF" after_term
:bad_number Bad
* after_term noeat
"0-9" bad_number
:octal Number
* after_term noeat
"0-7_" octal
"89" bad_number recolor=-1
:binary Number
* after_term noeat
"01_" binary
"2-9" bad_number recolor=-1
:hex Number
* after_term noeat
"0-9A-Fa-f_" hex
:decimal Number
* after_term noeat
"0-9_" decimal
"eE" epart
"." float
"gGlLiIdDfF" after_term
:float Number
* after_term noeat
"eE" epart
"0-9_" float
"gGlLiIdDfF" after_term
:epart Number
* after_term noeat
"0-9+\-" enum
:enum Number
* after_term noeat
"0-9_" enum
"gGlLiIdDfF" after_term
# Distinguish between " and """
:double_quote String string
* string noeat
"\"" double_quote_1
:double_quote_1 String string
* after_term noeat
"\"" tstring
# strings like "hello"
# interpolation allowed
# line crossing not allowed
:string String string
* string
"\"" after_term
"\n" after_term
"\\" string_escape recolor=-1
"$" maybe_string_subst recolor=-1
:maybe_string_subst String string
* string noeat
"\i" string_subst1 recolor=-2
"{" string_subst recolor=-2
:string_subst StringEscape string
* string_subst
"}" string
:string_subst1 StringEscape string
* string noeat
".\c" string_subst1
:string_escape StringEscape string
* string
"x" string_hex2
"u" string_hex4
"0-7" string_octal2
"\n" string recolor=-2
:string_hex4 StringEscape string
* string noeat
"0-9a-fA-F" string_hex3
:string_hex3 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string_hex1
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal1
:string_octal1 StringEscape string
* string noeat
"0-7" string
# tstrings like "hello"
# interpolation allowed
# line crossing not allowed
:tstring String string
* tstring
"\"" tstring_maybe_done
"\\" tstring_escape recolor=-1
"$" maybe_tstring_subst recolor=-1
:tstring_maybe_done String string
* tstring noeat
"\"" tstring_maybe_done_2
:tstring_maybe_done_2 String string
* tstring noeat
"\"" after_term
:maybe_tstring_subst String string
* tstring noeat
"\i" tstring_subst1 recolor=-2
"{" tstring_subst recolor=-2
:tstring_subst StringEscape string
* tstring_subst
"}" tstring
:tstring_subst1 StringEscape string
* tstring noeat
".\c" tstring_subst1
:tstring_escape StringEscape string
* tstring
"x" tstring_hex2
"u" tstring_hex4
"0-7" tstring_octal2
"\n" tstring recolor=-2
:tstring_hex4 StringEscape string
* tstring noeat
"0-9a-fA-F" tstring_hex3
:tstring_hex3 StringEscape string
* tstring noeat
"0-9a-fA-F" tstring_hex2
:tstring_hex2 StringEscape string
* tstring noeat
"0-9a-fA-F" tstring_hex1
:tstring_hex1 StringEscape string
* tstring noeat
"0-9a-fA-F" tstring
:tstring_octal2 StringEscape string
* tstring noeat
"0-7" tstring_octal1
:tstring_octal1 StringEscape string
* tstring noeat
"0-7" tstring
# strings like: $/sdfsdf/$
# interpolation allowed
:dstring String string
* dstring
"$" dstring_esc recolor=-1
"/" dstring_maybe_done
:dstring_maybe_done String string
* dstring noeat
"$" after_term
:dstring_esc StringEscape string
* dstring
"/" dstring_esc_slash
:dstring_esc_slash StringEscape string
* dstring noeat recolor=-1
"$" dstring
:single_quote String string
* char noeat recolor=-1
"\'" single_quote_1
:single_quote_1 String string
* after_term noeat
"\'" tchar
# strings like 'hello'
# no interpolation
# no line crossing
:char String string
* char
"\n" after_term
"\'" after_term
"\\" char_escape recolor=-1
:char_escape StringEscape string
* char
"x" char_hex2
"u" char_hex4
"0-7" char_octal2
"\n" char recolor=-2
:char_hex4 StringEscape string
* char noeat
"0-9a-fA-F" char_hex3
:char_hex3 StringEscape string
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 StringEscape string
* char noeat
"0-9a-fA-F" char_hex1
:char_hex1 StringEscape string
* char noeat
"0-9a-fA-F" char
:char_octal2 StringEscape string
* char noeat
"0-7" char_octal1
:char_octal1 StringEscape string
* char noeat
"0-7" char
# strings like 'hello'
# no interpolation
# no line crossing
:tchar String string
* tchar
"\'" after_term
"\\" tchar_escape recolor=-1
:tchar_maybe_done String string
* tchar noeat
"\'" tchar_maybe_done_2
:tchar_maybe_done_2 String string
* tchar noeat
"\'" after_term
:tchar_escape StringEscape string
* tchar
"x" tchar_hex2
"u" tchar_hex4
"0-7" tchar_octal2
"\n" tchar recolor=-2
:tchar_hex4 StringEscape string
* tchar noeat
"0-9a-fA-F" tchar_hex3
:tchar_hex3 StringEscape string
* tchar noeat
"0-9a-fA-F" tchar_hex2
:tchar_hex2 StringEscape string
* tchar noeat
"0-9a-fA-F" tchar_hex1
:tchar_hex1 StringEscape string
* tchar noeat
"0-9a-fA-F" tchar
:tchar_octal2 StringEscape string
* tchar noeat
"0-7" tchar_octal1
:tchar_octal1 StringEscape string
* tchar noeat
"0-7" tchar
:ident_no_kw Ident
* after_term noeat
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"\i" ident_no_kw1
:ident_no_kw1 Ident
* after_term noeat
"\c" ident_no_kw1
:ident Ident
* after_term noeat strings
"as" operator
"assert" stmt
"break" loop
"case" label
"catch" stmt
"class" struct
"const" storage
"continue" loop
"def" stmt
"default" label
"do" loop
"else" cond
"enum" struct
"extends" struct
"finally" stmt
"for" loop
"goto" loop
"if" cond
"implements" struct
"import" kw
"in" operator
"instanceof" operator
"interface" struct
"new" operator
"package" kw
"return" stmt
"super" kw
"switch" cond
"throw" kw
"throws" struct
"trait" kw
"try" stmt
"while" loop
"true" bool
"false" bool
"null" lit
done
"\c" ident
:kw Keyword
* idle noeat
:stmt Statement
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:struct Structure
* idle noeat
:storage StorageClass
* idle noeat
:label Label
* idle noeat
:lit Constant
* idle noeat
:bool Boolean
* idle noeat
:operator Operator
* idle noeat
:builtin Builtin
* idle noeat
"\c" builtin
.end

View file

@ -0,0 +1,124 @@
# JOE syntax highlight file for Haml
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Comment
=Constant
=Escape
=Bad
=Brace
=TagName +Keyword
=TagEnd +Keyword
=Id +DefinedIdent
=Class +Type
=Doctype +Preproc
=Filter +Operator +Keyword
:line_start Idle
* idle noeat
# eat indent
" " line_start
"\\" escape_first recolor=-1
"!" doctype1
"%" tag recolor=-1
# implicit <div>
".#" after_tag noeat
"/" html_comment recolor=-1
":" filter recolor=-1
:escape_first Constant
* idle_no_ruby
:idle Constant
* idle_no_ruby
"\n" line_start
"#" maybe_subst
"\\" maybe_subst_escape
"=~-" ruby_call noeat
"&!" maybe_esc_ruby_call
:idle_no_ruby Constant
* idle_no_ruby
"\n" line_start
"#" maybe_subst
"\\" maybe_subst_escape
:doctype1 Idle
* idle recolor=-2
"=" esc_ruby_call recolor=-2
"!" doctype2
:doctype2 Idle
* idle recolor=-3
"!" doctype3 recolor=-3
:doctype3 Doctype
* doctype3
"\n" line_start
:tag TagName
* idle noeat
"a-zA-Z0-9_-" tag
".#{(/" after_tag noeat
:after_tag Idle
* idle noeat
"." class recolor=-1
"#" id recolor=-1
"{" attrA
"(" attrB
"/" tag_close recolor=-1
:class Class
* after_tag noeat
"a-zA-Z0-9_-" class
:id Id
* after_tag noeat
"a-zA-Z0-9_-" id
:attrA Idle
* attrA
"}" after_tag
:attrB Idle
* attrB
")" after_tag
:tag_close TagEnd
* idle noeat
:html_comment Comment comment
* html_comment
"\n" line_start
:ruby_call Idle
* line_start call=ruby.ruby(haml)
:maybe_esc_ruby_call Constant
* idle_no_ruby
"=" esc_ruby_call recolor=-2
:esc_ruby_call Idle
* line_start call=ruby.ruby(haml)
"=" esc_ruby_call2
:esc_ruby_call2 Idle
* line_start call=ruby.ruby(haml)
:maybe_subst Constant
* idle_no_ruby
"{" subst recolor=-2
:subst Escape
* subst
"}" idle_no_ruby
:maybe_subst_escape Constant
* idle_no_ruby
:filter Filter
* idle
"a-zA-Z0-9_" filter

View file

@ -0,0 +1,445 @@
# JOE syntax highlight file for Haskell
=Idle
=Comment
=Keyword
=Statement +Keyword
=Conditional +Statement +Keyword
=Structure +Type +Keyword
=Bad
=Constant
=Number +Constant
=FloatNumber +Number
=DecNumber +Number
=HexNumber +Number
=OctNumber +Number
=String +Constant
=StringEscape +Escape +String
=Character +String
=CharacterEscape +StringEscape
=StringGap
=Special +Escape
=ModId +Type
=VarId +Ident
=ConId +Ident
=VarSym +Operator
=Pragma +Preproc
:reset Idle
* reset
"a-z_" varid buffer recolor=-1
"A-Z" conormodid mark recolor=-1
":" consym buffer recolor=-1
"!#$%&*+./<=>?@\\^|~" varsym buffer recolor=-1
"-" dashorvarsym mark buffer recolor=-1
"(),;[]`}" special recolor=-1
"{" specialorncomment recolor=-1
"0-9" integerstart mark noeat
"\'" charlit recolor=-1
"\"" strlit recolor=-1
:special Special
* reset noeat
:specialorncomment Special
* reset noeat
"-" ncommentstart recolor=-2
:ncommentstart Comment comment
* reset noeat call=.comment()
"#" pragma recolor=-3
.subr comment
:ncomment Comment comment
* ncomment
"BFHNTX" ncomment noeat call=comment_todo.comment_todo()
"-" ncommentmaybeend
"{" ncommentmaybenest
:ncommentmaybeend Comment comment
* ncomment noeat
"}" ncomment return
:ncommentmaybenest Comment comment
* ncomment noeat
"-" ncomment call=.comment()
.end
:pragma Pragma
* pragma
"#" pragmamaybeend1
"-" pragmamaybebadend
:pragmamaybeend1 Pragma
* pragma noeat
"-" pragmamaybeend2
:pragmamaybeend2 Pragma
* pragma noeat
"}" reset
:pragmamaybebadend Bad
* pragma noeat
"}" errorstate recolor=-2
:errorstate Bad
* reset
:conormodid ConId
* reset noeat
"." probablymodid recolor=-1
"a-zA-Z0-9'_" conormodid
# give it color varid to color the dot in case it is *not* a modid in the
# right color
:probablymodid VarSym
* ismodid noeat recolormark recolor=-1
" \t\r\n\v\f" reset
:ismodid ModId
* reset noeat
:varid VarId
* reset noeat strings
"case" stmt
"class" struct
"data" struct
"default" struct
"deriving" struct
"do" stmt
"else" cond
"if" cond
"import" kw
"infix" struct
"infixl" struct
"infixr" struct
"instance" struct
"let" stmt
"module" struct
"newtype" kw
"of" stmt
"then" cond
"type" kw
"where" struct
"_" kw
done
"a-zA-Z0-9_'" varid
:kw Keyword
* reset noeat
:cond Conditional
* reset noeat
:struct Structure
* reset noeat
:stmt Statement
* reset noeat
:consym ConId
* reset noeat strings
":" kw
"::" kw
done
"-!#$%&*+./<=>?@\\^|~:" consym
:varsym VarSym
* reset noeat strings
".." kw
"=" kw
"\\" kw
"|" kw
"<-" kw
"->" kw
"@" kw
"~" kw
done
"-!#$%&*+./<=>?@\\^|~:" varsym
:dashorvarsym VarSym
* varsym noeat
"-" dashdash hold
:dashdash VarSym
* linecomment recolormark noeat
"!#$%&*+./<=>?@\\^|~:" varsym
"-" dashdash
:linecomment Comment comment
* linecomment
"BFHNTX" linecomment noeat call=comment_todo.comment_todo()
"\n" reset
:integerstart DecNumber
* decnum
"0" intdispatch
:decnum DecNumber
* reset noeat
"." floatmaybemant
"e" floatexponentstart
"0-9" decnum
:intdispatch DecNumber
* decnum noeat
"oO" octstart
"xX" hexstart
# Catch "0o " which is "integer 0" "symbol o" "whitespace"
# and "0oo" which is "integer 0" "symbol oo"
:octstart OctNumber
* varid noeat recolor=-2
"0-7" octint recolor=-3
# Catch "0o08" which is "(octal) integer 0" "integer 8"
:octint OctNumber
* reset noeat
"0-7" octint
:hexstart HexNumber
* varid noeat recolor=-2
"0-9a-fA-F" hexint recolor=-3
:hexint HexNumber
* reset noeat
"0-9a-fA-F" hexint
# default jumps to varsym because the dot that sent us here is the first
# char of a symbol.
:floatmaybemant FloatNumber
* varsym noeat recolor=-2
"0-9" floatmantissa recolormark
:floatmantissa FloatNumber
* reset noeat
"0-9" floatmantissa
"eE" floatexponentstart
# after an 'e'
# default jump is for identifiers starting with e directly pasted to a
# number
# recolormark is needed in the case we got here from decnum
:floatexponentstart FloatNumber
* varid noeat recolor=-2
"+-" floatexponentstart2
"0-9" floatexponent recolormark
# in case of non-digit:
# the e is a one-char-identifier, the + or - is the start of a symbol
:floatexponentstart2 FloatNumber
* unrollfloat noeat recolor=-3
"0-9" floatexponent recolormark
:floatexponent FloatNumber
* reset noeat
"0-9" floatexponent
# the error is just for testing...
:unrollfloat VarId
* varsym noeat recolor=-2
:charlit Character string
* charlitend
"\n" errorstate noeat recolor=-2
"\'" errorstate noeat recolor=-2
"\\" escape_charlit mark recolor=-1
:charlitend Character string
* charliterror noeat
"\'" reset
:escape_charlit CharacterEscape string
* charliterror recolor=-2
"0-9" escdecchar
"o" escoctcharstart
"x" eschexcharstart
"abfnrtv\\\"\'" charlitend
"A-Z" escasciichar buffer
"^" escasciictrlchar
:escoctcharstart CharacterEscape string
* charliterror recolor=-3 noeat
"0-7" escoctchar
:escoctchar CharacterEscape string
* charlitend noeat
"0-7" escoctchar
:escdecchar CharacterEscape string
* charlitend noeat
"0-9" escdecchar
:eschexcharstart CharacterEscape string
* charliterror recolor=-3 noeat
"0-9a-fA-F" eschexchar
:eschexchar CharacterEscape string
* charlitend noeat
"0-9a-fA-F" eschexchar
:escascnotfoundchar CharacterEscape string
* charliterror recolormark noeat
"A-Z" escasciichar
:escasciichar CharacterEscape string
* charliterror recolormark
"A-Z'" escascnotfoundchar noeat strings
"NUL" asciidonechar
"STX" asciidonechar
"ETX" asciidonechar
"EOT" asciidonechar
"ENQ" asciidonechar
"ACK" asciidonechar
"BEL" asciidonechar
"BS" asciidonechar
"HT" asciidonechar
"LF" asciidonechar
"VT" asciidonechar
"FF" asciidonechar
"CR" asciidonechar
"SO" asciiSOchar
"SI" asciidonechar
"DLE" asciidonechar
"DC1" asciidonechar
"DC2" asciidonechar
"DC3" asciidonechar
"DC4" asciidonechar
"NAK" asciidonechar
"SYN" asciidonechar
"ETB" asciidonechar
"CAN" asciidonechar
"EM" asciidonechar
"SUB" asciidonechar
"ESC" asciidonechar
"FS" asciidonechar
"GS" asciidonechar
"RS" asciidonechar
"US" asciidonechar
"SP" asciidonechar
"DEL" asciidonechar
done
:asciiSOchar CharacterEscape string
* charliterror recolormark
"'" charlitend noeat
"H" charlitend
:escasciictrlchar CharacterEscape string
* charliterror noeat recolor=-3
"A-Z@[\\]^_" charlitend
:asciidonechar CharacterEscape string
* charlitend noeat
:charliterror Bad
* charliterror
"\'" charlitend noeat
# now for string literals
:strlit String string
* strlit
"\"" reset
"\n" errorstate noeat recolor=-2
"\\" escape_strlit mark recolor=-1
:escape_strlit StringEscape string
* strliterror recolor=-2
"0-9" escdecstr
"o" escoctstrstart
"x" eschexstrstart
"abfnrtv\\\"\'&" strlit
"A-Z" escasciistr buffer
"^" escasciictrlstr
" \t\n\r\v" stringgap recolor=-2
:escoctstrstart StringEscape string
* strliterror recolor=-3 noeat
"0-7" escoctstr
:escoctstr StringEscape string
* strlit noeat
"0-7" escoctstr
:escdecstr StringEscape string
* strlit noeat
"0-9" escdecstr
:eschexstrstart StringEscape string
* strliterror recolor=-3 noeat
"0-9a-fA-F" eschexstr
:eschexstr StringEscape string
* strlit noeat
"0-9a-fA-F" eschexstr
:escascnotfoundstr StringEscape string
* strliterror recolormark noeat
"A-Z" escasciistr
:escasciistr StringEscape string
* strliterror noeat recolormark
"A-Z\"" escascnotfoundstr noeat strings
"NUL" asciidonestr
"STX" asciidonestr
"ETX" asciidonestr
"EOT" asciidonestr
"ENQ" asciidonestr
"ACK" asciidonestr
"BEL" asciidonestr
"BS" asciidonestr
"HT" asciidonestr
"LF" asciidonestr
"VT" asciidonestr
"FF" asciidonestr
"CR" asciidonestr
"SO" asciiSOstr
"SI" asciidonestr
"DLE" asciidonestr
"DC1" asciidonestr
"DC2" asciidonestr
"DC3" asciidonestr
"DC4" asciidonestr
"NAK" asciidonestr
"SYN" asciidonestr
"ETB" asciidonestr
"CAN" asciidonestr
"EM" asciidonestr
"SUB" asciidonestr
"ESC" asciidonestr
"FS" asciidonestr
"GS" asciidonestr
"RS" asciidonestr
"US" asciidonestr
"SP" asciidonestr
"DEL" asciidonestr
done
:asciiSOstr StringEscape string
* strlit noeat
"H" strlit
:escasciictrlstr StringEscape string
* strliterror noeat recolor=-3
"A-Z@[\\]^_" strlit
:asciidonestr StringEscape string
* strlit noeat
:stringgap StringGap string
* strgaperror recolor=-1
"\\" strlit
" \n\r\t\v" stringgap
:strgaperror Bad
* strgaperror
"\\" strlit
"\"" reset
:strliterror Bad
* strlit noeat

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
# JOE syntax highlight file for HTML embedded ERB
# by Christian Nicolai (http://mycrobase.de)
=Idle
:begin Idle
* NULL noeat call=html.html(erb)

View file

@ -0,0 +1,79 @@
# JOE syntax highlight file for INI files
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Comment
=Escape
=Bad
=Value # Maybe should be +Constant but it's too colorful.
=Attr +Type
=Key +Attr
=Separator +Attr
=Section +Preproc
:line_start Idle
* key noeat
"\n" line_start
" \t\r" line_start # leading spaces
";#" line_comment recolor=-1
"[" section recolor=-1
"=" missing_key recolor=-1
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" line_start
:section Section
* section
"]" section_end
"\n" section_unexp_end recolor=-2
:section_end Bad
* section_end
"\n" line_start
:section_unexp_end Bad
* line_start noeat
:missing_key Bad
* value_pre noeat
:key Key
* key
" \t\r" key_post noeat
"=" sep recolor=-1
"\n" key_error recolor=-2
:key_post Idle
* value_pre noeat
" \t\r" key_post
"=" sep recolor=-1
:key_error Bad
* key noeat
:sep Separator
* value_pre noeat
:value_pre Idle
* value noeat
" \t\r" value_pre
:value Value
* value
"\\" value_esc
"\n" line_start
" " maybe_comment recolor=-1
:value_esc Escape
* value
"\n" value_error recolor=-2
:value_error Bad
* value noeat
:maybe_comment Idle
* value noeat
";#" line_comment recolor=-1

View file

@ -0,0 +1,129 @@
# JOE syntax highlight file for ip(6)tables-save and -restore
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Comment
=Constant
=Escape
=Bad
=Table +Preproc
=Policy +Keyword
=Option +Type
=Module +DefinedIdent
:line_start Idle
* rest noeat
"#" line_comment recolor=-1
"*" maybe_table buffer
":" default_policy recolor=-1
"C" maybe_commit buffer
"-" command
:rest Idle
* rest
"\n" line_start
:line_comment Comment comment
* line_comment
"\n" line_start
:maybe_table Idle
* bad noeat strings
"*filter" table_name
"*mangle" table_name
"*nat" table_name
"*raw" table_name
done
"a-z" maybe_table
:table_name Table
* bad noeat
"\n" line_start
:default_policy Policy
* default_policy
"\n" line_start
:maybe_commit Idle
* bad noeat strings
"COMMIT" commit
done
"A-Z" maybe_commit
:commit Table
* bad noeat
"\n" line_start
:command Idle
* bad noeat
"ADINX" chain_name_pre
:chain_name_pre Idle
* chain_name noeat
" " chain_name_pre
:chain_name Option
* chain_name
" " rule_spec noeat
"\n" line_start
:rule_spec Idle
* rule_option noeat
" " rule_spec
"\n" line_start
:rule_option Idle
* rule_option
" " rule_spec noeat
"\n" line_start
"-" rule_flag
:rule_flag Idle
* rule_option
"-" rule_flag_flag
"iojp" rule_iojp_pre
"sd" rule_sd_pre
"m" rule_m_pre
:rule_flag_flag Idle
* rule_flag_flag1 buffer
:rule_flag_flag1 Idle
* rule_option noeat strings
"sport" rule_sd_pre
"dport" rule_sd_pre
done
"a-z-_" rule_flag_flag1
:rule_iojp_pre Idle
* rule_iojp noeat
" " rule_iojp_pre
:rule_iojp Option
* rule_iojp
" " rule_option noeat
"\n" line_start
:rule_sd_pre Idle
* rule_sd noeat
" " rule_sd_pre
:rule_sd Constant
* rule_sd
" " rule_option noeat
"\n" line_start
:rule_m_pre Idle
* rule_m noeat
" " rule_m_pre
:rule_m Module
* rule_m
" " rule_option noeat
"\n" line_start
:bad Bad
* bad
"\n" line_start

View file

@ -0,0 +1,311 @@
# JOE syntax highlight file for JAVA
# Needs: improve escape parsing
=Idle
=Ident
=Comment
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=Character +String
=Escape
=StringEscape +Escape +String
=CharacterEscape +StringEscape
=Type
=Keyword
=Operator +Keyword
=Bad
=Brace
=Control
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Structure +Type +Keyword
=StorageClass +Type +Keyword
=Include +Preproc
=Label +DefinedIdent
=Methods +DefinedFunction +DefinedIdent +Ident
:begin Idle
* begin noeat call=.java()
#
# Java as a subroute- for use as java script in html
#
.subr java
:idle Idle
* idle
"\n" idle
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"\i\p{Sc}" ident mark buffer
"{}" brace recolor=-1
",:;=()><[]*&|!~+\-%^" control recolor=-1
:maybe_done Control
* idle noeat
"/" idle noeat return recolor=-2
:brace Brace
* idle noeat
:control Control
* idle noeat
:slash Idle
* idle noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment noeat
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"u" string_uni1
"0-7" string_octal2
"\n" string recolor=-2
:string_uni1 StringEscape string
* string noeat
"0-9a-fA-F" string_uni2
:string_uni2 StringEscape string
* string noeat
"0-9a-fA-F" string_uni3
:string_uni3 StringEscape string
* string noeat
"0-9a-fA-F" string_uni4
:string_uni4 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\n" reset
"diouxXeEfFgGaAcspn%SC" string
:char Character string
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"u" char_uni1
"0-7" char_octal2
"\n" char recolor=-2
:char_uni1 CharacterEscape string
* char noeat
"0-9a-fA-F" char_uni2
:char_uni2 CharacterEscape string
* char noeat
"0-9a-fA-F" char_uni3
:char_uni3 CharacterEscape string
* char noeat
"0-9a-fA-F" char_uni4
:char_uni4 CharacterEscape string
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
:ident Ident
* ident_end noeat markend strings
"abstract" storage
"assert" stmt
"boolean" type
"break" loop
"byte" type
"case" label
"catch" kw
"char" type
"class" struct
"const" bad_kw
"continue" loop
"default" label
"do" loop
"double" type
"else" cond
"enum" storage
"extends" storage
"false" bool
"final" storage
"finally" kw
"float" type
"for" loop
"goto" bad_kw
"if" cond
"implements" storage
"import" include
"instanceof" operator
"int" type
"interface" struct
"long" type
"native" include
"new" operator
"null" lit
"package" include
"private" storage
"protected" storage
"public" storage
"return" stmt
"serializable" storage
"short" type
"static" storage
"strictfp" storage
"super" kw
"switch" cond
"synchronized" storage
"this" kw
"throw" stmt
"throws" storage
"transient" storage
"true" bool
"try" kw
"void" kw
"volatile" storage
"while" loop
done
"\c\p{Sc}" ident
:type Type
* idle noeat
:kw Keyword
* idle noeat
:bad_kw Bad
* idle noeat
:bool Boolean
* idle noeat
:lit Constant
* idle noeat
:operator Operator
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:storage StorageClass
* idle noeat
:struct Structure
* idle noeat
:include Include
* idle noeat
:stmt Statement
* idle noeat
:label Label
* idle noeat
:ident_end Ident
* idle noeat
" " ident_end
"(" method_end noeat recolormark
:method_end Methods
* idle noeat
.end

View file

@ -0,0 +1,86 @@
# JOE syntax highlight file for Joe Colors
=Idle
=Comment
=Preproc
=Define +DefinedIdent
=ColorSection +Preproc
=BuiltinSpec +Keyword
=ColorAttr +Keyword
=ColorDef +Type
=ColorRef +Type
=Constant
=Number +Constant
=Operator
=Macro +Variable +Escape
:idle Idle
* idle
"#" comment recolor=-1
"0-9" number recolor=-1
"$" hex_color recolor=-1
"*" asterisk recolor=-1
"=" color_def recolor=-1
"+" color_ref recolor=-1
"." pre recolor=-1 buffer
"/" slash recolor=-1
"-" builtin recolor=-1
"[" macro_ref recolor=-1
"a-zA-Z" attribute recolor=-1
:comment Comment comment
* comment
"\n" idle
:number Number
* idle noeat
"0-9" number
:hex_color Number
* idle noeat
"0-9a-fA-F" hex_color
:asterisk Operator
* idle noeat
:slash Operator
* idle noeat
:color_def ColorDef
* idle noeat
"\c." color_def
:color_ref ColorRef
* idle noeat
"\c." color_ref
:pre Preproc
* idle noeat strings
".colors" color_section
".set" macro_def
done
"\c" pre
:color_section ColorSection
* idle noeat
:macro_def Preproc
* idle
" \t" macro_def
"\i" macro_name noeat
:macro_name Define
* idle
"\i\c" macro_name
:macro_ref Macro
* macro_ref
"\n]" idle
:builtin BuiltinSpec
* idle noeat
"\c" builtin
:attribute ColorAttr
* idle noeat
"a-zA-Z" attribute

View file

@ -0,0 +1,122 @@
# JOE syntax highlight file for typical UNIX configuration files
=Idle
=Comment
=Constant
=Number +Constant
=String +Constant
=Escape
=Bad
:idle Idle
* not_comment
"\n" idle
" " comment
"-" option
"\"" keybind_string recolor=-1
"\i" keybind
:keybind Idle
* keybind
"\"" keybind_string recolor=-1
"\n" idle
"," keybind_after_comma
" " keybind1
:keybind_after_comma Idle
* keybind noeat
" " keybind_after_comma
"\n" keybind_after_comma
:keybind_string String string
* keybind_string
"\\" keybind_escape recolor=-1
"\"" keybind
:keybind_escape Escape
* keybind_string
:keybind1 Idle
* keybind2
"\n" idle
" " keybind1
:keybind2 Idle
* keybind2
"\n" idle
" " comment noeat
" " maybe_com
:maybe_com Idle
* keybind2 noeat
" " comment noeat
:option Idle
* bad recolor=-1
"-" option
"\i" ident buffer
:ident Idle
* comment noeat strings
"backpath" sopt
"lines" nopt
"baud" nopt
"columns" nopt
"skiptop" nopt
"text_color" sopt
"status_color" sopt
"help_color" sopt
"menu_color" sopt
"prompt_color" sopt
"msg_color" sopt
"lmsg" sopt
"rmsg" sopt
"smsg" sopt
"zmsg" sopt
"xmsg" sopt
"aborthint" sopt
"helphint" sopt
"cpara" sopt
"encoding" sopt
"syntax" sopt
"indentc" nopt
"istep" nopt
"lmargin" nopt
"rmargin" nopt
"keymap" sopt
"mfirst" sopt
"mnew" sopt
"mold" sopt
"msnew" sopt
"msold" sopt
"text_delimiters" sopt
done
"\c" ident
:sopt Idle
* dosopt # Do eat the space
:dosopt String string
* dosopt
"\n" idle
:nopt Idle
* bad recolor=-1
" \t" nopt
"0-9" nopt1 recolor=-1
:nopt1 Number
* comment noeat
"0-9" nopt1
:bad Bad
* bad
"\n" idle
:comment Comment comment
* comment
"\n" idle
:not_comment Idle
* not_comment
"\n" idle

View file

@ -0,0 +1,704 @@
# JOE syntax highlight file for JavaScript
# by Christian Nicolai (http://mycrobase.de) and Rebecca Turner
# Define colors
=Idle
=Comment
=Constant
=String +Constant
=StringEscape +Escape
=Regex +String
=RegexEscape +StringEscape
=RegexOptions
=Number +Constant
=Type
=CustomType +DefinedType +DefinedIdent
=Keyword
=Global
=Exports
=ExportItem
=Operator
=Bad
=Brace
=Assign
=Paren
=Bracket
=Semicolon
=Comma
=PropSep
=Syntax
=Ident
=Method +Ident
# from html.jsf to support embedded languages
=TagEdge
:begin Idle
* begin noeat call=.js()
"#" shebang recolor=-1
:shebang Comment comment
* shebang
"\n" begin
.subr js
:idle Idle
* idle
"/" re_or_comment recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" after_term call=.string() recolor=-1 save_c
"'" after_term call=.string() recolor=-1 save_c
"`" after_term call=.string(template) recolor=-1
"A-Z" type_match mark buffer recolor=-1
"$a-z_" ident mark buffer recolor=-1
"{}" brace recolor=-1
"()" paren noeat recolor=-1
";" semicolon recolor=-1
"," comma recolor=-1
"=" assign_maybe recolor=-1
"[]" bracket noeat recolor=-1
"\-" subtract recolor=-1
"+" add recolor=-1
"*|&^%" mutate_maybe recolor=-1
":?~" syntax recolor=-1
.ifdef html
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
.ifdef php
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
.ifdef mason
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
"<>!" eqmixer_maybe recolor=-1
.endif
.endif
.endif
:subtract Assign
* mutate_maybe noeat
"\-" assign recolor=-2
:add Assign
* mutate_maybe noeat
"+" assign recolor=-2
:mutate_maybe Assign
* syntax recolor=-2 noeat
"=" assign recolor=-2
:syntax Syntax
* idle recolor=-1 noeat
:assign Assign
* idle recolor=-1 noeat
:eqmixer_maybe Syntax
* idle recolor=-1 noeat
"=" eqmixer_maybe
:assign_maybe Assign
* idle recolor=-1 noeat
"=" equality recolor=-2
:equality Syntax
* idle recolor=-1 noeat
"=" syntax
:maybe_done TagEdge
* eqmixer_maybe noeat
"/" idle noeat return recolor=-2
.ifdef php
"?" rtn_embed call=php.php()
.endif
.ifdef mason
"&%" rtn_embed call=perl.perl()
.endif
:rtn_embed TagEdge
* idle noeat
:no_regex Idle
* idle noeat
"/" maybe_comment recolor=-1
" " no_regex
:after_term Idle
* after_term
"\n" idle
"/" maybe_comment recolor=-1
"." prop_sep recolor=-1
.ifdef typescript
"\"'A-Za-z_0-9" idle noeat
.else
"a-z" infix_operator buffer recolor=-1
"\"'A-Z_0-9" bad_after_term recolor=-1
.endif
"{}" brace recolor=-1
"()" paren noeat recolor=-1
";" semicolon recolor=-1
"=" assign_maybe recolor=-1
"," comma recolor=-1
"[]" bracket noeat recolor=-1
"\-" subtract recolor=-1
"+" add recolor=-1
"*|&^%" mutate_maybe recolor=-1
":?~" syntax recolor=-1
.ifdef html
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
.ifdef php
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
.ifdef mason
"<" maybe_done recolor=-1
">!" eqmixer_maybe recolor=-1
.else
"<>!" eqmixer_maybe recolor=-1
.endif
.endif
.endif
:ident_only Idle
* bad_after_term recolor=-1
"A-Z" type_match mark buffer recolor=-1
"$a-z_" ident mark buffer recolor=-1
" \t" ident_only
"\n" idle
:bad_after_term Bad
* after_term noeat markend strings
done
"\"'" after_term
"a-zA-Z0-9_." bad_after_term
:re_or_comment Syntax
* regex noeat recolor=-2
"*/" maybe_comment noeat
:maybe_comment Syntax
* syntax noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
"=" assign recolor=-2
:comment Comment comment
* comment
# might be TODO label
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment noeat
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
# might be TODO label
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:regex Regex
* regex
"\\" regex_quote recolor=-1
"[" regex_charclass
"/" regex_mod
"\n" regex_bad
:regex_quote RegexEscape
* regex
"\n" regex_bad
:regex_charclass Regex
* regex_charclass
"\\" regex_cc_quote recolor=-1
"\n" regex_bad_cc
"]" regex
:regex_cc_quote RegexEscape
* regex_charclass
"\n" regex_bad_cc
:regex_bad Bad
* regex_bad
"\\" regex_bad_quote
"[" regex_bad_cc
"/" after_term
:regex_bad_quote Bad
* regex_bad
:regex_bad_cc Bad
* regex_bad_cc
"\\" regex_bad_quote_cc
"]" regex_bad
:regex_bad_quote_cc Bad
* regex_bad_cc
:regex_mod RegexOptions
* after_term noeat
"igm" regex_mod
:brace Brace
* idle noeat
:paren Paren
"(" idle
")" no_regex
:bracket Bracket
"[" idle
"]" after_term
:syntax Syntax
* idle noeat
:comma Comma
* idle noeat
:semicolon Semicolon
* idle noeat
:first_digit Number
* after_term noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* after_term noeat
"0-9" bad_number
:octal Number
* after_term noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* after_term noeat
"0-9A-Fa-f" hex
:decimal Number
* after_term noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* prop_sep noeat recolor=-2
.ifdef typescript
"." ellipsis recolor=-2
.endif
"0-9" float recolor=-2
:prop_sep PropSep
* ident_only noeat
:float Number
* after_term noeat
"eE" epart
"0-9" float
:epart Number
* after_term noeat
"0-9+\-" enum
:enum Number
* after_term noeat
"0-9" enum
:infix_operator Bad
* bad_op noeat markend strings
"in" operator
"instanceof" operator
"of" operator
done
"a-zA-Z0-9_" infix_operator
.ifdef typescript
:ellipsis Idle
* bad_after_term recolor=-3
"." ident_only
.endif
:bad_op Bad
* idle noeat
"a-zA-Z0-9_" bad_op
:operator Operator
* idle noeat
:type_match CustomType
* type_end noeat markend strings
"Infinity" lit
"NaN" lit
"Array" type
"ArrayBuffer" type
"Boolean" type
"DataView" type
"Date" type
"Error" type
"EvalError" type
"Function" type
"Float32Array" type
"Float64Array" type
"Int16Array" type
"Int32Array" type
"Int8Array" type
"JSON" type
"Math" type
"Number" type
"Object" type
"RangeError" type
"ReferenceError" type
"RegExp" type
"String" type
"SyntaxError" type
"TypeError" type
"Uint16Array" type
"Uint32Array" type
"Uint8Array" type
"Uint8ClampedArray" type
"URIError" type
# node.js
"Buffer" type
done
"a-zA-Z0-9_" type_match
:type_end Idle
* after_term noeat
" " type_end
"." prop_sep recolor=-1
.ifdef typescript
:ident Ident
* ident_end noeat markend strings
"delete" operator
"in" operator
"instanceof" operator
"typeof" operator
"new" operator
"arguments" kw
"break" kw
"case" kw
"catch" kw
"continue" kw
"default" kw
"do" kw
"else" kw
"finally" kw
"for" kw
"function" kw
"if" kw
"let" kw
"of" kw
"return" kw
"switch" kw
"throw" kw
"try" kw
"var" kw
"void" kw
"while" kw
"with" kw
"false" lit
"null" lit
"true" lit
"decodeURI" global
"decodeURIComponent" global
"encodeURI" global
"encodeURIComponent" global
"escape" global
"eval" global
"isFinite" global
"isNaN" global
"parseFloat" global
"parseInt" global
"undefined" global
"unescape" global
"setImmediate" global
"this" quasikw
"prototype" quasikw
# node.js
"exports" export
"module" global
"process" global
"global" global
"console" global
"setTimeout" global
"setInterval" global
"clearInterval" global
"clearTimeout" global
"require" quasikw
"__filename" quasikw
"__dirname" quasikw
"const" kw
# By convention...
"self" quasikw
# Typescript-specific
"abstract" kw
"as" kw
"async" kw
"await" kw
"class" kw
"constructor" kw
"declare" kw
"enum" kw
"extends" kw
"export" kw
"from" kw
"get" kw
"implements" kw
"import" kw
"instanceof" kw
"interface" kw
"is" kw
"module" kw
"namespace" kw
"private" kw
"public" kw
"require" kw
"set" kw
"static" kw
"super" kw
"typeof" kw
"any" type
"boolean" type
"number" type
"string" type
done
"$a-zA-Z0-9_" ident
.else
:ident Ident
* ident_end noeat markend strings
"delete" operator
"in" operator
"instanceof" operator
"typeof" operator
"new" operator
"arguments" kw
"break" kw
"case" kw
"catch" kw
"continue" kw
"default" kw
"do" kw
"else" kw
"finally" kw
"for" kw
"function" kw
"if" kw
"let" kw
"of" kw
"return" kw
"switch" kw
"throw" kw
"try" kw
"var" kw
"void" kw
"while" kw
"with" kw
"false" lit
"null" lit
"true" lit
"decodeURI" global
"decodeURIComponent" global
"encodeURI" global
"encodeURIComponent" global
"escape" global
"eval" global
"isFinite" global
"isNaN" global
"parseFloat" global
"parseInt" global
"undefined" global
"unescape" global
"setImmediate" global
"this" quasikw
"prototype" quasikw
# node.js
"exports" export
"module" global
"process" global
"global" global
"console" global
"setTimeout" global
"setInterval" global
"clearInterval" global
"clearTimeout" global
"require" quasikw
"__filename" quasikw
"__dirname" quasikw
"const" kw
# By convention...
"self" quasikw
done
"$a-zA-Z0-9_" ident
.endif
:ident_end Idle
* after_term noeat
" " ident_end
"." prop_sep recolor=-1
"(" method_start recolor=-1
:method_start Paren
* method_end noeat recolormark
:method_end Method
* idle noeat
:type Type
* after_term noeat
:kw Keyword
* idle noeat
:quasikw Keyword
* after_term noeat
:global Global
* after_term noeat
:export Exports
* export_end noeat
:export_end Exports
* after_term noeat
" " export_end
"." export_item_start
:export_item_start ExportItem
* bad_after_term recolor=-1 noeat
" " export_item_start
"a-zA-Z_" export_item
:export_item ExportItem
* after_term noeat
"a-zA-Z0-9_" export_item
:lit Constant
* lit_end noeat
:lit_end Constant
* after_term noeat
" " lit_end
"." prop_sep recolor=-1
.end
.subr string
:string String string
* string_body noeat mark
:string_body String string
* string
"\n" string_bad
.ifdef template
"$" string_template
"`" after_term return # save_c saves ` as ' (by-design)
.else
& after_term return
.endif
"\\" string_escape recolor=-1
:string_bad Bad
* string_bad
"\\" string_bad_escape
.ifdef template
"`" after_term return
.else
& after_term return
.endif
:string_bad_escape Bad
* string_bad
:string_template StringEscape string
* string_bad
"{" string_template_expr
:string_template_expr Type
* string_template_expr
.ifdef template
"`" string_body noeat
.else
& string_body noeat
.endif
"}" string_template_end noeat
:string_template_end StringEscape string
* string
:string_escape StringEscape string
* string
"x" string_hex1
"u" string_uni1
"0-7" string_octal2
"\n" string_bad noeat
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_uni1 StringEscape string
* string noeat
"{" string_uni_brackets
"0-9a-fA-F" string_uni2
:string_uni2 StringEscape string
* string noeat
"0-9a-fA-F" string_uni3
:string_uni3 StringEscape string
* string noeat
"0-9a-fA-F" string_uni4
:string_uni4 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_uni_brackets StringEscape string
* string_bad_escape noeat
.ifdef template
"`" string noeat
.else
& string noeat
.endif
"}" string
"0-9a-fA-F" string_uni_brackets
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
.end

View file

@ -0,0 +1,627 @@
# JOE Syntax-Highlighting Description
# for
# JOE Syntax-Highlighting Descriptions
#
# Author: Charles J. Tabony
# Date: 2007-2-13
#
# This is a highlighting description for files like this one.
#
# When CHECKING is defined, it is very aggressive about error checking. The
# idea is that anywhere the highlighted file contains a syntax error, at least
# one visible character should be highlighted as Bad. While that feature is
# useful for finding syntax errors, it is annoying when editing a file, since
# nearly everything is an error until you finish typing it.
#
# In order to not annoy people by default, but keep the option of strictly
# checking syntax, I predicated the stricter checking on the CHECKING parameter.
# By default, things that are incomplete are generally not marked as errors.
# Only things that appear to be actual mistakes are highlighted as Bad. To
# enable the stricter checking, one can highlight the file with the jsf_check
# syntax. jsf_check.jsf simply calls the entire jsf.jsf file with CHECKING
# defined.
#
# The idea is for authors of a jsf file to edit their file, highlight it with
# jsf_check, and then look for any red characters. That way they can check for
# syntax errors before testing the changes.
#####################
# Color Definitions #
#####################
=Idle
=Comment
=Conditional +Precond +Preproc
=Parameter +Ident
=Keyword
=Color +Type
=ColorRef
=State +Ident
=Subr +Ident
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape +String
=Bad
##################
# Initial States #
##################
# This is a dummy state that simply jumps to comment_or_bad. It is here so that
# when this file calls itself with the STRINGS parameter defined, comment_or_bad
# will effectively be the initial state. comment_or_bad should be the initial
# state because strings and istrings options can only be used as the last option
# of a transition.
.ifdef STRINGS
:strings_initial Idle
* comment_or_bad noeat
.endif
# Each new line (that is not considered bad from the beginning) begins in the
# idle state. The first non-whitespace character determines what the rest of
# the line should contain. Following a strings or istrings option, only strings
# and comments are allowed until the word "done" denotes the end of the list.
:idle Idle
* bad noeat
" \t\n" idle
.ifdef STRINGS
.else
"-" sync_lines_first
"." conditional_first mark recolor=-1
"=" color_definition_first
":" state_first
"*&%" special_character recolor=-1
.endif
"\"" string recolor=-1
.ifdef STRINGS
"\i" special_word mark recolor=-1 buffer
.endif
"#" comment recolor=-1
##############
# Sync Lines #
##############
# Following a '-' should be either the number of sync lines or nothing (meaning
# unlimited). Nothing else other than a comment should appear on the same line.
.ifdef STRINGS
# A sync lines directive should not appear between "[i]strings" and "done".
.else
# If we see a non-digit or a '0', then we have seen the entire sync lines
# directive. The only thing that may appear on the rest of the line is a
# comment. Otherwise there may be more digits in the number.
:sync_lines_first Number
* comment_or_bad noeat
"0" comment_or_bad
"1-9" sync_lines
# Highlight the remainder of the number.
:sync_lines Number
* comment_or_bad noeat
"0-9" sync_lines
.endif
##########################
# Conditional Directives #
##########################
# Following a '.' should be a conditional directive.
.ifdef STRINGS
# A conditional directive should not appear between "[i]strings" and "done".
.else
# Start buffering the conditional directive.
:conditional_first Conditional
* conditional noeat buffer
# Recognize the set of conditional directives.
:conditional Idle
* conditional_unknown noeat strings
"ifdef" ifdef_color
"else" conditional_color
"endif" conditional_color
"subr" subr_color
"end" conditional_color
done
"\c" conditional
# We encountered what looks like a conditional directive but is unrecognized as
# such.
:conditional_unknown Idle
.ifdef CHECKING
* bad_line recolormark noeat
.else
* comment_or_bad noeat
.endif
# We saw a conditional directive that does not take an argument. Nothing else
# other than a comment should appear on the same line.
:conditional_color Conditional
* comment_or_bad noeat
# We saw a ".ifdef" which must be followed by a parameter.
:ifdef_color Conditional
* need_parameter noeat
# We loop over whitespace until we see the first character of the parameter.
:need_parameter Idle
* bad noeat
" \t" need_parameter
"\i" parameter recolor=-1
# Now we highlight the remainder of the parameter.
:parameter Parameter
* comment_or_bad noeat
"\c" parameter
# The following three states are identical to the previous three except the
# color.
:subr_color Conditional
* need_subr noeat
:need_subr Idle
* bad noeat
" \t" need_subr
"\i" subr recolor=-1
:subr Subr
* comment_or_bad noeat
"\c" subr
.endif
####################
# Color Definition #
####################
# Following an '=' should be a color definition.
.ifdef STRINGS
# Color definitions should not appear between "[i]strings" and "done".
.else
# A color name must have at least one character.
:color_definition_first Color
* color_definition
" \t#\n" bad noeat
# Highlight any remaining characters until we see whitespace, a comment, or a
# newline.
:color_definition Color
* color_definition
" \t#\n" colors_ws noeat
# The color name may be followed by zero or more standard colors or attributes,
# ending in a comment or newline.
:colors_ws Idle
* color_bad recolor=-1
" \t" colors_ws
"+" color_ref recolor=-1
"#\n" comment noeat
:color_ref ColorRef
* colors_ws noeat
"\c" color_ref
# We have encountered something that is not recognized as a standard color or
# attribute. Continue to highlight characters as Bad until we see whitespace, a
# comment, or a newline.
:color_bad Bad
* color_bad
" \t#\n" colors_ws noeat
.endif
#########
# State #
#########
# Following a ':' should be a state definition.
.ifdef STRINGS
# New states should not appear between "[i]strings" and "done".
.else
# A state name must begin with an alpha character or an underscore.
:state_first State
* bad noeat
"\i" state
# Subsequent characters in a state name must be alpha-numeric or underscores.
:state State
* bad noeat
"\c" state
" \t" need_state_color recolor=-1
# A state must have a color.
:need_state_color Idle
* state_color recolor=-1
" \t" need_state_color
"#\n" bad noeat
# Highlight any remaining characters until we see whitespace, a comment, or a
# newline.
:state_color Color
* state_color
" \t" context_ws recolor=-1
"#\n" comment_or_bad noeat
# Following the state color, there might be one or more contexts. Loop over
# whitespace until we find something else.
:context_ws Idle
* comment_or_bad noeat
" \t" context_ws
"\i" context mark recolor=-1 buffer
# Here we recognize the possible contexts.
:context Idle
* context_unknown noeat strings
"comment" context_color
"string" context_color
done
"\c" context
# We encountered what looks like a context but is unrecognized as such.
:context_unknown Idle
.ifdef CHECKING
* context_bad recolormark noeat
.else
* context_ws noeat
.endif
# We encountered a valid context.
:context_color Keyword
* context_ws noeat
# We saw something that is not a valid context name with checking enabled.
# Continue to highlight it as Bad until we see whitespace or a comment.
:context_bad Bad
* context_bad
" \t#\n" context_ws noeat
.endif
##############
# Transition #
##############
# A state transition starts with a '*', an '&', or a string.
.ifdef STRINGS
# Transitions must start with a string between "[i]strings" and "done".
.else
# We saw either a '*' or an '&'. Now we need the next state.
:special_character Keyword
* need_next_state noeat
.endif
# We are in a string. Continue until we see the close quote or a newline.
# Highlight escaped characters within the string differently. They start with a
# '\'.
:string String string
* string
"\\" escape recolor=-1
"\"" need_next_state
.ifdef CHECKING
"\n" bad
.else
"\n" bad noeat
.endif
# Highlight an escaped character within a string.
:escape StringEscape string
* string
# Loop over whitespace until we see the first character of the next state.
:need_next_state Idle
* bad noeat
" \t" need_next_state
"\i" next_state recolor=-1
# Now we highlight the remainder of the next state.
:next_state State
* bad noeat
"\c" next_state
" \t" options_ws
"#\n" comment noeat
# Following the next state should be zero or more options. Loop over whitespace
# until we find an option, comment, or newline.
:options_ws Idle
* option_bad recolor=-1
" \t" options_ws
"\i" option mark recolor=-1 buffer
"#\n" comment noeat
# Here we recognize the possible options. The strings and istrings options
# cannot be used between "[i]strings" and "done". Since conditional directives
# cannot be used between "[i]strings" and "done" either, the list must be
# duplicated, once without and once with the strings and istrings options.
:option Idle
.ifdef STRINGS
* option_unknown recolormark noeat strings
"noeat" option_color
"recolor" recolor_color
"mark" option_color
"markend" option_color
"recolormark" option_color
"buffer" option_color
"save_c" option_color
"save_s" option_color
"hold" option_color
"call" call_color
"return" option_color
"reset" option_color
done
.else
* option_unknown recolormark noeat strings
"noeat" option_color
"recolor" recolor_color
"mark" option_color
"markend" option_color
"recolormark" option_color
"buffer" option_color
"save_c" option_color
"save_s" option_color
"strings" strings_color
"istrings" strings_color
"hold" option_color
"call" call_color
"return" option_color
"reset" option_color
done
.endif
"\c" option
# We encountered what looks like an option but is unrecognized as such.
:option_unknown Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
# We have encountered an option that does not take an argument. Highlight it
# and continue to look for more options.
:option_color Keyword
* options_ws noeat
.ifdef STRINGS
# The strings and istrings options cannot be used between "[i]strings" and
# "done".
.else
# The strings and istrings options are followed by a list of transitions.
# Rather than duplicate all of the states that highlight transitions, we call
# this entire file as a subroutine and use the STRINGS parameter to disable
# everything else and enable the done keyword. We return to the comment_or_bad
# state since we will return after seeing the done keyword, and nothing but a
# comment should follow the done keyword.
:strings_color Keyword
* comment_or_bad noeat call=jsf(STRINGS)
.endif
# Highlight the recolor option.
:recolor_color Keyword
* recolor_equal noeat
# The recolor option must be followed by an '='. Loop over whitespace until we
# find one.
:recolor_equal Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
" \t" recolor_equal
"=" recolor_minus mark
# The recolor option takes an integer argument, and that integer must be
# negative. Thus the '=' must be followed by a minus sign. Loop over
# whitespace until we find one.
:recolor_minus Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
" \t" recolor_minus
"-" recolor_amount_first mark recolor=-1
# The first digit of the argument to recolor must be non-zero.
:recolor_amount_first Number
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws recolormark noeat
"0" option_bad recolormark noeat
.endif
"1-9" recolor_amount
# Keep highlighting digits until we see something else.
:recolor_amount Number
* option_bad recolormark recolor=-1
"0-9" recolor_amount
" \t#\n" options_ws noeat
# Highlight the call option.
:call_color Keyword
* call_equal noeat
# The call option must be followed by an '='. Loop over whitespace until we
# find one.
:call_equal Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
" \t" call_equal
"=" call_file_or_dot mark
# The first part of the argument to the call option is the name of the file
# containing the subroutine or a '.', implying the current file. Loop over
# whitespace until we see one of those two things.
:call_file_or_dot Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
" \t" call_file_or_dot
"\i" call_file mark recolor=-1
"." call_dot mark
# Highlight the remainder of the file name. The file name can be followed by a
# '.', which must then be followed by the name of a subroutine, or by a list of
# parameters in parentheses. The '.', if present, cannot have whitespace on
# either side.
:call_file Subr
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
"\c" call_file
"." call_dot mark recolor=-1
" \t(" call_open_paren noeat
# We saw a '.'. The next character must start the name of a subroutine.
:call_dot Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
"(" call_dot_bad recolormark noeat
"\i" call_subr mark recolor=-1
# We have seen a dot followed by an open parenthesis. A dot must be followed by
# a subroutine name. Highlight the dot as Bad.
:call_dot_bad Bad
* call_open_paren noeat
# Highlight the remainder of the subroutine name. Following the subroutine name
# must be a list of parameters in parentheses, possibly preceded by whitespace.
:call_subr Subr
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
"\c" call_subr
" \t(" call_open_paren noeat
# Loop over whitespace until we find the open parenthesis.
:call_open_paren Idle
.ifdef CHECKING
* option_bad recolormark noeat
.else
* options_ws noeat
.endif
" \t" call_open_paren
"(" call_parameters_ws
# The list of parameters is delimited by whitespace. Loop over whitespace until
# we find either the beginning of a parameter or a close parenthesis. We should
# not see a comment or newline since the list should be terminated by a close
# parenthesis.
:call_parameters_ws Idle
* call_parameter_bad recolor=-1
" \t" call_parameters_ws
"-" call_parameter_undef
"\i" call_parameter recolor=-1
")" options_ws
"#\n" bad noeat
# We saw a "-". The next character should start the parameter being undefined.
:call_parameter_undef Parameter
* call_parameters_ws noeat
"\i" call_parameter recolor=-2
# Highlight the remainder of the parameter.
:call_parameter Parameter
* call_parameters_ws noeat
"\c" call_parameter
# We saw something that is not a valid parameter name. Continue to highlight it
# as Bad until we see whitespace.
:call_parameter_bad Bad
* call_parameter_bad
") \t#\n" call_parameters_ws noeat
# We saw something that is not a valid option name. Continue to highlight it as
# Bad until we see whitespace or a comment.
:option_bad Bad
* option_bad
" \t#\n" options_ws noeat
########
# Done #
########
.ifdef STRINGS
# The special word, "done", can only be used after a strings or istrings option.
# Recognize the done keyword.
:special_word Idle
* bad_line recolormark noeat strings
"done" done_color
done
"\c" special_word
# Highlight the done keyword and return to highlighting things normally, since
# the list of strings has been terminated.
:done_color Keyword
* comment_or_bad return noeat
.endif
##################
# Comment or Bad #
##################
# We have seen everything that should appear on the current line except an
# optional comment. Loop over whitespace until we find a comment or newline.
:comment_or_bad Idle
* bad noeat
" \t" comment_or_bad
"#\n" comment noeat
###########
# Comment #
###########
# Continue to highlight the comment until the end of the line.
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" idle
#######
# Bad #
#######
.ifdef CHECKING
# We have encountered incorrect syntax. Loop over whitespace until we see the
# first visible character. Highlight that character and the rest of the line as
# Bad.
:bad Bad
* bad_line
" \t\n" bad
.else
# When not performing strict checking, don't go searching for the next visible
# character to highlight as Bad. Simply highlight the rest of the line as Bad,
# even if it is invisible.
:bad Bad
* bad_line noeat
.endif
# Continue to highlight everything as Bad until the end of the line.
:bad_line Bad
* bad_line
"\n" idle

View file

@ -0,0 +1,6 @@
# See jsf.jsf
=Idle
:initial Idle
* initial noeat call=jsf(CHECKING)

View file

@ -0,0 +1,309 @@
# JSON highlighter per json.org
# Written by Rebecca Turner (@ReBecaOrg)
# Define colors
=Idle
=Comma
=PairSep
=Bracket +Brace
=Brace +Control +Operator
=Constant
=Number +Constant
=Boolean +Constant
=Null +Constant
=String +Constant
=Key +Attr +Type +String
=Escape
=StringEscape +Escape +String
=Bad
=ERROR +Bad
:json Idle
* end noeat call=.value()
" \t\n" json
:end Idle
* endBAD noeat
" \t\n" end
:endBAD Bad
* end
.subr value
:value Idle
* valueBAD noeat
"\"" end noeat call=.string()
"-0-9" end noeat call=.number()
"tfn" end noeat call=.bareword()
"{" end noeat call=.object()
"[" end noeat call=.array()
:valueBAD Bad
* value
:end Idle
* NULL noeat return
.end
.subr object
:object Brace
* objectBAD noeat
"{" maybeempty
:objectBAD ERROR
* end
:maybeempty Brace
* key noeat
" \t\n" maybeempty
"}" end recolor=-1
:key Idle
* keyBAD noeat
"\"" pairsep noeat call=.keystring()
" \t\n" key
:keyBAD Bad
* key
:pairsep PairSep
* pairsepBAD noeat
":" value
" \t\n" pairsep
:pairsepBAD Bad
* pairsep
:value Idle
* nextpair noeat call=.value()
" \t\n" value
:nextpair Comma
* nextpairBAD noeat
"}" end recolor=-1
"," key
" \t\n" nextpair
:nextpairBAD Bad
* nextpair
:end Brace
* NULL noeat return
.end
.subr array
:array Bracket
* arrayBAD noeat
"[" maybeempty
:arrayBAD ERROR
* end
:maybeempty Bracket
* value noeat
" \t\n" maybeempty
"]" end recolor=-1
:value Idle
* nextvalue noeat call=.value()
" \t\n" value
:nextvalue Comma
* nextvalueBAD noeat
"]" end recolor=-1
"," value
" \t\n" nextvalue
:nextvalueBAD Bad
* nextvalue
:end Bracket
* NULL noeat return
.end
.subr string
:string String string
* stringBAD noeat
"\"" body
:body String string
* body
"\"" end
"\\" escape recolor=-1
:stringBAD ERROR
* end
:escape StringEscape string
* escapeBAD recolor=-2 noeat
"\"/bfnrt\\" body
"u" unicode1
:escapeBAD Bad
* body
:unicode1 StringEscape string
* unicodeBAD recolor=-3 noeat
"0-9a-fA-F" unicode2
:unicode2 StringEscape string
* unicodeBAD recolor=-4 noeat
"0-9a-fA-F" unicode3
:unicode3 StringEscape string
* unicodeBAD recolor=-5 noeat
"0-9a-fA-F" unicode4
:unicode4 StringEscape string
* unicodeBAD recolor=-6 noeat
"0-9a-fA-F" body
:unicodeBAD Bad
* body
:end Idle
* NULL noeat return
.end
.subr keystring
:string Key
* stringBAD noeat
"\"" body
:body Key
* body
"\"" end
"\\" escape recolor=-1
:stringBAD ERROR
* end
:escape Escape
* escapeBAD recolor=-2 noeat
"\"/bfnrt\\" body
"u" unicode1
:escapeBAD Bad
* body
:unicode1 Escape
* unicodeBAD recolor=-3 noeat
"0-9a-fA-F" unicode2
:unicode2 Escape
* unicodeBAD recolor=-4 noeat
"0-9a-fA-F" unicode3
:unicode3 Escape
* unicodeBAD recolor=-5 noeat
"0-9a-fA-F" unicode4
:unicode4 Escape
* unicodeBAD recolor=-6 noeat
"0-9a-fA-F" body
:unicodeBAD Bad
* body
:end Idle
* NULL noeat return
.end
.subr bareword
:bareword Idle
* body noeat mark buffer
:body Bad
* end noeat markend strings
"true" boolean
"false" boolean
"null" null
done
"truefalsn" body
:boolean Boolean
* end noeat
:null Null
* end noeat
:end Idle
* NULL noeat return
.end
.subr number
:number Number
* numberBAD
"0-9" numberA noeat
"-" numberA
:numberBAD ERROR
* end
:numberA Number
"0" decimalpoint
"1-9" integer
:integer Number
* end noeat
"0-9" integer
"." decimalpart
"eE" exponentpart
:decimalpoint Number
* end noeat
"0-9" decimalpointBAD
"eE" exponentpart
"." decimalpart
:decimalpointBAD Bad
* end
:decimalpart Number
* decimalpartBAD
"0-9" decimalpartA
:decimalpartBAD Bad
* end
:decimalpartA Number
* end noeat
"0-9" decimalpartA
"eE" exponentpart
:exponentpart Number
* exponentpartBAD
"-+" exponentpartA
"0-9" exponentpartB
:exponentpartBAD Bad
* end
:exponentpartA Number
* exponentpartBAD
"0-9" exponentpartB
:exponentpartB Number
* end noeat
"0-9" exponentpartB
:end Idle
* NULL noeat return
.end

View file

@ -0,0 +1,26 @@
# JOE syntax highlight file for LISP
# Needs lots of work...
=Idle
=Comment
=String +Constant
=StringEscape +Escape
:idle Idle
* idle
";" comment recolor=-1
"\"" string recolor=-1
:comment Comment comment
* comment
"\n" idle
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
:string_escape StringEscape string
* string
"\n" string recolor=-2

View file

@ -0,0 +1,349 @@
# JOE syntax highlight file for LUA
=Idle
=Ident
=Bad
=Comment
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=Character +String +Constant
=Escape
=StringEscape +Escape
=CharacterEscape +StringEscape
=Keyword
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
:idle Idle
* idle
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"\i" ident buffer
"-" maybe_comment
"[" maybe_lua_string
:maybe_lua_string Idle
* idle noeat
"[" lua_string_0 recolor=-2
"=" maybe_lua_1
:maybe_lua_1 Idle
* idle noeat
"[" lua_string_1 recolor=-3
"=" maybe_lua_2
:maybe_lua_2 Idle
* idle noeat
"[" lua_string_2 recolor=-4
"=" maybe_lua_3
:maybe_lua_3 Idle
* idle noeat
"[" lua_string_3 recolor=-5
:lua_string_0 String string
* lua_string_0
"]" lua_string_0_maybe_done
:lua_string_0_maybe_done String string
* lua_string_0 noeat
"]" idle
:lua_string_1 String string
* lua_string_1
"]" lua_string_1_maybe_donea
:lua_string_1_maybe_donea String string
* lua_string_1 noeat
"=" lua_string_1_maybe_done
:lua_string_1_maybe_done String string
* lua_string_1 noeat
"]" idle
:lua_string_2 String string
* lua_string_2
"]" lua_string_2_maybe_donea
:lua_string_2_maybe_donea String string
* lua_string_2 noeat
"=" lua_string_2_maybe_doneb
:lua_string_2_maybe_doneb String string
* lua_string_2 noeat
"=" lua_string_2_maybe_done
:lua_string_2_maybe_done String string
* lua_string_2 noeat
"]" idle
:lua_string_3 String string
* lua_string_3
"]" lua_string_3_maybe_donea
:lua_string_3_maybe_donea String string
* lua_string_3 noeat
"=" lua_string_3_maybe_doneb
:lua_string_3_maybe_doneb String string
* lua_string_3 noeat
"=" lua_string_3_maybe_donec
:lua_string_3_maybe_donec String string
* lua_string_3 noeat
"=" lua_string_3_maybe_done
:lua_string_3_maybe_done String string
* lua_string_3 noeat
"]" idle
:maybe_comment Idle
* idle noeat
"-" maybe_long_comment recolor=-2
:maybe_long_comment Comment comment
* line_comment noeat
"[" maybe_long_comment_0
:maybe_long_comment_0 Comment comment
* line_comment noeat
"=" maybe_long_comment_1
"[" long_comment_0
:maybe_long_comment_1 Comment comment
* line_comment noeat
"=" maybe_long_comment_2
"[" long_comment_1
:maybe_long_comment_2 Comment comment
* line_comment noeat
"=" maybe_long_comment_3
"[" long_comment_2
:maybe_long_comment_3 Comment comment
* line_comment noeat
"[" long_comment_3
:long_comment_0 Comment comment
* long_comment_0
"BFHNTX" long_comment_0 noeat call=comment_todo.comment_todo()
"]" maybe_done_comment_0
:maybe_done_comment_0 Comment comment
* long_comment_0 noeat
"]" idle
:long_comment_1 Comment comment
* long_comment_1
"BFHNTX" long_comment_1 noeat call=comment_todo.comment_todo()
"]" maybe_done_comment_1a
:maybe_done_comment_1a Comment comment
* long_comment_1 noeat
"=" maybe_done_comment_1
:maybe_done_comment_1 Comment comment
* long_comment_1 noeat
"]" idle
:long_comment_2 Comment comment
* long_comment_2
"BFHNTX" long_comment_2 noeat call=comment_todo.comment_todo()
"]" maybe_done_comment_2a
:maybe_done_comment_2a Comment comment
* long_comment_2 noeat
"=" maybe_done_comment_2b
:maybe_done_comment_2b Comment comment
* long_comment_2 noeat
"=" maybe_done_comment_2
:maybe_done_comment_2 Comment comment
* long_comment_2 noeat
"]" idle
:long_comment_3 Comment comment
* long_comment_3
"]" maybe_done_comment_3a
:maybe_done_comment_3a Comment comment
* long_comment_3 noeat
"=" maybe_done_comment_3b
:maybe_done_comment_3b Comment comment
* long_comment_3 noeat
"=" maybe_done_comment_3c
:maybe_done_comment_3c Comment comment
* long_comment_3 noeat
"=" maybe_done_comment_3
:maybe_done_comment_3 Comment comment
* long_comment_2 noeat
"]" idle
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string
"\"" string noeat
"\n" reset
"0-9.\-+ #hjILtz$" string_control
:char Character string
* char
"\n" reset
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"x" char_hex1
"0-7" char_octal2
"\n" char recolor=-2
:char_hex1 CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape string
* char noeat
"0-9a-fA-F" char
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
:ident Ident
* idle noeat strings
"and" kw
"end" kw
"in" oper
"repeat" loop
"break" loop
"false" bool
"local" kw
"return" stmt
"do" loop
"for" loop
"nil" const
"then" cond
"else" cond
"function" kw
"not" oper
"true" bool
"elseif" cond
"if" cond
"or" oper
"until" loop
"while" loop
done
"\c" ident
:kw Keyword
* idle noeat
:oper Operator
* idle noeat
:stmt Statement
* idle noeat
:cond Conditional
* idle noeat
:loop Loop
* idle noeat
:bool Boolean
* idle noeat
:const Constant
* idle noeat

View file

@ -0,0 +1,122 @@
# m4
=Idle
=Ident
=Comment
=Constant
=Variable +Escape
=Brace
=Keyword
:start Idle
* start noeat call=.m4()
.subr m4
.ifdef quote
:idle Constant
.else
:idle Idle
.endif
* idle
"[" idle recolor=-1 call=.m4(quote -brace)
# "[" idle recolor=-1 call=.quote()
"a-zA-Z_" ident buffer mark
.ifdef quote
"]" idle return
.endif
.ifdef brace
")" endbrace recolor=-1
.endif
:quote Constant string
* quote
"]" idle
:endbrace Brace
* idle noeat return
.ifdef quote
:ident Constant string
.else
:ident Ident
.endif
* maybe_macro noeat strings
"builtin" maybe_kw
"changecom" maybe_kw
"changequote" maybe_kw
"changeword" maybe_kw
"debugfile" maybe_kw
"debugmode" maybe_kw
"decr" maybe_kw
"define" maybe_kw
"defn" maybe_kw
"divert" maybe_kw
"divnum" maybe_kw
"dnl" comment
"dumpdef" maybe_kw
"errprint" maybe_kw
"esyscmd" maybe_kw
"eval" maybe_kw
"file" maybe_kw
"format" maybe_kw
"ifdef" maybe_kw
"ifelse" maybe_kw
"include" maybe_kw
"incr" maybe_kw
"index" maybe_kw
"indir" maybe_kw
"len" maybe_kw
"line" maybe_kw
"m4exit" maybe_kw
"m4wrap" maybe_kw
"maketemp" maybe_kw
"patsubst" maybe_kw
"popdef" maybe_kw
"pushdef" maybe_kw
"regexp" maybe_kw
"shift" maybe_kw
"sinclude" maybe_kw
"substr" maybe_kw
"syscmd" maybe_kw
"sysval" maybe_kw
"traceoff" maybe_kw
"traceon" maybe_kw
"translit" maybe_kw
"undefine" maybe_kw
"undivert" maybe_kw
done
"a-zA-Z0-9_" ident
:maybe_macro Idle
* idle noeat
"(" macro recolormark noeat
:maybe_kw Idle
* idle noeat
"(" kw recolormark noeat
:kw Keyword
* idle noeat
"(" macro noeat
:comment Comment comment
* comment
"\n" idle
:macro Variable
* idle noeat
"(" brace recolor=-1
:brace Brace
* idle noeat call=.m4(brace -quote)
.end
.subr quote
:idle Constant string
* idle
"]" idle return
"[" idle call=.quote()
.end

View file

@ -0,0 +1,198 @@
# JOE syntax highlight file for typical UNIX mail files
# 2004-04-25 Tomas Szepe <szepe@pinerecords.com>
# Improved to handle quote characters commonly seen on Usenet, and
# highlighting of the more frequently edited mail and news headers, with
# some sanity checking of the same.
# 2004-06-26 Jeff Hurwit <darkmoon@verizon.net>
-
=Idle
=Head +Statement +Keyword
=Email +Escape +Head
=HdTo +Email
=HdFrom +Email
=HdSbj +Title +String +Constant +Head
=HdDate +Number +Constant +Head
=HdRRT +Email
=HdGrp +Email
=HdFuT +Email
=HdBad +Bad
=Quot1 +Comment
=Quot2 +DefinedIdent
=Sign +Preproc
# Start in headers. We know we're out at the first blank line.
:first Idle
* hbol noeat
"\n" newline
">|:~}#]" newline noeat
# Require header
# "\n" nohead
:nohead HdBad
* nohead
:hbol Idle
* hbad recolor=-1
"\n" newline
"A-Z" bufhdrs buffer
"-" newline noeat
:hbad HdBad
* hbad
"\n" hbol
:hlbad HdBad
* hbol
:bufhdrs Idle
* hbad recolor=-1
"\n" hlbad noeat recolor=-2
"-_a-zA-Z0-9" bufhdrs
":" headers hold
:headers Idle
* hbad recolor=-1
" \n" hnocolor noeat strings
"To" hsto recolor=-2
"Cc" hsto recolor=-2
"Bcc" hsto recolor=-2
"From" hsfrom recolor=-2
"Subject" hssbj recolor=-2
"Date" hsdate recolor=-2
"Return-Receipt-To" hsrrecp recolor=-2
"Newsgroups" hsgroups recolor=-2
"Followup-To" hsfolup recolor=-2
done
:hnocolor Idle
* hnocolor
"\n" cont_nocolor
:cont_nocolor Idle
* hbol noeat
" \t" hnocolor recolor=-1
:hsto Head
* hto
"\n" hbol
:hto HdTo
* hto
"\n" cont_to
:cont_to HdTo
* hbol noeat
" \t" hto recolor=-1
:hsfrom Head
* hfrom
"\n" hbol
:hfrom HdFrom
* hfrom
"\n" hbol
:hssbj Head
* hsbj
"\n" hbol
:hsbj HdSbj
* hsbj
"\n" cont_sbj
:cont_sbj HdSbj
* hbol noeat
" \t" hsbj recolor=-1
:hsdate Head
* hdate
"\n" hbol
:hdate HdDate
* hdate
"\n" hbol
:hsrrecp Head
* hrrecp
"\n" hbol
:hrrecp HdRRT
* hrrecp
"\n" hbol
:hsgroups Head
* hgroups
"\n" hbol
:hgroups HdGrp
* hgroups
"\n" hbol
:hsfolup Head
* hfolup
"\n" hbol
:hfolup HdFuT
* hfolup
"\n" hbol
# body of the message
:newline Idle
* knocolor
"\n" newline
">|:~}#]" q1 recolor=-1
"-" maybesign1 recolor=-1
:maybesign1 Quot1
* q1
" \t" q1
"\n" newline recolor=-1
">|:~}#]" q2 recolor=-1
"-" maybesign2 recolor=-1
:maybesign2 Quot2
* q2
"\t" q2
"\n" newline recolor=-1
" " maybesign3 recolor=-1
">|:~}#]" q1 recolor=-1
"-" knocolor recolor=-3
:maybesign3 Quot2
* q2
" \t" q2
"\n" sign recolor=-4
"->|:~}#]" q1 recolor=-1
:sign Sign
* sign
:q1 Quot1
* kq1
"\n" newline
" \t" q1
"->|:~}#]" q2 recolor=-1
:q2 Quot2
* kq2
"\n" newline
" \t" q2
"->|:~}#]" q1 recolor=-1
:knocolor Idle
* knocolor
"\n" newline
:kq1 Quot1
* kq1
"\n" newline
:kq2 Quot2
* kq2
"\n" newline

View file

@ -0,0 +1,8 @@
# JOE syntax file for Mason
=Idle
# Call HTML with mason flag. It will call perl.
:idle Idle
* idle noeat call=html.html(mason)

View file

@ -0,0 +1,97 @@
# joe Matlab syntax highlighting
# Created by Gustav Stenberg 2007-10-30
#
=Idle
=Ident
=Comment
=Keyword
=Number +Constant
=String +Constant
=Secondary +Ident
=Error +Bad
=Command +Statement +Keyword
:idle Idle
* idle
"%" comment recolor=-1
"\'" string mark recolor=-1
"a-zA-Z_." ident buffer
"!" command recolor=-1
"([{" parent buffer
"0-9" first_digit recolor=-1
:command Command
* command
"\n" idle
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" idle
:keyword Keyword
* idle noeat
:keywordc Keyword
* comment
"\n" idle
:parent Idle
* parent
")]}" idle
:string Error
* string
"\'" stringdone recolormark recolor=-1
"\n" idle
:stringdone String string
* idle recolor=-1
:first_digit Number
* idle noeat
"." float
"eE" epart
"0-9" first_digit
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:secondary Secondary
* idle noeat
"a-zA-Z_0-9. " secondary
"\n;:=!\"\'+-,*(){}[]&\\\|/~" idle recolor=-1
:ident Ident
* secondary noeat strings
"..." keywordc
"break" keyword
"case" keyword
"catch" keyword
"continue" keyword
"else" keyword
"elseif" keyword
"end" keyword
"for" keyword
"function" keyword
"global" keyword
"if" keyword
"otherwise" keyword
"persistent" keyword
"return" keyword
"switch" keyword
"try" keyword
"while" keyword
done
"a-zA-Z0-9_." ident

View file

@ -0,0 +1,135 @@
# JOE syntax highlight file for Markdown
# by Christian Nicolai (http://mycrobase.de)
# And yes, this *is* a joke :p
# bold parsing is not that perfect since this works: **bold__
=Idle
=Tag +DefinedFunction +DefinedIdent
=Escape
=Bad
=Bold +Keyword
=Headline +Title +Preproc +Statement
=Quote +Comment
=Code +String +Constant
=List +TagName +Tag
=LinkDesc +Title +String
=Link +Number +Constant
=Rule +Preproc
:line_start Idle
* idle noeat
"#" headline_prefix recolor=-1
">" quote recolor=-1
" " maybe_code1
"\t" code
"-*" maybe_list
:idle Idle
* idle
"\n" line_start
"<" tag recolor=-1
"\\" escape recolor=-1
"*_" maybe_bold1
"[" maybe_link_desc1
:headline_prefix Idle
* headline
"#" headline_prefix
:headline Headline
* headline
"\n" line_start
:quote Quote
* quote
"\n" line_start
:maybe_code1 Idle
* idle
" " maybe_code2
:maybe_code2 Idle
* idle
" " maybe_code3
:maybe_code3 Idle
* idle
" " code recolor=-4
:code Code
* code
"\n" line_start
:maybe_list Idle
* idle
" " list
"-*" maybe_rule1
:list List
* list
"\n" line_start
:maybe_rule1 Idle
* idle
"-*" rule recolor=-3
:rule Rule
* rule
"\n" line_start
:tag Tag
* idle
"a-z0-9 /" tag
">" idle
# do escaping of *_ and so on
:escape Escape
* idle
:maybe_bold1 Idle
* idle noeat
"*_" bold recolor=-2
:bold Bold
* bold
"\n" line_start # end if we reach newline during bold
"*_" maybe_end_bold
:maybe_end_bold Bold
* bold
"*_" end_bold
:end_bold Bold
* idle noeat
:maybe_link_desc1 Idle
* maybe_link_desc mark
:maybe_link_desc Idle
* maybe_link_desc
"]" maybe_end_link_desc markend
:maybe_end_link_desc Idle
* idle
"(" link_inline1 recolormark
"[" link_ref1 recolormark
:link_inline1 LinkDesc
* link_inline noeat
:link_inline Link
* link_inline
")" link_end noeat
:link_ref1 LinkDesc
* link_ref noeat
:link_ref Link
* link_ref
"]" link_end noeat
:link_end Idle
* idle

View file

@ -0,0 +1,406 @@
# JOE syntax highlight file for OCaml
=Idle
=Bad
=Comment
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=Character +String
=CharacterEscape +StringEscape
=Boolean +Constant
=Keyword
=Type
=Operator +Keyword
=Control
=Brace
=LowId +Ident
=CapId +DefinedIdent
=Builtin +DefinedFunction +DefinedIdent
=Structure +Keyword
=StorageClass +Type +Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
# Bugs:
# = in some contexts is a control, not an operator (let, etc)
# "type" keyword introduces a type = type
:expr Idle
* expr
"#.,)];" control recolor=-1
"!?" prefixop recolor=-1
"=<>@^&+*/$%" infixop recolor=-1
"\-" minus recolor=-1
"~" tilde recolor=-1
"[" brace recolor=-1
"|" pipe recolor=-1
":" colon recolor=-1
"(" bracket recolor=-1
"0" zero recolor=-1
"1-9" decimal recolor=-1
"\"" string recolor=-1
"\'" char recolor=-1
"a-z_" lowid buffer recolor=-1
"A-Z`" capid buffer recolor=-1
:bad Bad
* expr
:control Control
* expr noeat
:prefixop Operator
* operator noeat
:infixop Operator
* operator noeat
:operator Operator
* expr noeat
"!?~=<>@^|&+*/$%.:\-" operator
:minus Operator
* operator noeat
"0" zero recolor=-2
"1-9" decimal recolor=-2
:tilde Operator
* prefixop noeat
"a-z" opparam noeat
:opparam LowId
* expr noeat
"a-zA-Z0-9_'" opparam
":" control
:brace Control
* expr noeat
"|" expr
:pipe Operator
* infixop noeat
"]" pipeclose recolor=-2
:pipeclose Control
* expr noeat
:colon Operator
* type1 noeat
"=" assign recolor=-2
:assign Operator
* expr noeat
:bracket Control
* expr noeat
"*" comment recolor=-2
:zero Number
* expr noeat
"0-9_" decimal
"b" binaryl buffer
"B" binaryh buffer
"o" octall buffer
"O" octalh buffer
"x" hexl buffer
"X" hexh buffer
"e" epartl buffer
"E" eparth buffer
"." float
:decimal Number
* expr noeat
"0-9_" decimal
"." float
"e" epartl buffer
"E" eparth buffer
:binaryl Number
* lowid noeat recolor=-2
"01" binary
:binaryh Number
* capid noeat recolor=-2
"01" binary
:binary Number
* expr noeat
"01_" binary
:octall Number
* lowid noeat recolor=-2
"0-7" octal
:octalh Number
* capid noeat recolor=-2
"0-7" octal
:octal Number
* expr noeat
"0-7_" octal
:hexl Number
* lowid noeat recolor=-2
"0-9a-fA-F" hex
:hexh Number
* capid noeat recolor=-2
"0-9a-fA-F" hex
:hex Number
* expr noeat
"0-9a-fA-F_" hex
:float Number
* expr noeat
"0-9_" float
"e" epartl buffer
"E" eparth buffer
:epartl Number
* lowid noeat recolor=-2
"0-9" enum
"+\-" enum1
:eparth Number
* capid noeat recolor=-2
"0-9" enum
"+\-" enum1
:enum1 Number
* bad noeat
"0-9_" enum
:enum Number
* expr noeat
"0-9_" enum
:string String string
* string
"\"" expr
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\"" string noeat
"diouxXeEfFgGaAcspn%SC" string
:char Character string
* charend
"\\" char_escape recolor=-1
:charend Character string
* bad noeat
"\'" expr
:char_escape CharacterEscape string
* charend
"x" char_hex1
"0-7" char_octal2
:char_hex1 CharacterEscape string
* bad noeat
"0-9a-fA-F" char_hex2
:char_hex2 CharacterEscape string
* charend noeat
"0-9a-fA-F" charend
:char_octal2 CharacterEscape string
* charend noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* charend noeat
"0-7" charend
:lowid LowId
* expr noeat strings
"_" kw
"and" kw
"as" kw
"assert" kw
"begin" kw
"class" kw
"constraint" kw
"do" kw
"done" kw
"downto" kw
"else" kw
"end" kw
"exception" kw
"external" kw
"false" bool
"for" loop
"fun" kw
"function" struct
"functor" struct
"if" cond
"in" kw
"include" kw
"inherit" kw
"initializer" kw
"lazy" storage
"let" kw
"match" kw
"method" struct
"module" struct
"mutable" storage
"object" kw
"of" kw
"open" kw
"private" storage
"raise" kw # technically not, but ...
"rec" kw
"sig" kw
"struct" kw
"then" cond
"to" kw
"true" bool
"try" kw
"type" kw
"val" kw
"virtual" storage
"when" loop
"while" loop
"with" kw
"asr" operatorkw
"land" operatorkw
"lor" operatorkw
"lsl" operatorkw
"lsr" operatorkw
"lxor" operatorkw
"mod" operatorkw
"new" operatorkw
"or" operatorkw
done
"a-zA-Z0-9_'" lowid
:kw Keyword
* expr noeat
:operatorkw Operator
* expr noeat
:bool Boolean
* expr noeat
:loop Loop
* expr noeat
:struct Structure
* expr noeat
:storage StorageClass
* expr noeat
:cond Conditional
* expr noeat
:capid CapId
* expr noeat strings
"Arg" stdlib
"Array" stdlib
"ArrayLabels" stdlib
"Buffer" stdlib
"Callback" stdlib
"Char" stdlib
"Complex" stdlib
"Digest" stdlib
"Filename" stdlib
"Format" stdlib
"Gc" stdlib
"Genlex" stdlib
"Hashtbl" stdlib
"Int32" stdlib
"Int64" stdlib
"Lazy" stdlib
"Lexing" stdlib
"List" stdlib
"ListLabels" stdlib
"Map" stdlib
"Marshal" stdlib
"MoreLabels" stdlib
"Nativeint" stdlib
"Oo" stdlib
"Parsing" stdlib
"Printexc" stdlib
"Printf" stdlib
"Queue" stdlib
"Random" stdlib
"Scanf" stdlib
"Set" stdlib
"Sort" stdlib
"Stack" stdlib
"StdLabels" stdlib
"Stream" stdlib
"String" stdlib
"StringLabels" stdlib
"Sys" stdlib
"Weak" stdlib
done
"a-zA-Z0-9_'" capid
:stdlib Builtin
* expr noeat
:type1 Type
* expr noeat
"a-z *>'\t\-" type1
"(" type2
:type2 Type
* expr noeat
"a-z *>'\t\-" type2
"(" type3
")" type1
:type3 Type
* expr noeat
"a-z *>'\t\-" type3
"(" type4
")" type2
:type4 Type
* expr noeat
"a-z *>'\t\-" type4
"(" expr # too deep nesting
")" type2
:comment Comment comment
* expr call=.comment()
.subr comment
:comment_body Comment comment
* comment_body
"(" nest_comment
"*" end_comment
"BFHNTX" comment_body noeat call=comment_todo.comment_todo()
:end_comment Comment comment
* comment_body noeat
")" end_comment return
:nest_comment Comment comment
* comment_body
"*" comment_body call=.comment()
.end

View file

@ -0,0 +1,241 @@
# PASCAL highlighter for JOE
# With support for Delphi and FPC by Michael Van Canneyt
=Idle
=Comment
=Constant
=String +Constant
=Number +Constant
=Type
=Keyword
=Statement +Keyword
=Operator +Keyword
=Loop +Statement
=Conditional +Statement
=DefinedFunction +DefinedIdent
=Builtin +DefinedFunction
=Structure +Type
=Bad
:idle Idle
* idle
"\i" ident buffer
"(" maybe_comment
"/" maybe_linecomment
"{" comment recolor=-1
"'" string recolor=-1
"$" maybe_hex_number
"%" maybe_bin_number
"&" maybe_oct_number
"0-9" number recolor=-1
# Comments
:maybe_comment Idle
* idle noeat
"*" comment recolor=-2
:maybe_linecomment Idle
* idle noeat
"/" line_comment recolor=-2
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" reset
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
"}" idle
:maybe_end_comment Comment comment
* comment noeat
")" idle
# String constant
:string String string
* string
"\n" idle
"'" maybe_end_string
:maybe_end_string String string
* idle recolor=-1 noeat
"'" string
# Numeric constant
:maybe_hex_number Idle
* idle noeat
"0-9A-Fa-f" hex_number recolor=-2
:maybe_bin_number Idle
* idle noeat
"01" bin_number recolor=-2
:maybe_oct_number Idle
* idle noeat
"0-7" oct_number recolor=-2
:bad Bad
* idle noeat
:hex_number Number
* idle noeat
"0-9" hex_number
"a-fA-F" hex_number
:bin_number Number
* idle noeat
"01" bin_number
"2-9" bad recolor=-1
:oct_number Number
* idle noeat
"0-7" oct_number
"89" bad recolor=-1
:number Number
* idle noeat
"0-9" number
"eE" epart
"." dot
:dot Number
* idle noeat
"0-9" float
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
# Keywords
:ident Idle
* idle noeat istrings
"and" operator
"array" type
"begin" kw
"case" cond
"const" kw
"div" operator
"do" kw
"downto" kw
"else" cond
"end" kw
"file" kw
"for" loop
"function" kw
"goto" loop
"if" cond
"in" kw
"label" kw
"mod" operator
"nil" word_constant
"not" operator
"of" kw
"or" operator
"packed" kw
"procedure" kw
"program" kw
"record" kw
"repeat" loop
"set" kw
"then" kw
"type" kw
"until" loop
"var" kw
"while" loop
"with" kw
# Delphi keywords
"to" kw
"try" kw
"finally" kw
"raise" kw
"absolute" kw
"cdecl" kw
"stdcall" kw
"register" kw
"interface" struct
"library" kw
"constructor" kw
"destructor" kw
"dispinterface" kw
"inherited" kw
"public" kw
"private" kw
"published" kw
"protected" kw
"initialization" kw
"finalization" kw
"class" struct
"object" kw
"resourcestring" kw
"property" kw
"threadvar" kw
"integer" type
"boolean" type
"real" type
"char" type
"string" type
"text" type
"abs" function
"atan" function
"arctan" function
"concat" function
"cos" function
"eof" function
"eoln" function
"exp" function
"insert" function
"length" function
"ln" function
"log" function
"odd" function
"ord" function
"page" function
"pred" function
"round" function
"sin" function
"sqr" function
"sqrt" function
"succ" function
"trun" function
done
"\c" ident
:kw Keyword
* idle noeat
:type Type
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:struct Structure
* idle noeat
:operator Operator
* idle noeat
:word_constant Constant
* idle noeat
:function Builtin
* idle noeat

View file

@ -0,0 +1,487 @@
# JOE syntax highlight file for Perl
# Define colors
=Idle
=Ident
=Comment
=Pod +Preproc
=Variable +DefinedIdent # TODO: Make this work.
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=StringVariable +StringEscape
=Regex +String
=RegexEscape +StringEscape
=Type
=Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
=Structure +Statement
=Bad
:begin Idle
* begin noeat call=.perl()
#
# Perl as a subroutine for Mason
#
.subr perl
# Detect pod
:idle Idle
* idle1 noeat
.ifdef mason_line
"\n" idle return
.else
"\n" idle
.endif
"=" pod_start
# allow keywords
:idle1 Idle
* idle1
"#" line_comment_i recolor=-1
"\n" idle noeat
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"`" backtick recolor=-1
"<" maybe_inc
"$" not_string buffer recolor=-1
.ifdef mason_block
"&%" perl_maybe_done buffer
"-@\i" ident buffer recolor=-1
.else
"/" regex recolor=-1
"-\i@%&" ident buffer recolor=-1
.endif
:perl_maybe_done Idle
* ident noeat
">" idle1 recolor=-2 return
# prevent keywords
:rest Idle
* rest
"({;~" idle1
"#" line_comment recolor=-1
"\n" idle noeat
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"`" backtick recolor=-1
"$" not_string buffer recolor=-1
"<" maybe_inc
.ifdef mason_block
"&%" perl_maybe_done buffer recolor=-1
"\i@" maybe_string buffer
.else
"\i@%&" maybe_string buffer
.endif
:pod_start Idle
* pod_start
"\n" pod_block
:pod_block Pod
* pod_block
"=" pod_ident buffer
:pod_ident Pod
* pod_block noeat strings
"=cut" rest
done
"\c" pod_ident
:maybe_inc Idle
* rest noeat
.ifdef mason_block
"/" perl_maybe_done_2
.endif
"<" maybe_inc1
:perl_maybe_done_2 Idle
* perl_idle noeat
"a-z" perl_maybe_done_2
">" idle
:maybe_inc1 Idle
* rest noeat
" " maybe_inc1
"'\"" quoted_inc_start save_c recolor=-1
"\i" inc buffer noeat
:quoted_inc_start Variable
* quoted_inc buffer
:quoted_inc Variable
* quoted_inc
& skipline save_s
:inc Variable
* skipline save_s noeat
"\c" inc
# Should be treated as a normal line here...
:skipline Idle
* skipline
"\n" next_line
:todelim String string
* todelim
"\n" next_line strings
"&" founddelim
done
# eat \n so it's not in string.
:next_line String string
* todelim buffer
"\n" next_line
:founddelim Variable
* idle noeat
:regex Regex
* regex
"\\" regex_quote recolor=-1
"/" rest
:regex_quote RegexEscape
* regex
:not_string Idle
* rest noeat
"\i" ident
"\"'`#" rest
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" rest
:line_comment_i Comment comment
* line_comment_i
"BFHNTX" line_comment_i noeat call=comment_todo.comment_todo()
"\n" idle noeat
:end_of_file_comment Comment comment
"BFHNTX" end_of_file_comment noeat call=comment_todo.comment_todo()
* end_of_file_comment
:first_digit Number
* rest noeat
"x" hex
"b" binary
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* rest noeat
"0-9" bad_number
:octal Number
* rest noeat
"0-7_" octal
"89" bad_number recolor=-1
:binary Number
* rest noeat
"01_" binary
"2-9" bad_number recolor=-1
:hex Number
* rest noeat
"0-9A-Fa-f_" hex
:decimal Number
* rest noeat
"0-9_" decimal
"eE" epart
"." float
:maybe_float Number
* rest recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* rest noeat
"eE" epart
"0-9_" float
:epart Number
* rest noeat
"0-9+\-" enum
:enum Number
* rest noeat
"0-9_" enum
:string String string
* string
"\"" rest
"\\" string_escape recolor=-1
"$@" string_subst recolor=-1
:string_subst StringVariable string
* string noeat recolor=-1
"\c" string_subst
:string_escape StringEscape string
* string
"x" string_hex1
"c" string_ctrl
"N" string_named
"0-7" string_octal2
"\n" string recolor=-2
:string_named StringEscape string
* string
"{" string_named_rest
:string_named_rest StringEscape string
* string_named_rest
"}" string
:string_ctrl StringEscape string
* string
:string_hex1 StringEscape string
* string noeat
"{" string_unicode
"0-9a-fA-F" string_hex2
:string_unicode StringEscape string
* string_unicode
"}" string
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:char String string
* char
"\n" idle noeat
"'" rest
"\\" char_escape recolor=-1
:char_escape StringEscape string
* char recolor=-2
"\\'" char
:backtick String string
* backtick
"`" rest
"\\" backtick_escape recolor=-1
"$@" backtick_subst recolor=-1
:backtick_subst StringVariable string
* backtick noeat recolor=-1
"\c" backtick_subst
:backtick_escape StringEscape string
* backtick
"x" backtick_hex1
"c" backtick_ctrl
"N" backtick_named
"0-7" backtick_octal2
"\n" backtick recolor=-2
:backtick_named StringEscape string
* backtick
"{" backtick_named_rest
:backtick_named_rest StringEscape string
* backtick_named_rest
"}" backtick
:backtick_ctrl StringEscape string
* backtick
:backtick_hex1 StringEscape string
* backtick noeat
"{" backtick_unicode
"0-9a-fA-F" backtick_hex2
:backtick_unicode StringEscape string
* backtick_unicode
"}" backtick
:backtick_hex2 StringEscape string
* backtick noeat
"0-9a-fA-F" backtick
:backtick_octal2 StringEscape string
* backtick noeat
"0-7" backtick_octal3
:backtick_octal3 StringEscape string
* backtick noeat
"0-7" backtick
# TODO: Tease out the variable logic from this so that we can highlight
# variables separate from other identifiers.
:ident Ident
* rest noeat strings
"BEGIN" kw
"END" kw
"if" cond
"unless" cond
"while" loop
"until" loop
"foreach" loop
"sub" struct
"my" kw
"do" loop
"if" cond
"else" cond
"elsif" cond
"for" loop
"continue" loop
"last" loop
"print" stmt
"reset" kw
"die" stmt
"goto" stmt
"require" stmt
"use" kw
"eval" kw
"redo" kw
"next" loop
"warn" stmt
"return" stmt
"printf" stmt
"close" stmt
"package" kw
"m" match
"qr" match
"qq" match
"qx" match
"qw" match
"q" match
"s" subst
"tr" subst
"y" subst
"__END__" end_of_file_comment
"__DATA__" end_of_file_comment
done
"\c" ident
:maybe_string Idle
* rest noeat strings
"qr" match
"qq" match
"qx" match
"qw" match
"q" match
done
"\c" maybe_string
:type Type
* rest noeat
:kw Keyword
* rest noeat
:cond Conditional
* rest noeat
:loop Loop
* rest noeat
:struct Structure
* rest noeat
:stmt Statement
* rest noeat
:match Idle
* inmatch save_c recolor=-1
" " match
:inmatch Regex
* inmatch
% inmatch call=.inmatch()
& rest
"\\" inmatch_quote recolor=-1
:inmatch_quote RegexEscape
* inmatch
:subst Idle
* insubst save_c recolor=-1
"<([{`" delim_insubst save_c recolor=-1
" " subst
:insubst Regex
* insubst
& inrepl
"\\" insubst_quote recolor=-1
:insubst_quote RegexEscape
* insubst
:inrepl Regex
* inrepl
& rest
"\\" inrepl_quote
:inrepl_quote RegexEscape
* inrepl
:delim_insubst Regex
* delim_insubst
& delim_repl
"\\" delim_quote
:delim_quote RegexEscape
* delim_insubst
:delim_repl Regex
* repl save_c recolor=-1
" " delim_repl
:repl Regex
* repl
& rest
"\\" repl_quote
:repl_quote RegexEscape
* repl
.end
.subr inmatch
:inmatch Regex
* inmatch
% inmatch call=.inmatch()
& inmatch return
"\\" inmatch_quote recolor=-1
:inmatch_quote RegexEscape
* inmatch
.end

View file

@ -0,0 +1,339 @@
# JOE syntax highlight file for PHP
# modified by Eric Lin
# TODO:
# * heredoc support (as good as possible)
# * highlight function and class names?
# Define colors
=Idle
=Comment
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=Character +Constant
=CharacterEscape +Escape
=Boolean +Constant
=Escape
=Keyword
=Variable +DefinedIdent
=Builtin +DefinedFunc
=Operator +Keyword
=Statement +Keyword
=Conditional +Statement
=Loop +Statement
=Structure +Statement
=Label +DefinedIdent
=StorageClass +Type +Keyword
# Call HTML highlighter. It will call the PHP highlighter subroutine in this file.
:begin Idle
* call_failed noeat call=html.html(php)
:call_failed Variable
* call_failed
# PHP highlighter.
.subr php
:idle Idle
* idle
"<" idle_done
"?" idle_qmark
"%" idle_hash
"#" sh_comment recolor=-1
"/" slash
"0-9" first_digit recolor=-1
"'" string_sq recolor=-1
"\"" string_dq recolor=-1
"\`" string_bq recolor=-1
"\i" ident buffer
"$" php_var recolor=-1
"-" maybe_method
"{}" brace recolor=-1
:idle_done Idle
* idle noeat
"/" idle noeat recolor=-2 return
"<" idle_here
:idle_here Idle
* idle noeat
"<" here_doc
:here_doc Idle
* idle noeat
" " here_doc
"\i" here_name buffer
:here_name Idle
* inhere_doc save_s
"\c" here_name
:inhere_doc Constant
* inhere_not_eol
"\n" inhere_doc
"\i" inhere_name buffer
:inhere_not_eol Constant
* inhere_not_eol
"\n" inhere_doc
:inhere_name Constant
* inhere_doc
";" inhere_doc strings
"&" idle
done
"\c" inhere_name
:brace Builtin
* idle noeat
:php_var Variable
* idle noeat
"\c" php_var
:var_indqstring Variable
* string_dq recolor=-1
"\i" var_indqstringr
"\"" string_dq noeat
"\\" string_dq_esc recolor=-1
:var_indqstringr Variable
* string_dq recolor=-1
"\c" var_indqstringr
"\"" string_dq noeat
"\\" string_dq_esc recolor=-1
:var_inbqstring Variable
* string_bq recolor=-1
"\i" var_inbqstringr
"\`" string_bq noeat
"\\" string_bq_esc recolor=-1
:var_inbqstringr Variable
* string_bq recolor=-1
"\c" var_inbqstringr
"\`" string_bq noeat
"\\" string_bq_esc recolor=-1
:maybe_method Builtin
* idle recolor=-1
"?" idle_qmark
"%" idle_hash
"#" sh_comment recolor=-1
"/" slash
"0-9" first_digit recolor=-1
"'" string_sq recolor=-1
"\"" string_dq recolor=-1
"\i" ident buffer
"$" php_var recolor=-1
"{}" brace recolor=-1
">" method recolor=-2
:method Builtin
* idle recolor=-1
"\i\c" method recolor=-1
:idle_qmark Idle
* idle noeat
">" idle recolor=-2 return
:idle_hash Idle
* idle noeat
">" idle recolor=-2 return
:sh_comment Comment comment
* sh_comment
"BFHNTX" sh_comment noeat call=comment_todo.comment_todo()
"\n" idle
:slash Idle
* idle noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
:comment Comment comment
* comment
"*" maybe_end_comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
:maybe_end_comment Comment comment
* comment
"/" idle
"*" maybe_end_comment
:line_comment Comment comment
* line_comment
"\n" idle
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
:string_sq Character string
* string_sq
"\'" idle
"\\" string_sq_esc recolor=-1
:string_sq_esc CharacterEscape string
* string_sq
"\n" string_sq recolor=-2
:string_dq String string
* string_dq
"$" var_indqstring recolor=-1
"\"" idle
"\\" string_dq_esc recolor=-1
:string_dq_esc StringEscape string
* string_dq
"\n" string_dq recolor=-2
:string_bq String string
* string_bq
"$" var_inbqstring recolor=-1
"\`" idle
"\\" string_bq_esc recolor=-1
:string_bq_esc StringEscape string
* string_bq
"\n" string_bq recolor=-2
:first_digit Number
* idle noeat
"xX" hex
"." float
"0" octal
"1-9" first_number
:octal Number
* idle noeat
"0-7" octal
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:first_number Number
* idle noeat
"0-9" first_number
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:ident Idle
* idle noeat strings
"addslashes" builtin
"array" builtin
"array_keys" builtin
"count" builtin
"date" builtin
"chr" builtin
"empty" builtin
"end" builtin
"header" builtin
"highlight_file" builtin
"htmlspecialchars" builtin
"isset" builtin
"shuffle" builtin
"strip_tags" builtin
"strlen" builtin
"strpos" builtin
"strrpos" builtin
"substr" builtin
"trim" builtin
"TRUE" bool
"FALSE" bool
"true" bool
"false" bool
"and" oper
"as" oper
"break" loop
"case" label
"class" struct
"continue" loop
"declare" struct
"default" kw
"die" kw
"do" loop
"echo" stmt
"else" cond
"elseif" cond
"eval" kw
"exception" kw
"exit" kw
"extends" struct
"for" loop
"foreach" loop
"function" struct
"global" kw
"if" cond
"include" stmt
"include_once" stmt
"list" kw
"new" kw
"or" oper
"print" stmt
"private" storage
"public" storage
"require" stmt
"require_once" stmt
"return" stmt
"static" storage
"switch" cond
"unset" stmt
"while" loop
done
"\c" ident
:kw Keyword
* idle noeat
:builtin Builtin
* idle noeat
:bool Boolean
* idle noeat
:var Variable
* mark noeat
:oper Operator
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:stmt Statement
* idle noeat
:label Label
* idle noeat
:struct Structure
* idle noeat
:storage StorageClass
* idle noeat
.end

View file

@ -0,0 +1,329 @@
# PowerShell syntax highlighting for Joe's Own Editor
# Oskar Liljeblad <oskar@osk.mine.nu>, 2014-02-11
#
# PowerShell is the poor man's[1] replacement for a real shell such as Bash.
# [1] Someone who has to use Windows for whatever reason.
#
# Reference: http://www.microsoft.com/en-us/download/details.aspx?id=36389
# Status:
# 1 100%
# 2.1 100%
# 2.2.1 100% except signature support
# 2.2.2 100%
# 2.2.3 100% except requires support
# 2.2.4 100%
# 2.3.1 100%
# 2.3.2 100% except automatic variables
# 2.3.3 100% no coloring
# 2.3.4 100% no coloring
# 2.3.5 100% no coloring
# 2.3.6 100%
=Idle
=Ident
=Comment
=Constant
=Number +Constant
=Boolean +Constant
=String +Constant
=StringEscape +Escape
=StringVariable +StringEscape
=Keyword
=Type
=Operator +Keyword
=Statement +Keyword
=Structure +Statement
=Conditional +Statement
=Loop +Statement
=Variable +DefinedIdent
=VariableEscape +Escape
=ParamKey +Attr +Operator
:idle Idle
* idle
"#" comment recolor=-1
"$" var recolor=-1 mark
"@" var_array recolor=-1
"<" idle1
"[" typespec
"\"" string_dq recolor=-1
"'" string_sq recolor=-1
"@" idle2
"a-zA-Z_" ident buffer
"-" param recolor=-1
:idle1 Idle
* idle noeat
"#" delim_comment recolor=-2
:idle2 Idle
* idle noeat
"\"" herestr_dq recolor=-2
"'" herestr_sq recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\r\n" idle
:var_array Variable
* idle noeat
"$?^" idle mark
"a-zA-Z_" var_name
:var Variable
* idle noeat
"{" var_brack
"$?^" idle
"a-zA-Z_" var_name buffer
:var_name Variable
* idle noeat recolor=-1 istrings
"true" bool recolormark markend
"false" bool recolormark markend
"null" kw recolormark markend
done
"a-zA-Z0-9_:?" var_name
:bool Boolean
* idle
:var_brack Variable
* var_brack
"`" var_escape recolor=-1
"}" idle
:var_escape VariableEscape
* var_brack
:delim_comment Comment comment
* delim_comment
"BFHNTX" delim_comment noeat call=comment_todo.comment_todo()
"#" delim_comment1
:delim_comment1 Comment comment
* delim_comment noeat
">" idle
:string_dq String string
* string_dq
"\"\n" idle
"$" string_dq_subst recolor=-1
"`" string_dq_esc recolor=-1
:string_dq_subst StringVariable string
* string_dq noeat recolor=-2
"a-zA-Z_" string_dq_subst_name
"{" string_dq_subst_brack
"(" string_dq_subst_parens
"`" string_dq_subst_escape recolor=-1
:string_dq_subst_name StringVariable string
* string_dq recolor=-1 noeat
"a-zA-Z0-9_:" string_dq_subst_name
"`" string_dq_subst_escape recolor=-1
:string_dq_subst_escape VariableEscape string
* string_dq_subst_name
:string_dq_subst_brack Variable string
* string_dq_subst_brack
"}" string_dq
:string_dq_subst_parens Variable string
* string_dq_sustr_parens
")" string_dq
:string_sq String string
* string_sq
"\'\n" idle
:string_dq_esc StringEscape string
* string_dq
:string_sq_esc StringEscape string
* string_sq
:herestr_dq String string
* herestr_dq
"\"" herestr_dq1
"$" herestr_dq_subst recolor=-1
:herestr_dq1 String string
* herestr_dq noeat
"@" idle
:herestr_dq_subst Variable string
* herestr_dq noeat recolor=-2
"a-zA-Z_" herestr_dq_subst_name
"(" herestr_dq_subst_parens
"`" herestr_dq_subst_escape recolor=-1
:herestr_dq_subst_name Variable string
* herestr_dq recolor=-1 noeat
"a-zA-Z0-9_:" herestr_dq_subst_name
"`" herestr_dq_subst_escape recolor=-1
:herestr_dq_subst_escape VariableEscape string
* herestr_dq_subst_name
:herestr_dq_subst_parens Variable string
* herestr_dq_subst_parens
")" herestr_dq
:herestr_sq String string
* herestr_sq
"\'" herestr_sq1
:herestr_sq1 String string
* herestr_sq noeat
"@" idle
:typespec_start Idle
* idle noeat
"\s" typespec_start
"\i.:" typespec noeat
:typespec Type
* idle noeat
"\i.:\s" typespec
"[" typespec_brack
:typespec_brack Type
* typespec noeat
"\s" typespec_brack
"]" typespec
:param ParamKey
* after_param noeat istrings
"-and" oper
"-band" oper
"-bnot" oper
"-bor" oper
"-bxor" oper
"-not" oper
"-or" oper
"-xor" oper
"-f" oper
"-as" oper
"-ccontains" oper
"-ceq" oper
"-cge" oper
"-cgt" oper
"-cle" oper
"-clike" oper
"-clt" oper
"-cmatch" oper
"-cne" oper
"-cnotcontains" oper
"-cnotlike" oper
"-cnotmatch" oper
"-contains" oper
"-creplace" oper
"-csplit" oper
"-eq" oper
"-ge" oper
"-gt" oper
"-icontains" oper
"-ieq" oper
"-ige" oper
"-igt" oper
"-ile" oper
"-ilike" oper
"-ilt" oper
"-imatch" oper
"-in" oper
"-ine" oper
"-inotcontains" oper
"-inotlike" oper
"-inotmatch" oper
"-ireplace" oper
"-is" oper
"-isnot" oper
"-isplit" oper
"-join" oper
"-le" oper
"-like" oper
"-lt" oper
"-match" oper
"-ne" oper
"-notcontains" oper
"-notin" oper
"-notlike" oper
"-notmatch" oper
"-replace" oper
"-shl" oper
"-shr" oper
"-split" oper
done
"a-zA-Z_" param
:after_param Ident
* herestr_noq noeat
" \t" after_param
# Unquoted strings (after -parameter key)
:herestr_noq String string
* idle noeat
" \t\r\n" idle recolor=-1
"\i" herestr_noq
# After an operator, we do not assume what follows is an unquoted string.
:oper Operator
* idle noeat
:ident Ident
* idle noeat istrings
"begin" kw
"break" loop
"catch" kw
"class" struct
"continue" loop
"data" kw
"define" kw
"do" loop
"dynamicparam" struct
"else" cond
"elseif" cond
"end" kw
"exit" stmt
"filter" kw
"finally" kw
"for" loop
"foreach" loop
"from" kw
"function" struct
"if" cond
"in" kw
"inlinescript" kw
"parallel" kw
"param" struct
"process" kw
"return" stmt
"switch" cond
"throw" kw
"trap" kw
"try" kw
"until" loop
"using" kw
"var" kw
"while" loop
"workflow" kw
done
"a-zA-Z_\-" ident
:kw Keyword
* idle noeat
:loop Loop
* idle noeat
:cond Conditional
* idle noeat
:stmt Statement
* idle noeat
:struct Structure
* idle noeat

View file

@ -0,0 +1,160 @@
# JOE syntax highlight file for Prolog
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Ident
=Comment
=String +Constant
=Number +Constant
=Escape
=StringEscape +Escape
=Keyword
=Bad
=Brace
=Variable
=Predicate +DefinedFunction +DefinedIdent
:idle Idle
* idle
"\n" idle
"%" line_comment recolor=-1
"/" maybe_comment
"0-9" first_digit recolor=-1
"'" string_sq_1 recolor=-1
"\"" string_dq_1 recolor=-1
# marking -> predicate hilite
# buffering -> keyword hilite
"a-z" atom mark buffer
"A-Z" variable recolor=-1
"_" _variable
"[]" brace recolor=-1
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:maybe_comment Idle
* idle noeat
"*" comment recolor=-2
:comment Comment comment
* comment
"*" maybe_end_comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
:maybe_end_comment Comment comment
* comment noeat
"/" idle
"*" maybe_end_comment
:brace Brace
* idle noeat
:string_sq_1 String string
* string_sq noeat
:string_sq String string
* string_sq
"\'" idle
"\\" string_sq_esc recolor=-1
:string_sq_esc StringEscape string
* string_sq
"\n" string_sq recolor=-2
:string_dq_1 String string
* string_dq noeat
:string_dq String string
* string_dq
"\"" idle
"\\" string_dq_esc recolor=-1
:string_dq_esc StringEscape string
* string_dq
"\n" string_dq recolor=-2
:first_digit Number
* idle noeat
# no float support
# "." float
"0-9" first_number
:first_number Number
* idle noeat
"0-9" first_number
"." float
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
# list of keywords includes some predicates...
:atom Ident
* atom_end noeat markend strings
"append" kw
"atom" kw
"atomic" kw
"call" kw
"catch" kw
"clause" kw
"close" kw
"fail" kw
"findall" kw
"float" kw
"halt" kw
"integer" kw
"is" kw
"member" kw
"nl" kw
"nonvar" kw
"number" kw
"once" kw
"op" kw
"open" kw
"read" kw
"repeat" kw
"throw" kw
"true" kw
"var" kw
"write" kw
done
"a-zA-Z0-9_" atom
:kw Keyword
* idle noeat
:atom_end Idle
* idle noeat
" " atom_end
"(" pred_end recolormark
":" maybe_pred_end
:pred_end Predicate
* idle noeat
:maybe_pred_end Idle
* idle noeat
"-" pred_end recolormark
:variable Variable
* idle noeat
"a-zA-Z0-9_" variable
:_variable Idle
* idle noeat
# if it's not only _, color it
"a-zA-Z0-9_" variable recolor=-2

View file

@ -0,0 +1,89 @@
# JOE syntax highlight file for properties files
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Comment
=Constant
=String +Constant
=StringEscape +Escape
=Escape
=Bad
=Key +Attr +Type
=KeyEscape +Escape
=Separator +Control
:line_start Idle
* key noeat
"\n" line_start
" \t\r" line_start # leading spaces
"#!" line_comment recolor=-1
"=:" missing_key recolor=-1
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" line_start
:missing_key Bad
* value_pre noeat
:key Key
* key
"\\" key_esc recolor=-1
" \t\r" key_post noeat
"=:" sep recolor=-1
"\n" key_error recolor=-2
# one escaped char
:key_esc KeyEscape
* key
"\n" key_error recolor=-2
:key_post Idle
* value_pre noeat
" \t\r" key_post
"=:" sep recolor=-1
:key_error Bad
* key noeat
:sep Separator
* value_pre noeat
:value_pre Idle
* value noeat
" \t\r" value_pre
:value String string
* value
"\\" value_esc recolor=-1
"\n" line_start
:value_esc StringEscape string
* value_error recolor=-2
"u" value_unicode_hex1
"\n" value_cont
:value_unicode_hex1 StringEscape string
* value_error recolor=-3
"A-Fa-f0-9" value_unicode_hex2
:value_unicode_hex2 StringEscape string
* value_error recolor=-4
"A-Fa-f0-9" value_unicode_hex3
:value_unicode_hex3 StringEscape string
* value_error recolor=-5
"A-Fa-f0-9" value_unicode_hex4
:value_unicode_hex4 StringEscape string
* value_error recolor=-6
"A-Fa-f0-9" value
:value_cont String string
* value
" \t\r" value_cont # leading spaces
:value_error Bad
* value noeat

View file

@ -0,0 +1,380 @@
# JOE syntax highlight file for Postscript
=Idle
=Ident
=Bad
=Comment
=Constant
=Boolean +Constant
=String +Constant
=StringEscape +Escape
=Number +Constant
=Keyword
:idle Idle
* idle
"%" line_comment recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"(<" string recolor=-1 save_c
"a-zA-Z_" ident buffer
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:string String string
* string
& idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 StringEscape string
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 StringEscape string
* string noeat
"0-9a-fA-F" string
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string_control
"\n" idle
"diouxXeEfFgGaAcspn%SC" string
:ident Ident
* idle noeat istrings
"exch" kw
"pop" kw
"copy" kw
"dup" kw
"index" kw
"roll" kw
"clear" kw
"count" kw
"mark" kw
"cleartomark" kw
"countomark" kw
"add" kw
"div" kw
"sub" kw
"idiv" kw
"mul" kw
"mod" kw
"abs" kw
"neg" kw
"ceiling" kw
"floor" kw
"round" kw
"truncate" kw
"sqrt" kw
"atan" kw
"cos" kw
"sin" kw
"exp" kw
"ln" kw
"log" kw
"rand" kw
"srand" kw
"rrand" kw
"array" kw
"length" kw
"get" kw
"put" kw
"getinterval" kw
"putinterval" kw
"aload" kw
"astore" kw
"copy" kw
"forall" kw
"dict" kw
"length" kw
"maxlength" kw
"begin" kw
"end" kw
"def" kw
"load" kw
"store" kw
"get" kw
"put" kw
"known" kw
"where" kw
"copy" kw
"forall" kw
"errordict" kw
"systemdict" kw
"userdict" kw
"currentdict" kw
"countdictstack" kw
"dictstack" kw
"string" kw
"length" kw
"get" kw
"put" kw
"getinterval" kw
"putinterval" kw
"copy" kw
"forall" kw
"anchorsearch" kw
"search" kw
"token" kw
"eq" kw
"ne" kw
"ge" kw
"gt" kw
"le" kw
"lt" kw
"and" kw
"not" kw
"or" kw
"xor" kw
"true" bool
"false" bool
"bitshift" kw
"exec" kw
"if" kw
"ifelse" kw
"for" kw
"repeat" kw
"loop" kw
"exit" kw
"stop" kw
"stopped" kw
"countexecstack" kw
"execstack" kw
"quit" kw
"start" kw
"type" kw
"cvlit" kw
"cvx" kw
"xcheck" kw
"executeonly" kw
"noaccess" kw
"readonly" kw
"rcheck" kw
"wcheck" kw
"cvi" kw
"cvn" kw
"cvr" kw
"cvrs" kw
"cvs" kw
"file" kw
"closefile" kw
"read" kw
"write" kw
"readhexstring" kw
"writehexstring" kw
"readstring" kw
"writestring" kw
"readline" kw
"token" kw
"bytesavailable" kw
"flush" kw
"flushfile" kw
"resetfile" kw
"status" kw
"run" kw
"currentfile" kw
"print" kw
"stack" kw
"pstack" kw
"prompt" kw
"echo" kw
"save" kw
"restore" kw
"vmstatus" kw
"bind" kw
"null" kw
"usertime" kw
"version" kw
"gsave" kw
"grestore" kw
"grestoreall" kw
"initgraphics" kw
"setlinewidth" kw
"currentlinewidth" kw
"setlinecap" kw
"currentlinecap" kw
"setlinejoin" kw
"currentlinejoin" kw
"setmiterlimit" kw
"currentmiterlimit" kw
"setdash" kw
"currentdash" kw
"setflat" kw
"currentflat" kw
"setgray" kw
"currentgray" kw
"sethsbcolor" kw
"currenthsbcolor" kw
"setrgbcolor" kw
"currentrgbcolor" kw
"setscreen" kw
"currentscreen" kw
"settransfer" kw
"currenttransfer" kw
"matrix" kw
"initmatrix" kw
"identmatrix" kw
"defaultmatrix" kw
"currentmatrix" kw
"setmatrix" kw
"translate" kw
"translate" kw
"scale" kw
"scale" kw
"rotate" kw
"concat" kw
"concatmatrix" kw
"transform" kw
"transform" kw
"dtransform" kw
"dtransform" kw
"itransform" kw
"itransform" kw
"idtransform" kw
"idtransform" kw
"invertmatrix" kw
"newpath" kw
"currentpoint" kw
"moveto" kw
"rmoveto" kw
"lineto" kw
"rlineto" kw
"arc" kw
"arcn" kw
"arcto" kw
"curveto" kw
"rcurveto" kw
"closepath" kw
"flattenpath" kw
"reversepath" kw
"strokepath" kw
"charpath" kw
"clippath" kw
"pathbbox" kw
"pathforall" kw
"initclip" kw
"clip" kw
"eoclip" kw
"erasepage" kw
"fill" kw
"eofill" kw
"stroke" kw
"image" kw
"imagemask" kw
"showpage" kw
"copypage" kw
"banddevice" kw
"framedevice" kw
"nulldevice" kw
"renderbands" kw
"definefont" kw
"findfont" kw
"scalefont" kw
"makefont" kw
"setfont" kw
"currentfont" kw
"show" kw
"ashow" kw
"widthshow" kw
"awidthshow" kw
"kshow" kw
"stringwidth" kw
"cachestatus" kw
"setcachedevice" kw
"setcharwidth" kw
"setcachelimit" kw
"dictfull" kw
"dictstackoverflow" kw
"dictstackunderflow" kw
"execstackoverflow" kw
"handleerror" kw
"interrupt" kw
"invalidaccess" kw
"invalidexit" kw
"invalidfileaccess" kw
"invalidfont" kw
"invalidrestore" kw
"ioerror" kw
"limitcheck" kw
"nocurrentpoint" kw
"rangecheck" kw
"stackoverflow" kw
"stackunderflow" kw
"syntaxerror" kw
"timeout" kw
"typecheck" kw
"undefined" kw
"undefinedfilename" kw
"undefinedresult" kw
"unmatchedmark" kw
"unregistered" kw
done
"a-zA-Z0-9_\-" ident
:kw Keyword
* idle noeat
:bool Boolean
* idle noeat

View file

@ -0,0 +1,167 @@
# JOE syntax highlight file for Puppet
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Ident
=Comment
=Constant
=Number +Constant
=String +Constant
=Regex +String
=StringEscape +Escape
=StringVariable +StringEscape
=RegexEscape +StringEscape
=Type
=Keyword
=Bad
=Variable +DefinedIdent
=Brace
=KeywordAttr +Attr +Type
:idle Idle
* idle
"\n" idle
"#" line_comment recolor=-1
"{[]}" brace recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"\"" string recolor=-1
"'" char recolor=-1
"/" slash
"$" variable recolor=-1
"A-Z" type recolor=-1
"a-z" ident buffer
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment noeat
"/" idle
"*" maybe_end_comment
:brace Brace
* idle noeat
# that's not completely accurate since a regex may start with a * too
:slash Idle
* regex noeat recolor=-2
"*" comment recolor=-2
:first_digit Number
* idle noeat
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* idle noeat
"0-9" bad_number
:octal Number
* idle noeat
"0-7_" octal
"89" bad_number recolor=-1
:decimal Number
* idle noeat
"0-9_" decimal
:char String string
* char
"'" idle
:string String string
* string
"\"" idle
"$" maybe_string_subst recolor=-1
:maybe_string_subst String string
* string noeat
"{" string_subst recolor=-2
:string_subst StringVariable string
* string_subst
"}" string
:regex Regex string
* regex
"\\" regex_quote recolor=-1
"/" idle
:regex_quote RegexEscape string
* regex
:variable Variable
* idle noeat
"a-zA-Z0-9_" variable
:type Type
* idle noeat
"a-zA-Z0-9_" type
:ident Ident
* idle noeat strings
"case" kw
"class" kw
"define" kw
"else" kw
"elsif" kw
"false" kw
"if" kw
"in" kw
"inherits" kw
"true" kw
"undef" kw
# prominent attrs
"ensure" kw_attr
"default" kw_attr
# methods
"alert" method
"create_resources" method
"crit" method
"debug" method
"defined" method
"emerg" method
"err" method
"extlookup" method
"fail" method
"file" method
"fqdn_rand" method
"generate" method
"include" method
"info" method
"inline_template" method
"md5" method
"notice" method
"realize" method
"regsubst" method
"require" method
"search" method
"sha1" method
"shellquote" method
"split" method
"sprintf" method
"tag" method
"tagged" method
"template" method
"versioncmp" method
"warning" method
done
"a-zA-Z0-9_" ident
:kw Keyword
* idle noeat
:kw_attr KeywordAttr
* idle noeat
:method Keyword
* idle noeat

View file

@ -0,0 +1,403 @@
# JOE syntax highlight file for Python
=Idle
=Ident
=Comment
=Docstring +Comment
=DocstringLabel +Docstring
=DocEscape +Escape +Docstring
=Constant
=String +Constant
=Number +Constant
=Boolean +Constant
=StringEscape +Escape
=Keyword
=Statement +Keyword
=Loop +Statement
=Conditional +Statement
=StorageClass +Type +Keyword
=Operator +Keyword
=Bad
=Brace
=DefinedIdent +Ident
=DefinedFunction +DefinedIdent
=DefinedType +DefinedIdent
=SpecialIdent +Ident
=Decorator +Define +Preproc
=Builtin +DefinedFunction
:idle Idle
* idle
"#" comment recolor=-1
"0-9" first_digit recolor=-1
"'\"" string_quot_1 recolor=-1 save_c
"\i" ident noeat
"{}" brace recolor=-1
"@" decorator recolor=-1
:brace Brace
* idle noeat
# annotations
:decorator Decorator
* decorator
" (\t\r\n" idle noeat
:comment Comment comment
* comment
# might be TODO label
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"\n" idle
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-9" first_number
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:first_number Number
* idle noeat
"0-9" first_number
"." float
:maybe_float Number
* idle recolor=-2 noeat
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
:ident Ident
* ident1 noeat buffer
"_" priv_member recolor=-1
:ident1 Ident
* idle noeat strings
"and" oper
"as" stmt
"assert" stmt
"break" loop
"class" classstmt
"continue" loop
"def" defstmt
"del" stmt
"elif" cond
"else" cond
"except" stmt
"finally" stmt
"for" loop
"from" stmt
"global" stmt
"if" cond
"import" stmt
"in" oper
"is" oper
"lambda" kw
"not" oper
"or" oper
"pass" stmt
"raise" stmt
"return" stmt
"try" stmt
"while" loop
"with" stmt
"yield" stmt
# quasi-keywords
"False" bool
"True" bool
"None" kw
# builtins
"abs" builtin
"all" builtin
"any" builtin
"ascii" builtin
"bin" builtin
"bool" builtin
"bytearray" builtin
"bytes" builtin
"callable" builtin
"chr" builtin
"classmethod" builtin
"compile" builtin
"complex" builtin
"copyright" builtin
"credits" builtin
"delattr" builtin
"dict" builtin
"dir" builtin
"divmod" builtin
"enumerate" builtin
"eval" builtin
"exec" builtin
"exit" builtin
"filter" builtin
"float" builtin
"format" builtin
"frozenset" builtin
"getattr" builtin
"globals" builtin
"hasattr" builtin
"hash" builtin
"help" builtin
"hex" builtin
"id" builtin
"input" builtin
"int" builtin
"isinstance" builtin
"issubclass" builtin
"iter" builtin
"len" builtin
"license" builtin
"list" builtin
"locals" builtin
"map" builtin
"max" builtin
"memoryview" builtin
"min" builtin
"next" builtin
"object" builtin
"oct" builtin
"open" builtin
"ord" builtin
"pow" builtin
"print" builtin
"property" builtin
"quit" builtin
"range" builtin
"repr" builtin
"reversed" builtin
"round" builtin
"set" builtin
"setattr" builtin
"slice" builtin
"sorted" builtin
"staticmethod" builtin
"str" builtin
"sum" builtin
"super" builtin
"tuple" builtin
"type" builtin
"vars" builtin
"zip" builtin
done
"'\"" idle noeat istrings
"u" string_pre
"b" string_pre
"r" string_raw_pre
"br" string_raw_pre
"rb" string_raw_pre
done
"\c" ident1
:kw Keyword
* idle noeat
:cond Conditional
* idle noeat
:oper Operator
* idle noeat
:bool Boolean
* idle noeat
:loop Loop
* idle noeat
:stmt Statement
* idle noeat
:builtin Builtin
* idle noeat
:classstmt Statement
* idle noeat recolor=-1
"\i" classstmt
" \t" classname_1
:classname_1 DefinedType
* classname
:classname DefinedType
* idle noeat recolor=-1
"\c" classname
:defstmt Statement
* idle noeat recolor=-1
"\i" defstmt
" \t" defname_1
:defname_1 DefinedFunction
* defname
:defname DefinedFunction
* idle noeat recolor=-1
"\c" defname
:priv_member SpecialIdent
* idle noeat
"\c" priv_member
# Handle string prefixes up to the string itself.
:string_pre String string
* idle noeat
"'\"" string_quot_1 save_c
:string_raw_pre String string
* idle noeat
"'\"" string_quot_raw_1 save_c
# Differentiate between docstrings and regular strings, carrying with it raw state
:string_quot_1 String string
* idle call=.string() noeat
& string_quot_2
:string_quot_2 String string
* idle noeat
& idle call=.string(docstring) recolor=-3
:string_quot_raw_1 String string
* idle call=.string(raw)
& string_quot_raw_2
:string_quot_raw_2 String string
* idle noeat
& idle call=.string(docstring raw) recolor=-3
.subr string
.ifdef docstring # Long strings
:string Docstring string
* string
"BFHNTX" string noeat call=.comment_todo_docstr()
.ifdef raw
.else
"\\" string_esc mark
.endif
& doc_end_1
:doc_end_1 Docstring string
* string noeat
& doc_end_2
:doc_end_2 Docstring string
* string noeat
& string return
.else # Short strings
:string String string
* string
"\n" string return
.ifdef raw
.else
"\\" string_esc mark
.endif
& string return
.endif
:string_esc String string
* string_esc_done
"x" string_hex2
"u" string_hex4
"U" string_hex8
"0-7" string_octal2
"\n" string_esc_done
# Recolor whole escape sequence based on whether this is a docstring.
:string_esc_done String string
* string_esc_really_done noeat markend recolormark
.ifdef docstring
:string_esc_really_done DocEscape
* string noeat
.else
:string_esc_really_done StringEscape string
* string noeat
.endif
:string_hex1 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_esc_done
:string_hex2 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex1
:string_hex3 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex2
:string_hex4 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex3
:string_hex5 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex4
:string_hex6 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex5
:string_hex7 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex6
:string_hex8 StringEscape string
* string_esc_done noeat
"0-9a-fA-F" string_hex7
:string_octal1 StringEscape string
* string_esc_done noeat
"0-7" string_esc_done
:string_octal2 StringEscape string
* string_esc_done noeat
"0-7" string_octal1
.end
.subr comment_todo_docstr
# initial state
:comment_todo_init Docstring string
* comment_todo_guess buffer
# highlight common TODO labels
:comment_todo_guess Docstring string
* comment_todo_unknown noeat strings
"BUG" comment_todo
"FIXME" comment_todo
"HACK" comment_todo
"NOTE" comment_todo
"TODO" comment_todo
"XXX" comment_todo
done
"A-Z" comment_todo_guess
:comment_todo_unknown Docstring string
* NULL noeat return
:comment_todo DocstringLabel string
* NULL noeat return
.end

View file

@ -0,0 +1,175 @@
# JOE syntax highlight file for R
=Idle
=Ident
=Bad
=Comment
=Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=Character +Constant
=CharacterEscape +Escape
=Boolean +Constant
=Escape
=Keyword
=Brace
=Control
:idle Idle
* idle
"#" line_comment recolor=-1
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float buffer
"\"" string recolor=-1
"'" char recolor=-1
"\p{L}\p{Nl}" ident buffer
"\\" outside_escape recolor=-1
"{}" brace recolor=-1
"/,:;=()><[]*&|!~+\-%^" control recolor=-1
:outside_escape Escape
* idle
:brace Brace
* idle noeat
:control Control
* idle noeat
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:first_digit Number
* idle noeat
"xX" hex
"." float
"eE" epart
"0-9" decimal
"L" idle
:hex Number
* idle noeat
"0-9A-Fa-f" hex
:decimal Number
* idle noeat
"0-9" decimal
"eE" epart
"." float
"L" idle
:maybe_float Number
* idle recolor=-2 noeat
"\i." ident recolor=-2
"0-9" float recolor=-2
:float Number
* idle noeat
"eE" epart
"0-9" float
"L" idle
:epart Number
* idle noeat
"0-9+\-" enum
:enum Number
* idle noeat
"0-9" enum
"L" idle
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape StringEscape string
* string
"x" string_hex
"0-7" string_octal2
"\n" string recolor=-2
# \x will consume all successive hex digits (ANSI C).
:string_hex StringEscape string
* string noeat
"0-9a-fA-F" string_hex
:string_octal2 StringEscape string
* string noeat
"0-7" string_octal3
:string_octal3 StringEscape string
* string noeat
"0-7" string
:string_control StringEscape string
* string
"\"" string noeat
"\n" idle
"\\" string_escape recolor=-1
"0-9.\-+ #hjILtz$" string_control
:char Character string
* char
"\n" idle
"'" idle
"\\" char_escape recolor=-1
:char_escape CharacterEscape string
* char
"x" char_hex
"0-7" char_octal2
"\n" char recolor=-2
# \x will consume all successive hex digits (ANSI C).
:char_hex CharacterEscape string
* char noeat
"0-9a-fA-F" char_hex
:char_octal2 CharacterEscape string
* char noeat
"0-7" char_octal3
:char_octal3 CharacterEscape string
* char noeat
"0-7" char
# It feels to me like this could use some more work...
:ident Ident
* idle noeat strings
"TRUE" bool
"FALSE" bool
"NULL" val
"Inf" val
"NaN" val
"NA" val
"NA_integer_" val
"NA_real_" val
"NA_complex_" val
"NA_character_" val
"if" kw
"else" kw
"repeat" kw
"while" kw
"function" kw
"for" kw
"in" kw
"next" kw
"break" kw
done
"\c." ident
:bool Boolean
* idle noeat
:val Constant
* idle noeat
:kw Keyword
* idle noeat

View file

@ -0,0 +1,82 @@
# JOE syntax highlight file for REXX
=Idle
=Bad
=Comment
=Constant
=String +Constant
=Keyword
:idle Idle
* idle
"\"" dquote recolor=-1
"'" squote recolor=-1
"a-zA-Z.!?@_0-9" symbol buffer
"/" idle call=.maybe_comment()
:symbol Idle
* idle noeat istrings
"address" kw
"arg" kw
"call" kw
"do" kw
"drop" kw
"exit" kw
"if" kw
"interpret" kw
"iterate" kw
"leave" kw
"nop" kw
"numeric" kw
"options" kw
"parse" kw
"procedure" kw
"pull" kw
"push" kw
"queue" kw
"return" kw
"say" kw
"select" kw
"signal" kw
"trace" kw
"upper" kw
"then" kw
"end" kw
"else" kw
"when" kw
"otherwise" kw
done
"a-zA-Z.!?@_0-9" symbol
:kw Keyword
* idle noeat
:squote String string
* squote
"'" idle
:dquote String string
* dquote
"\"" idle
#
# Subroutine to parse recursive /* */ comments
#
.subr maybe_comment
:maybe_comment Idle
* maybe_comment return noeat
"*" comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_done
"/" comment call=.maybe_comment()
:maybe_done Comment comment
* comment noeat
"/" comment return
.end

Some files were not shown because too many files have changed in this diff Show more