#if defined(W32) || defined(LNX)
.シンタックスハイライト。
シンタックスハイライトとはキーワード、コメントなどを色を変えて表示する機能です。
xe のシンタックスハイライトはandre-simonのHighlightかまたはGNU source-highlight を利用します
GNU source-highlighの場合(configファイルでSHCMD=またはSHCMDR=で指定)
source-highlight(Windows版ないしはLinux版)の導入が必要です。
(http://www.gnu.org/software/src-highlite/source-highlight.html)
source-highlightは boostのregexに依存するのでこれも導入が必要かもしれません。
(http://www.boost.org)
Win版用にcygwinでコンパイルしたものは遅いのでMinGWでコンパイルしたものをHPにアップしています。
これを使用すればcygwinの導入も不要です。(2008/03/21)
応答をよくするため GNU source-highlight 常駐するオプションも追加。
xeshmはsource-highlight 2.9のStartAppクラスを利用。Windows版はMingWでコンパイル。(LinuxはFC12)
現在のsource-highlightはv2.10ですが、data-directoryの仕様が変わる可能性があるので
xeshmを使用する場合はv2.9のdata-directoryを使用してください。
configでは SHCMDでなくSHCMDR パラメータで指定します。
xeshmのmakeはmkxeshm.mingw(ulibはmkmingw)を参照してください。
andre-simon さんの Highlightの場合(configファイルでSHCMDA=で指定)
こちらのほうが使いやすいようです。
andre-simon さんの ホームページからプラットホームにあったバイナリーを導入してください。
(コマンドラインpgm "highlight"をxeパッケージのsampleディレクトリーに同梱しています)
Windows版はinstaller付きです。
commandline プログラムのみ使用するので、Linux版ではgui版はコンパイルできなくてもかまいません。
boost依存もないので導入は簡単です。
COBOL,PLIなどサポートする言語タイプも多いようです,
カラーの変更はxeのcfgファイル CMAPオプション指定でしてください。
このハイライターはオープンソースですが、軽いので常駐モードは作っていません。
Windows 版は sample デレクトリーに xe に必要な範囲でコピーを入れてあります。
Windows版は cfg ファイルなど Dataディレクトリーは省略値で exe のある場所のようです。
Linux は /usr/share/highlight ですが --data-dir= で指定変更できます。
ansi オプションは v3.1 では -A は無効で --out-format=ansi が有効となっています
従って、xe は内部指定をやめたので、cfg ファイルで
::xesynw.cfg(Windows), ::xesynl.cfg(Linux), ::xesyna.cfg(Android)
バージョンにあわせたオプションを指定してください
旧: SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q -A
新: SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q --out-format=ansi
アンドロイド版は v2.16を同梱しています。データファイルは以下の場所に展開しています
SHCMDA= "highlight -q --data-dir=/data/data/com.xe.Axe/files/highlight-data --add-config-dir=/data/data/com.xe.Axe/files/highlight-data --out-format=ansi "
ハイライターのANSI-escタイプの出力をパイプで受け取り解析しその出力をxeが表示します。
escタイプの出力にはカラーとフォントスタイル情報を指定するANSI ESC シーケンスコードが含まれています。
(元のソースにescコードが含まれていると正しく表示できません。)
(注)プロセスのI/Oを監視するウィルス対策ソフトがパフォーマンスに影響することがあります。
(ANSI のフォントスタイルコードは NORMAL:0, BOLD:1, UNDERLINE:4, BLINK:5, REVERSE:7, INVISIBLE:8. カラーコードは後述)
(添付ツールxeacbは単独でANSI Esc シーケンス入りのファイルのブラウザーとしても使用できます。)
行を変更してもすぐシンタックスの再評価は行われません。省略値ではCtrl+sを押すごとに再評価します。
Enterキーに連動して再評価するように設定も出来ますが、大きなファイルでは反応が遅くなります。
一番応答が良いのは
1.ENTERキートリガー設定無し。
2.Ctrl+sで必要な都度更新行のみの再評価。
3.マルチラインシンタックスの評価が必要になったら"SYN ALL"コマンド。
応答に問題がなければ次の設定がいいかと思います。
1.ENTERキートリガー設定は更新行のみの評価無し。
2.Ctrl+sで必要な都度全行の再評価。
関連するcfg設定は
0. OPEN=/OPEN_EXT=で開く時からシンタックスハイライトONに設定。
1. ENTER=でENTERキーのトリガー設定。
2. UPDONLY_EXT=でCtrl+sで全行/更新行評価を設定。
(a)コマンド
SYN [ ? | ALL | RESET | ENTER | ENTERA | ON [lang-type] | OFF]
? : ヘルプと現在の状況を若干表示。
ALL : 更新の有無、cfgファイルのUPDONLY_EXTの設定にかかわらず全行の再評価を実施
RESET : config ファイルの再読み込み。
ENTER : 現在開いているファイルに "ENTERキー入力時に再評価実施" を設定。
再評価は更新行。複数行にわたるシンタックスは考慮されないが応答が良い。
全行の再評価は適宜 SYNコマンド(Ctrl+S)で実施すればよい。
ENTERA : 現在開いているファイルに "ENTERキー入力時に再評価実施" を設定。
再評価はファイルの全行。複数行にわたるシンタックスは考慮されるが応答が悪い。
ON [lang-type] : 現在開いているファイルで前回から変更があればのファイル全体の再評価を実施。
(但しcfgファイルのUPDONLY_EXTに該当する場合は更新行のみ再評価)
lang-type はファイルの言語タイプ(拡張子)で
現ファイルの拡張子が適当でない時に指定する。
OFF : 現在開いているファイルのSyntaxHighlight表示を停止。
オペランド無しは "SYN ON"で 省略値は Ctrl+s を割り当て。
(b)設定ファイル。
ワークディレクトリー(省略値はc:\xe_wdないしは/home/userID/xe_wdnnnn)にcfgファイルを作成してください。
(Windows版はxesynw.cfg,Linux版はxesynl.cfg,Android版はxesyna.cfg)
source-highlightの設定は後述(d)、andre-simon's Highlight の設定については後述-(e).
ANSI ESC シーケンスについては後述-(f)を参照。
SHCMD= :source-highlight 実行コマンド。
省略値は "source-hightlight -f esc"。 -f escは自動で付与されます。
Windowsでバッチファイルを使用するときはコマンドの前に
"@"を付けてコマンドのエコーが標準出力に出ないようにしてください。
そうしないと"Invalid Index file"等のエラーメッセジが出ます。
SHCMDR= :source-highlight ではなくxeshm を実行します。
xeshm は source-highlight v2.9 のObjectをLinkして
毎回プロセス初期化の負荷を避けるため常駐プロセス化したものです。
SHCMDA= :andre-simonのHighlightを実行します。
パスがスペースを含む場合は次のように指定してください
SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
ACBCMD= :xeacb(.exe)がPATH上にない時フルパスを指定します。廃止(使用しなくなりました。)
ENTER = :Enterキー入力をシンタックスの再評価のトリガーに閾値をファイルの行数で指定。
ファイルを開く時行数がここでの指定以内の場合Enterキー入力が再評価(更新行のみ)のトリガーになります。
ファイルを開いた後ではSYNコマンドで変更できます。
"0" はOFFで再評価はCtrl+sで実施。
"-1"は無制限でEnterキーをトリガーとします。
省略値は-1。
OPEN = :ファイルを開く時にシンタックスハイライト評価をする指定。
"Y":次の OPEN_EXT パラメータに指定がある拡張子のファイルをONとする。
"N":ファイルを開く時はOFFとする。後でSYNコマンドでONにできます。
"A":全てのファイルでファイルを開く時からONとする。
OPEN_EXT= :OPEN=y 指定の時に対象となるファイル拡張子のリストを指定。
例) OPEN_EXT=c cpp h hpp
UPDONLY_EXT :"SYN ON"コマンド(Ctrl+s)での再評価を更新行に限る言語タイプの拡張子をリストします。
C言語の/* */コメントのように複数行にわたるシンタックスを持たない言語タイプでは
更新行だけ再評価すればよいので"SYN ON"(Ctrl+s)の応答が速くなります。
ENTERキーをトリガーキー設定している場合はENTERキーで更新行のみの再評価は実施
されているので"SYN ON"(Ctrl+s)を使用する理由がないので意味がありません。
Enterキーの応答がトリガーキー設定で少しでも遅くなるのを嫌う場合で
その言語は本来マルチラインシンタックスをもってはいるが"SYN ON"コマンドの応答を早くしたい場合に意味があります。
この設定に該当する場合でも"SYN ALL"でファイル全体の再評価がされます。
UPDONLY_EXT=default とすると全てのファイルが対象となる。
例) ULO_EXT=cob
PATH_EXT_xxx=:適切な拡張子を持たないファイルのためにディレクトリパス名で拡張子を与えます。
xxx(最大7桁まで)に拡張子を指定。1行1経路指定です。
指定されたディレクトリー内のファイルはその本来の拡張子にかかわらず
xxxの拡張子を持つものとされます。
例) PATH_cob=d:\src\cobs
PATH_syslog=d:\logs\windows\actlog
BG= :背景色のパレット番号。各パレット番号の色は0.0画面でチェックしてください。
番号は "0" から "15(Windows)/"7"(Linux)。
BG_BROWSE :Browse(表示)モードの時の背景色。
省略値は BG に同じ
FG= :前景色のパレット番号。
番号は "0" から "15。
BG_EOL= :行末以降の背景色パレット番号。
省略値は BG(編集モード)またはBG_BROWSE(表示モード)に同じ。
BG_TAB= :TAB/印刷不能文字の背景色パレット番号。
省略値は BG(編集モード)またはBG_BROWSE(表示モード)に同じ。
BG_UPD= :更新後未評価の行の背景色パレット番号。
省略値は 0(黒)
BG_REVERSE_EDIT= :Editパネル上のFindコマンド、カット&ペーストなどの反転時の背景色
省略値は 14(黄色)、但しLinux Console版では 6(茶色)
BG_REVERSE_BROWSE=:Browseパネル上のFindコマンド、カット&ペーストなどの反転時の背景色
省略値は 15(白色)、但しLinux Console版では 6(茶色)
CMAP = :source-highlightはその構成定義にしたがってANSI ESCシーケンスで色番号を
出力しますがそれをxeのパレット番号とせずマッピングを換えるときに指定。
andre-simon's Highlightはその構成定義ではマッピングを変更出来ないようです。(後述(e)参照)
CMAPを使ってください。
カラー番号"0"から順に必要なだけ指定。
例) CMAP =__.04.10.__.01 # 赤と青の入れ替え、緑を高輝度に設定。"__"は変更無しの意味です。
RGBn = :GUI版(wxe,gxe)ではパレット番号の色も無段階で設定できます。
n は 0 から 15 のパレット番号。
例) rgb2=20e030 # パレット番号2(緑)のRGB値を R:0x20, G:0xe0, B:0x30 に設定。
ITALIC_ESC = :source-highlightのesc.outlangで italics に 与えたANSI ESC シーケンスコードをxeに知らせます。
"1":bold, "4":underline 以外を指定してください。
省略値は"5":blinkです。省略値をイタリックとするにはesc.outlangを変更してください。
andre-simon's Highlightはフォントスタイル指定できません。
C_BOLD = :コンソール版でのフォントスタイル=1(Bold)の扱い。 Windows 版のみ。
"H":高輝度(省略値), "N":無視。
C_UNDERLINE= :コンソール版でのフォントスタイル=4(Underline)の扱い。
"H":高輝度, "N":無視(省略値)。
C_ITALIC = :コンソール版でのフォントスタイル=5(但し、ITALIC_ESCを指定していればその値)の扱い。
"H":高輝度, "N":無視(省略値)。
G_BOLD = :GUI版(wxe,gxe)でのフォントスタイル=1(Bold)の扱い。
"H":高輝度, "Y":Bold, "N":無視。省略値は"YH"。
G_UNDERLINE= :GUI版(wxe)でのフォントスタイル=4(Underline)の扱い。gxeではサポートされません。
"H":高輝度, "Y":Undrerline, "N":無視。省略値は"Y"。
G_ITALIC = :GUI版(wxe,gxe)でのフォントスタイル=5(但し、ITALIC_ESCを指定していればその値)の扱い。
"H":高輝度, "Y":Italic, "N":無視。省略値は"Y"。
(c)サンプルファイル。
######################################################################################
# xesynw.cfg
# ==syntax highlight configuration==
#
# if err detected, correct, save then use "SYN RESET" cmd to re-load config file.
#
### execution
#
# select highight command from SHCMD or SHCMDR or SHCMDA
# SHCMDA is recomended(installation required,"sample" dir contains required files(highlight-3.7)
#
# SHCMD= :Specify source-highlight command
# default "source-highlight -f esc". "-f esc" (outlang:esc) is always appended.
# If use .bat file on Windows, use "@" to avoid that cmd echo is written to stdout.
# SHCMDR= :Specify xeshm command
# xeshm is my derivative from source-highlight v2.9.
# To avoid process initialization load, xeshm is resident process.
# SHCMDA= :Specify andre-simon's Highlight command
# Specify as following if space is embedded in the path.
# SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
## ACBCMD= :Specify path of xeacb(.exe).-->Discarded.
# ENTER = :Specify file line count threshold to use Enter key as trigger of SyntaxHighlight re-evaluation.
# If the file line count is under this value at open,
# Enter key is treated as trigger of re-evaluation of updated lines..
# You can change triger ON/OFF status by SYN cmd later.
# 0 :Do not use as trigger. Use Ctrl+s to evaluate syntax.
# -1:No line count limit.(Default)
### file type
# OPEN = :SyntaxHighlight mode at opening file.
# "Y":SyntaxHighlight mode if the extention is listed by OPEN_EXT
# "N":always No SyntaxHighlight mode at open
# "A":always SyntaxHighlight mode at open
# OPEN_EXT= :Specify file extention list for the case of OPEN=y.
# ex) OPEN_EXT=c cpp h hpp
# UPDONLY_EXT= :Specify file extention list to limit evaluation by "SYN ON"(Ctrl+s) cmd to updated lines only.
# If the language has no multiline syntax such as /* */ comment in c-like language,
# You get better response by limiting syntax evaluation to updated lines only.
# If you set ENTER key as trigger of re-evaluation,there is no need to use "SYN ON" cmd
# because updated lines evaluation is done by ENTER key.
# If you not want to set ENTER key trigger,and evaluate by "SYN ON"(Ctrl+S) cmd each time
# even the language has multiline syntax, register extension in this list.
# For all lines re-evaluation,"SYN ALL" cmd is used in this case.
# "UPDONLY_EXT=default" means all file extension.
# ex) UPDONLY_EXT=cob
# PATH_EXT_xxx=:For the file with missing or improper extension name,specify extention name.
# xxx:max 7 byte extension name. Specify 1 pathname/line.
# All files in the directory is assumed as xxx is its extension name.
# ex) PATH_cob=d:\src\cobs
# PATH_syslog=d:\logs\windows\actlog
### color
# BG= :BackGround color palette number.
# You can check the palette color on =0.0 panel.
# Valid value is "0" to "15"(Windows) or "1 to "7"(Linux).
# BG_BROWSE :BackGround color palette number for browse panel
# Default is same as BG
# FG= :ForeGround color palette number
# Valid value is "0" to "15"
# BG_EOL= :Background color for the right of EndOfLine.
# Default is same as BG(Edit) or BG_BROWSE(Browse)
# BG_TAB= :Background color for TAB/UnPrintable Character.
# Default is same as BG(Edit) or BG_BROWSE(Browse)
# BG_UPD= :Background color for updated and not yet re-evaluated line.
# Default:0(black)
# BG_REVERSE_EDIT= :Background color for reverse on edit panel(Find cmd,Cut&Paste)
# Default:14(yellow) except linux console version(6:brown)
# BG_REVERSE_BROWSE=:Background color for reverse on browse panel(Find cmd,Cut&Paste)
# Default:15(white) except Linux console version(6:brown)
# CMAP = :Color palette re-mapping. Remap ANSI color number to xe's palette.
# Specify from color palette number from 0 to max 15 each.
# Use this option when using andre-simon's Highlight because it is not customizable.
# ex) CMAP=__.04.10.__.01 # swap Red and Blue and use Intense Green("__" means no change.)
# RGBn = :RGB value for each palette (wxe and gxe only)
# n:0-->15 (correspond to palette number of xe 0.0 panel)
# ex) rgb2=20e030 # palette No2(green)'rgb value is R:0x20, G:0xe0, B:0x30.
### font style
# ITALIC_ESC = :ANSI esc code for italic.
# Notify value specified on esc.lang file of source-highlight as ANSI font style code:italic.
# Valid value is one digit except reserved "1":bold, "4":underline.
# Default is "5":blink. (If you use this default,specify it on esc.outlang).
# C_BOLD = :treatment of font style:1(BOLD) for console version xe
# "H":HighIntensity, "N":Ignore. Default is "H".
# C_UNDERLINE= :treatment of font style:4(UNDERLINE) for console version xe. Not supported for Linux version.
# "H":HighIntensity, "N":Ignore. Default is "N".
# C_ITALIC = :treatment of font style:5(or value of ITALIC_ESC parameter if used) for console version xe
# "H":HighIntensity, "N":Ignore. Default is "N".
# G_BOLD = :treatment of font style:1(BOLD) for GUI version xe(wxe,gxe)
# "H":HighIntensity, "Y":Bold, "N":Ignore. Default is "YH".
# G_UNDERLINE= :treatment of font style:4(UNDERLINE) for GUI version xe(wxe). Not supported for gxe.
# "H":HighIntensity, "Y":Underline, "N":Ignore. Default is "Y".
# G_ITALIC = :treatment of font style:5(or value of ITALIC_ESC parameter if used) for GUI version xe(wxe,gxe)
# "H":HighIntensity, "Y":Italic, "N". Default is "Y".
### sample ###########################
#
# SHCMD = "g:\src\syntaxh\GnuWin32\bin\source-highlight --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight"
### SHCMD = "/usr/local/bin/source-highlight --data-dir=/use/local/share/source-highlight"
# OPEN = y # display color at file open.
# ENTER = -1 # Enter key is trigger of re-evaluation
# BG = 7 # Black on White
# BG_TAB= 7 # Draw TAB/Unprintable by BG color.
# CMAP =__.04.10.__.01 # swap Red and Blue and Intense Green("__" means no change.)
# G_ITALIC=N # ignore italic style
#
#####################################################################
#SHCMD = "g:\src\syntaxh\GnuWin32\bin\source-highlight --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight --style-file=esc.style" #see source highlight document
#SHCMDR= "m:\vcobjmingw\xeshm.exe --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight --style-file=esc.style"
#SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q"
SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
#SHCMDA= '/h/objlinux/up/sample/highlight-3.7/highlight -q --out-format=ansi -D /h/objlinux/up/sample/highlight-3.7 --add-config=/h/objlinux/up/sample/highlight-3.7'
#ENTER =0
BG = 7
FG = 0
BG_EOL= 6
BG_TAB= 10
#BG_UPD= 7
#BG_REVERSE_EDIT=14;
#BG_REVERSE_BROWSE=1
#CMAP =__.04.10.__.01.__.14 # swap Red and Blue and Intense Green("__" means no change.)
#RGB1 = 20e030
#RGB14= f01080
RGB14= f01080
#ITALIC_ESC= 0
#C_BOLD=h
#C_ITALIC=n
#C_UNDERLINE=n
#G_BOLD=y
#G_ITALIC=hy
G_UNDERLINE=h
OPEN = y
OPEN_EXT= c cpp java
#######
PATH_EXT_cob=g:\src\xe\cobs
#####################################################################
(d)source-highlight 設定。
詳細は前述のsource-highlightのHPを見て下さい。
ここでは変更箇所など関連部のみかいつまんで記述します。
(source-highlight v2.8時点では COBOL の対応がありません。最後のCOBOLシンタックス記述は自作です
data-dirにコピーして使用してください)
.lang.map
拡張子 = langファイル の形式で拡張子とシンタックス記述ファイルとの対応をとります。
例えば c については 次のような記述があります
###
cpp = cpp.lang
c = cpp.lang
C = cpp.lang
cc = cpp.lang
h = cpp.lang
hh = cpp.lang
H = cpp.lang
hpp = cpp.lang
COBOL を使用する場合はファイル拡張子を例えば .cob とした場合次のような行を追加します。
cobol.lang ファイルは後述。
cob = cobol.lang
.cpp.lang
c 言語のシンタックス(コメント、キーワードなどの判定方法)がsource-highlightの文法と
正規表現で記述されています。
###
include "c_comment.lang"
state preproc start '^[[:blank:]]*#(?:[[:blank:]]*include)' begin
string delim "<" ">"
string delim "\"" "\"" escape "\\"
include "c_comment.lang"
end
preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'
include "number.lang"
string delim "\"" "\"" escape "\\"
string delim "'" "'" escape "\\"
keyword = "__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import",
"__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall",
"__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto",
"break|case|catch|cdecl|class|const|const_cast|continue|default|delete",
"do|dynamic_cast|else|enum|explicit|extern|false|for|friend|goto",
"if|inline|mutable|namespace|new|operator|pascal|private|protected",
"public|register|reinterpret_cast|return|sizeof|static|static_cast",
"struct|switch|template|this|throw|true|try|typedef|typeid|typename|union",
"using|virtual|volatile|while"
type = "bool|char|double|float|int|long|short|signed|unsigned|void|wchar_t"
include "symbols.lang"
cbracket = "{|}"
include "function.lang"
.default.style
コメント、キーワードなどの種別の表示形式(色、フォントスタイル)が指定されています
SHCMD で --style-file= パラメータを指定すれば変更できます。
###
keyword blue b ; // for language keywords
type darkgreen ; // for basic types
string red f ; // for strings and chars
comment brown i ; // for comments
number purple ; // for literal numbers
preproc darkblue b ; // for preproc directives (e.g. #include, import)
symbol darkred ; // for simbols (e.g. <, >, +)
function black b; // for function calls and declarations
cbracket red; // for block brackets (e.g. {, })
.esc.outlang
source-highlightの省略値は出力形式はhtmlですが、
xeは -f esc パラメータ指定で ESCシーケンス形式の出力を利用します。
このファイルで style 記述に対応したESCコードを記述します
italic を利用するには
italics "$style"
の行を
italics "5$style"
に変更します。 5 はxeの省略値でこの値と xe の構成定義 ITALIC_ESC= を一致させます。
ANSI 定義は後述(f)を参照してください.
###
extension "txt"
styletemplate "\x1b[$stylem$text\x1b[m"
styleseparator ";"
bold "01$style"
underline "04$style"
italics "$style"
color "$style"
colormap
"green" "32"
"red" "31"
"darkred" "31"
"blue" "34"
"brown" "33"
"pink" "35"
"yellow" "33"
"cyan" "36"
"purple" "35"
"orange" "31"
"brightorange" "31"
"brightgreen" "32"
"darkgreen" "32"
"black" "30"
"teal" "37"
"gray" "37"
"darkblue" "34"
default "30;"
end
# Decorate text with terminal control sequences (escape sequences).
# To set the attribute/fg_color/bg_color we need to print
# "\033[AA;FF;BBm"
# where AA is one of these:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed,
# FF is one of these:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# BB is one of these:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#
# Any of AA,FF,BB may be omited.
#
# To reset do default color/attribute we need to print
# "\033[m"
.cobol.outlang
キーワードはvim の定義を参照しました。
Col.1-6をコメントとしない場合は次の行を抜いてください
comment='^.{6}' #col.1-6:comment
Col.73以降をコメントとする方法はわかりません。教えてください。
###
######################################
# for COBOL
######################################
#delm
# minus"-" may be part of variable
#
#symbol = "~","!","%","^","*","(",")","-","+","=","[",
symbol = "~","!","%","^","*","(",")","+","=","[",
"]","\\",":",";",",",".","/","?","&","<",">","\|"
symbol = '[[:blank:]]+-[[:blank:]]+'
######################################
#data type to PICTURE
######################################
type="BINARY|PACKED-DECIMAL"
type='(COMP|COMPUTATIONAL)-[123456XN]'
type='(PIC|PICTURE)[[:blank:]]+X(\([[:digit:]]+\)|X*)'
type='(PIC|PICTURE)[[:blank:]]+[S]?(9\([[:digit:]]+\)|9+)[V]?(9\([[:digit:]]+\)|9+)?'
type='(PIC|PICTURE)[[:blank:]]+[+-]?([Z9]\([[:digit:]]+\)|[Z9]+)([\.,]?([Z9]\([[:digit:]]+\)|[Z9]+)?)*(E[+-]?9+)?'
######################################
# keyword from VIM 2008/02/26
######################################
keyword="DIVISION"
keyword="IDENTIFICATION|ENVIRONMENT|DATA|PROCEDURE"
keyword="PROGRAM-ID|SOURCE-COMPUTER|OBJECT-COMPUTER|SPECIAL-NAMES|FILE-CONTROL|I-O-CONTROL"
keyword="CONFIGURATION|INPUT-OUTPUT|FILE|WORKING-STORAGE|LOCAL-STORAGE|LINKAGE"
keyword="FUNCTION-POINTER|PROCEDURE-POINTER"
keyword = "ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALPHABET|ALPHABETIC",
"ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALS",
"ALTERNATE|AND|ANY|ARE|AREA|AREAS|ASCENDING|ASSIGN|AT|AUTHOR|BEFORE|BINARY",
"BLANK|BLOCK|BOTTOM|BY|CANCEL|CBLL|CD|CF|CH|CHARACTER|CHARACTERS|CLASS",
"CLOCK-UNITS|CLOSE|COBOL|CODE|CODE-SET|COLLATING|COLUMN|COMMA|COMMON",
"COMMUNICATIONS|COMPUTATIONAL|COMPUTE|CONTENT|CONTINUE",
"CONTROL|CONVERTING|CORR|CORRESPONDING|COUNT|CURRENCY|DATE|DATE-COMPILED",
"DATE-WRITTEN|DAY|DAY-OF-WEEK|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE",
"DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT",
"DELARATIVES|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION",
"DETAIL|DISABLE|DISPLAY|DIVIDE|DIVISION|DOWN|DUPLICATES|DYNAMIC|EGI|ELSE|EMI",
"ENABLE|END-ADD|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF",
"END-MULTIPLY|END-OF-PAGE|END-READ|END-RECEIVE|END-RETURN",
"END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING",
"END-WRITE|EQUAL|ERROR|ESI|EVALUATE|EVERY|EXCEPTION|EXIT",
"EXTEND|EXTERNAL|FALSE|FD|FILLER|FINAL|FIRST|FOOTING|FOR|FROM",
"GENERATE|GIVING|GLOBAL|GREATER|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|I-O",
"IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE",
"INITIATE|INPUT|INSPECT|INSTALLATION|INTO|IS|JUST",
"JUSTIFIED|KEY|LABEL|LAST|LEADING|LEFT|LENGTH|LOCK|MEMORY",
"MERGE|MESSAGE|MODE|MODULES|MOVE|MULTIPLE|MULTIPLY|NATIVE|NEGATIVE|NEXT|NO|NOT",
"NUMBER|NUMERIC|NUMERIC-EDITED|OCCURS|OF|OFF|OMITTED|ON|OPEN",
"OPTIONAL|OR|ORDER|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|PACKED-DECIMAL|PADDING",
"PAGE|PAGE-COUNTER|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|POSITION|POSITIVE",
"PRINTING|PROCEDURES|PROCEDD|PROGRAM|PURGE|QUEUE|QUOTES",
"RANDOM|RD|READ|RECEIVE|RECORD|RECORDS|REDEFINES|REEL|REFERENCE|REFERENCES",
"RELATIVE|RELEASE|REMAINDER|REMOVAL|REPLACE|REPLACING|REPORT|REPORTING",
"REPORTS|RERUN|RESERVE|RESET|RETURN|RETURNING|REVERSED|REWIND|REWRITE|RF|RH",
"RIGHT|ROUNDED|RUN|SAME|SD|SEARCH|SECTION|SECURITY|SEGMENT|SEGMENT-LIMITED",
"SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SIGN|SIZE|SORT",
"SORT-MERGE|SOURCE|STANDARD",
"STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2",
"SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLYING",
"TAPE|TERMINAL|TERMINATE|TEST|TEXT|THAN|THEN|THROUGH|THRU|TIME|TIMES|TO|TOP",
"TRAILING|TRUE|TYPE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES",
"VARYING|WHEN|WITH|WORDS|WRITE"
keyword="CONTAINS"
keyword="IF|INVALID|END|EOP"
keyword="ALL"
keyword="SPACE|SPACES|NULL|ZERO|ZEROES|ZEROS|LOW-VALUE|LOW-VALUES"
keyword="GO|GOTO"
keyword="COPY"
keyword="ALTER|ENTER|RENAMES"
keyword="OCCURS|DEPENDING|VARYING|BINARY|COMP|REDEFINES"
keyword="REPLACING|RUN"
keyword="EXEC|END-EXEC"
keyword="CALL|END-CALL|CANCEL|GOBACK|PERFORM|END-PERFORM|INVOKE"
#keyword='(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).+'
#keyword='(?=.*[[:lower:]])A.*'
#keyword='(?(?=.{80}).{8}$)' //cond not support
#keyword='(?(?=xx)AAB|AAC)' //cond not support
######################################
#comment:no consideration of COL.1-6,73-
######################################
#comment start '^.{72}(?=.+)'
comment start '^.{6}[*/C]' #*,/,C on col.7
comment='^.{6}' #col.1-6:comment
#state comment start '^.{72}' begin
# comment='.{8}'
#end
#environment comment start '^.' begin
# comment = '^.{6}' exitall
#end
#comment start `(?(?=^.{72}).{8}$)`
#comment start '(^[[:blank:]]{72}).{8}$'
######################################
#string:no consideration of COL.1-6,73-
######################################
#string delim "\"" "\"" escape "\"\""
#string delim "'" "'" escape "''"
string delim '[X]?\"' '(\"|.$)'
string delim '[X]?\'' '(\'|.$)'
######################################
# numbers
######################################
number = '\<[+-]?(([[:digit:]]*\.)?[[:digit:]]+([eE][+-]?[[:digit:]]+)?)\>'
######################################
#include "function.lang"
# no function definition
######################################
(e)andre-simon's Highlight 設定。
.v2.7 でテストしました。
.installで構成ファイルの場所はRegistryに登録されます。
.構成定義はandre-simonのhomepageを見て下さい。
ANSI 出力は ansigenerator.cppで以下のように固定されているようです。
("31","34"...の意味は後述(f)ANSIの定義を参照してください.)
カラーの変更は xesynw.cfg/xesynl.cfg の CMAP オプションで与えてください。
Bold,Italicなどの指定は出来ないようです(第一パラメータ"00")。
styleTagOpen.push_back(getOpenTag("00", "31")); //str
styleTagOpen.push_back(getOpenTag("00", "34"));//number
styleTagOpen.push_back(getOpenTag("00", "34"));//sl comment
styleTagOpen.push_back(getOpenTag("00", "34"));//ml comment
styleTagOpen.push_back(getOpenTag("00", "35"));//escapeChar
styleTagOpen.push_back(getOpenTag("00", "35"));//directive
styleTagOpen.push_back(getOpenTag("00", "31"));//directive string
styleTagOpen.push_back(getOpenTag("00", "30"));//linenum
styleTagOpen.push_back(getOpenTag("00", "00"));//symbol
getMatchingOpenTag(unsigned int styleID)
return (styleID)?getOpenTag("00", "32", ""):getOpenTag("00", "33");
(langDef Dir の .lang の $KW_LISTのクラスで "32" か "33" になる模様。)
(f)ANSIでの定義。
(注) WindowsではR(赤)とB(青)のBitの扱いがLinuxとはが入れ替わるようです。
style
NORMAL '0'
BOLD '1'
UNDERLINE '4'
BLINK '5'
REVERSE '7'
INVISIBLE '8'
foreground colors
30 black
31 red
32 green
33 yellow
34 blue
35 magenta
36 cyan
37 white
background colors
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
#endif //W32 || LNX