**2024/11/30
.シンタックスハイライト
シンタックスハイライトとはキーワード、コメントなどを色を変えて表示する機能です。
xe のシンタックスハイライトは André Simon のHighlightかまたはGNU source-highlight を利用します
設定は ::xesynw.cfg(Windows) / ::xesynl.cfg(Linux) で行います
GNU source-highlighの場合(configファイルでSHCMD=で指定)
source-highlight(Linux版) の導入が必要です。
例えば ubuntu の場合 "sudo apt-get install source-highlight"
--data-dir は /usr/share/source-highlight です
Window では binary はメンテナンスされておらず導入のハードルが高いので
次の André Simon さんの Highlightが使いやすいでしょう
André Simon さんの Highlightの場合(configファイルでSHCMDA=で指定)
André Simon さんの ホームページから導入してください。
commandline プログラムのみ使用するので、Linux版ではgui版の make は失敗してもかまいません。
尚、Windows版は github の sample デレクトリーに xe に必要な範囲を zip して入れてあります。
Windows版は Dataディレクトリーは省略値で exe のある場所のようです。
ハイライターのANSI-escタイプの出力をパイプで受け取り解析しその出力をxeが表示します。
escタイプの出力にはカラーとフォントスタイル情報を指定するANSI ESC シーケンスコードが含まれています。
(元のソースにescコードが含まれていると正しく表示できません。)
(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)、André Simon's Highlight の設定については後述-(e).
ANSI ESC シーケンスについては後述-(f)を参照。
設定ファイルのエラーを示すメッセージが出たとき、修正後 "SYN RESET" で再ロードできます
SHCMD= :source-highlight 実行コマンド。
Windows で bat ファイル を使うときは $* で xe からのパラメータを受けてください
Linux で shell を使うときは $@ で xe からのパラメータを受けてください
又、標準出力/標準エラーへの出力は避けてください、"Invalid Index file" 等のエラーメッセジが出ます。
SHCMDA= :André SimonのHighlightを実行します。
パスがスペースを含む場合は次のように指定してください
SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
Windows で bat ファイル を使うときは $* で xe からのパラメータを受けてください
Linux で shell を使うときは $@ で xe からのパラメータを受けてください
又、標準出力/標準エラーへの出力は避けてください、"Invalid Index file" 等のエラーメッセジが出ます。
ENTER = :Enterキー入力をシンタックスの再評価のトリガーとする閾値をファイルの行数で指定。
ファイルを開く時行数がここでの指定以内の場合、Enerキー入力が更新行の再評価のトリガーになります。
OPEN=y のとき、又、ファイルを開いた後ではSYNコマンド(Ctrl+s)で SYN ON であるときにのみトリガーになります。
"0" は Enter キーでは 更新行の再評価はしません。
"-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=0" とした場合、
SYN コマンドで再評価することになりますが、
その言語は本来マルチラインシンタックスをもってはいるが "SYN ON" の応答を早くしたい場合使用します。
この設定にをした場合でも "SYN ALL" でファイル全体の再評価をすることができます。
UPDONLY_EXT=default とすると全てのファイルが対象となる。
例) UPDONLY_EXT=cbl
PATH_EXT_xxx=:適切な拡張子を持たないファイルのためにディレクトリパス名で拡張子を与えます。
xxx(最大7桁まで)に拡張子を指定。1行1経路指定です。
指定されたディレクトリー内のファイルはその本来の拡張子にかかわらず
xxxの拡張子を持つものとされます。
例) PATH_EXT_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のパレット番号とせずマッピングを換えるときに指定。
André 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に知らせます。
"0", "1":bold, "4":underline 以外を指定してください。
省略値は"5":blinkです。省略値をイタリックとするにはesc.outlangを変更してください。
André Simon's Highlightはフォントスタイル指定できません。
C_BOLD = :コンソール版でのフォントスタイル=1(Bold)の扱い。 Windows 版のみ。
"H":高輝度(省略値), "N":無視、"R":反転。
C_UNDERLINE= :コンソール版でのフォントスタイル=4(Underline)の扱い。
"H":高輝度, "N":無視(省略値)、"R":反転。
C_ITALIC = :コンソール版でのフォントスタイル=5(但し、ITALIC_ESCを指定していればその値)の扱い。
"H":高輝度, "N":無視(省略値)。、"R":反転
G_BOLD = :GUI版(wxe,gxe)でのフォントスタイル=1(Bold)の扱い。
"H":高輝度, "Y":Bold, "N":無視、"R":反転。省略値は"YH"。
G_UNDERLINE= :GUI版(wxe)でのフォントスタイル=4(Underline)の扱い。gxeではサポートされません。
"H":高輝度, "Y":Undrerline, "N":無視、"R":反転。省略値は"Y"。
G_ITALIC = :GUI版(wxe,gxe)でのフォントスタイル=5(但し、ITALIC_ESCを指定していればその値)の扱い。
"H":高輝度, "Y":Italic, "N":無視、"R":反転。省略値は"Y"。
(c)サンプルファイル。
######################################################################################
# xesynw.cfg(Win)/xesynl.cfg(Linux)
# ==syntax highlight configuration==
#
### execution
#
# select highight command from SHCMD or SHCMDA
# SHCMD= :Specify source-highlight command
# e.g. SHCMD = "source-highlight"
# SHCMDA= :Specify André Simon's Highlight command
# e.g. SHCMDA= '""w:\highlight.dir\hl64.exe"" -q --out-format=ansi'
# ENTER = :File line count at open to re-evaluate updated lines by Enter key when SYN ON..
# 0 :Do not re-evaluate by Enter key. -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.
# e.g. OPEN_EXT=c cpp h hpp
# UPDONLY_EXT :Lists the extensions for language types that limit reevaluation by the "SYN ON" (Ctrl+s) to updated lines only.
# e.g. UPDONLY_EXT=cob
# PATH_EXT_xxx=:Gives an extension in the directory path name for files that do not have a proper extension.
# e.g. PATH_EXT_cob=d:\src\cobs
### color
# BG= :Palette number of background color. Check the color of each palette number on the 0.0 screen.
# Numbers are from "0" to "15" (Windows)/"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.
# e.g. 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)
# e.g. 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 "0","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, "R":Reverse. Default is "H".
# C_UNDERLINE= :treatment of font style:4(UNDERLINE) for console version xe. Not supported for Linux version.
# "H":HighIntensity, "N":Ignore, "R":Reverse. 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, "R":Reverse. Default is "N".
# G_BOLD = :treatment of font style:1(BOLD) for GUI version xe(wxe,gxe)
# "H":HighIntensity, "Y":Bold, "R":Reverse, "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, "R":Reverse, "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, "R":Reverse, "N":Ignore. Default is "Y".
#####################################################################
### sample ###########################
#####################################################################
#Linux
#SHCMD = "source-highlight"
#Windows
SHCMDA= '""w:\highlight-4.4-x64\highlight.exe"" -q --out-format=ansi'
#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
#RGB4 = 80f020
#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 v3.1.8 では COBOL も対応されています。
拡張子と lang を対応させるためには lang.map を確認してください
.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 とした場合次のような行を追加します。
cob = cobol.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)を参照してください.
(e)André Simon's Highlight 設定。
.v2.7 でテストしました。
.installで構成ファイルの場所はRegistryに登録されます。
.構成定義は André 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