语法加亮分支位于配置-编辑器显示之下,允许用户配置语法加亮选项:
语法加亮可以识别预定词语,并用不同颜色显示它们。该功能对于程序员来说尤其有用,并且对那些想用不同颜色显示文档中词语的用户也非常有用。
提供二十种语言或可识别的词语集支持。下列词语组的每个词语集都可以配置为不同的颜色:
普通文本(无法识别的词语)
出现在注释行或块注释中的词语
块注释的代用集
字符串
数值(必须以数字(0-9)开头)
最多八组不同的可识别词语
配置对话框允许选择用于不同语言和颜色组的颜色。同时也允许用户指定用于加亮的“词语文件”的位置。
可以任意设置前景/文本颜色和背景的颜色组。默认情况下,背景使用显示普通文本时指定的背景(自动背景颜色被选中)。只有在未选中的情况下才能激活背景颜色。
可以点击文本描述旁边的彩色框更改每种颜色。当点击时,将出现一个允许选择新颜色的对话框。
另外,对每种颜色组(普通文本除外)都有各种粗体、斜体和下划线的字体样式。每个颜色组均可以单独选择。某些设置了下划线的字体可能无法总是正确显示,而对于粗体,非固定宽度字体的间距也可能不正确。
自动更正关键字复选框用来启用或禁用自动更正功能。
注意 - 加亮功能是通过文件扩展名决定的(详情如下)。文件扩展名修改必须在相应语言中的“词语文件”中定义。
用户可以如下配置预定义词语:
UltraEdit 读取一个配置文件(默认文件是“WORDFILE.TXT”),来配置语法加亮。每次编辑器启动时读取该文件。该文件的大小不能超过 372KB。该文件语法如下所示:
语言定义
用 /Ln 指定的词语集或语言,这里的 n 是 1 到 20 之间的值。它必须位于行首。语言的描述或名字可以直接在 /Ln 后面的引号中指定。当设置语言颜色时,则显示该描述(如果有)。描述应该不大于 24 个字符。
行注释
用于以字符串“Line Comment = ”及其后的注释字符指定行注释的注释字符。允许五个字符,如果小于五个字符,那么最后一个字符必须后接一个空格。
第二套行注释可以用字符串“Line Comment Alt = ”及其后的注释字符指定。允许五个字符,如果小于五个字符,那么最后一个字符必须后接一个空格。
在某些情况下,可能需要以一个空格作为行注释的一部分,可以用另外一个方法来描述行注释。这种可选的方法是,用户以下列语法指定使用的字符数:
"Line Comment Num = xCC "
这里的 x 用来指定字符数 (1 到 5),直接跟随其后的字符用于行注释,在上面的示例中,x 应该是 3,行注释应该是“CC ”(请注意 CC 后面的空格)。
此外,有时需要将限定词用于行注释,这样注释仅在某列出现时有效,或在某些字符之后有效(当然,更多情况下如果跟随在某些字符之后,它们常常是无效的)。为能够达到此目的,这里提供两个额外的行注释命令:
"Line Comment Preceding Chars = […]"
and
"Line Comment Valid Columns = [1-7,10]"
“行注释前导字符”(Line Comment Preceding Chars)的默认值为所有字符都有效。因此,该项目将包括那些在代字号后面无效的字符,如…[~a-z]中一样。这表明该注释如果紧跟字符范围 a-z 之内则该注释无效。在方括号之间的任何符号都有效。
“行注释有效列”(Line Comment Valid Columns)是当其未定义时所有的列都有效。如果定义了它,则只有指定的行才有效。可以有最多 10 个列范围,或以逗号分隔的指定列,如…[1-7, 10] 中一样。这表明注释符号在列 1 到 7,或在列 10 都有效。
块注释
用于块注释的字符也可以配置(即 /* … */ 表示 ‘C’)。它们的格式为“Block Comment On = ”和“Block Comment Off = ”,每种格式后接最多 19 个定义注释标志符的字符。为与先前版本兼容,将 ‘/*’ 和 ‘*/’ 用于以 ‘.C’ 作为扩展名之一的文件类型。它可以被覆盖。块注释的第一个字符可以为空格。
如果定义了“Block Comment On = ”而未定义“Block Comment Off = ”,则注释将在行尾停止。它有效地实现块注释也能用于行注释。
此外,可以为需要的语言定义另一套块注释。这对于 ASP 尤其有用,可以在为 ASP 块添加高亮显示之外允许保持 HTML 注释。
另一套块注释的格式为“Block Comment On Alt = ”和“Block Comment Off Alt = ”,每种格式后接最多 19 个定义注释标志符的字符。块注释的第一个字符可以为空格。
如果定义了“Block Comment On Alt”而未定义“Block Comment Off Alt”,则注释将在行尾停止。它有效地实现块注释也能用于行注释。
UltraEdit/UEStudio 默认情况下会在遇到单个块注释结尾字符串时结束任何块注释。 要使 UltraEdit/UEStudio 将所有块注释开始字符串与所有块注释结束字符串确切匹配,需要指定内嵌块注释命令。 通过添加 NestBlockComments 命令到语言定义行(即 /L3"HTML" NestBlockComments ...)来实现。
文件扩展名/类型
语法加亮取决于文件名或扩展名。更常见的是使用扩展名,而指定扩展名用于该语言时应使用以下字符串:"File Extensions = " 且每个扩展名以空格分开。 在此指定的文件扩展名不区分大小写。
文件扩展名是文件名中最后一个点之后的内容。 “File Extensions = ”声明之后可以接多达 97 B 的内容。 如果在此指定的一系列文件扩展名超过 97 B,则无法解析。
用户可以将指定文件扩展名的最后替换为 "*",从而指定语言为语法加亮的默认设置。 该设置也将用于高亮显示未保存的文件或没有指定扩展名保存的文件的文件类型。
要指定一个文件名(而非文件扩展名)用于确定语言,应该使用以下字符串:"File Names = " 且每个名称以空格分开。 必须包括扩展名,即:"File Names = ThisFileName.xml" “File Names = ”声明之后可以接多达 125 B 的内容。
文件名/文件扩展名注意事项
在同一个词语文件中使用文件名和文件扩展名选项需要注意以下事项:
1. 文件名选项不能指定包含空格的名称。
2. 文件名选项不能与文件扩展名选项组合使用。
3. 如果使用文件名选项定义了一种语言,使用文件扩展名选项定义相同词语文件中的另一种语言,且两个定义有重叠部分,则使用文件名选项定义的语言必须具备较少的语言数量,例如:
示例 1 - 无法工作:
/L6"XML General" XML_LANG Noquote ...File Extensions = XML XUL XSD XSL XSLT
/L12"XML Special" XML_LANG Noquote ...File Names = ThisIsJustAFile.xml
示例 2 - 可以工作:
/L6"XML Special" XML_LANG Noquote ...File Names = ThisIsJustAFile.xml
/L12"XML General" XML_LANG Noquote ...File Extensions = XML XUL XSD XSL XSLT
颜色选区
指定颜色代码可以通过添加一行,并在该行首带有 /Cn,其中 n 是 1 到 8 的颜色索引。该区段的描述或名称可以紧跟 /Cn 之后在引号中指定。如果有此描述,则在设置该语言的颜色时将显示此描述。描述可以多达 24 个字符。
所有指定的信息保持有效,直到用新命令信息覆盖。
下面的示例指定了第一个语言用于带有 'C', 'CPP', 'H' 或 'HPP' 的文件。这些词语使用的颜色为第一个可选的颜色,且注释字符为 //。
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ File Extensions = CPPC H HPP
/C1
auto
break
case char const continue chr$
default do double
大小写区分
如果该语言不区分大小写,可以在命令行添加关键字“Nocase”,即:
/L1 Line Comment = // Nocase File Extensions = CPPC H HPP
字符串
使用很多编程语言时,单引号和双引号之内的字符视为文字字符串,词语和注释识别应予忽略。这是 UltraEdit 的默认行为。有些语言(如 HTML 等)不希望此类行为。为帮助此类语言,可以在命令行添加关键字“Noquote”来覆盖默认行为,即:
/L1 Noquote File Extensions = HTM
UltraEdit 现在支持可配置的字符用于引号字符串。默认用于字符串的字符时单引号 (') 和双引号 (")。它们可以用关键字 "String Chars = " 后接最多两个字符来覆盖。仅当需要使用不同于默认的符号时才需要此操作。如果,例如希望对字符串仅使用双引号时,则可以使用类似下面的行:
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ String Chars = " File Extensions = CPPC H HPP
请注意“String Chars”部分。
此外,如果定义的字符串有两个字符(或使用默认)且希望对每个字符串类型使用不同的颜色,即可用某一颜色组在一行里自行包含该字符(即:双引号)。这将覆盖由该字符包围的字符串使用的可配置颜色。
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ String Chars = '" File Extensions = CPPC H HPP
/C1
auto
break
"
…
上面的示例中,所有以双引号 (") 包围的字符串将使用颜色组 C1 着色,而以 (') 包围的字符串将为字符串使用默认颜色。
换码符
在很多语言里有一个专门指定的字符用来引用“换码符”。它用于覆盖正常的字符串字符(及其它字符)。如果某字符串定义为自身包含通常用于定义字符串的引号字符,则语法加亮将该引号解释为字符串的结束。如果该引号符以“换码符”引导,则该引号符将被正确处理为字符串的一部分,而非其尾部。
换码符定义如下:
/L1"C/C++" Escape Char = \ …
在此例子里,换码符定义为反斜线。
关键字
请注意所有以相同字符开头的词语可能都在同一行或分布在多行里,而如果它们分布在多行,必须一个跟着另外一个,中间没有空行或其它行。
如果该语言区分大小写,字母“A”与“a”不同,且以“A”开头的单词必须与“a”开头的词在不同的行。如果该语言不区分大小写,以“A”开头的单词必须与“a”开头的词在相同的行。
以子字符串开头的关键字
在一些语言里会出现希望加亮以特定子字符串开头的关键字,而完整的单词未知。UltraEdit 提供的能力可以定义子字符串,这些子字符串用于确定单词是否应加亮。如果是,它将相应地加亮。
子字符串应定义为与任何其它关键字集相同,而包含子字符串的行应以“** ”开头且所有子字符串应在同一行,如:
** aaa bbb
以上示例将加亮任何以“aaa”或“bbb”开头的词。
以 '/' 开头的词
因为 UltraEdit 使用 '/' 作为命令字符,要加亮的字符需要特殊处理。要加亮以 '/' 开头的词,该行应以 '// ' 开头并后接关键字,如:
// /我的关键字 /另一个关键字
针对 HTML
HTML 在很大程度上与其它语言不同,为更好地帮助用 UltraEdit 编辑 HTML 文件,添加了 "HTML_LANG" 关键字。如果有这个关键字,特殊字符 '<' 和 '/' 可以按需要置于任何关键字之前,无需所有带特殊('<' 和 '/')字符的关键字都在同一行。这种情况下,通常要求以相同字母(a-z 等)开头的词必须在同一行或连续的行里。
以下示例为 HTML 的词语文件片段:
/L3"HTML" Line Comment = // HTML_LANG Block Comment On = <!-- Block Comment Off = --> File Extensions = HTM HTML
/C1
<A </A> <ADDRESS> </ADDRESS> <APPLET </APPLET>
<B> </B> <BASE <BASEFONT <BGSOUND <BIG> </BIG> <BLINK> </BLINK> <BLOCKQUOTE> </BLOCKQUOTE>
<CAPTION> </CAPTION> <CENTER> </CENTER> <CITE> </CITE> <CODE> </CODE>
以后将为 HTML 提供其它的增强。
针对 FORTRAN
FORTRAN 在注释方面与其它语言有很大不同,为更好地帮助用 UltraEdit 编辑 FORTRAN 文件,添加了关键字“FORTRAN_LANG”。如果有这个关键字,UltraEdit 将第一列里的 'C', 'c' 或 '*' 视为行注释指示符,而该行的其它部分加亮显示为已注释掉。
以下示例为 FORTRAN 的词语文件片段:
/L4"Fortran" FORTRAN_LANG File Extensions = FOR FTN
/C1
…
注意:也可以使用任何正常注释标记(行注释、块注释)。
针对 LaTex/Tex
TeX/LaTeX 与其它语言有很大不同,每个命令以 '\' 开头。为更好地帮助用 UltraEdit 编辑 TeX/LaTeX 文件,添加了关键字“LATEX_LANG”。如果有这个关键字,UltraEdit 将对语法加亮有特殊的处理,以允许用 '\' 正确地处理和加亮词语,以及连续的词语。
这还允许识别的词语置于词语文件中,而无法所有词语在同一行。如果词语以 '\' 开头,则第二个字符用来确定该词语应该在哪一行。所有以 '\a' 开头的词应该与其它以 '\a' 或 'a' 开头的词在同一行。同样地,所有以 '\b' 开头的词应该与其它以 '\b' 或 'b' 开头的词在同一行,但与那些以 '\a' 等开头的词在不同的行。
以下示例为 TeX/LaTeX 的词语文件片段:
/L4"TeX/LaTeX" LATEX_LANG File Extensions = TEX LATEX
/C1
…
注意:也可以使用任何正常注释标记(行注释、块注释)。
分界符
以便其匹配特定语言的词汇集。除了 HTML 中的 '<' 和 '>' 字符,作为定界符的字符不能也是词语的一部分;即,无法将 @ 符号视为单词的一部分,而它是词语间的定界符。(以后的增强可能允许这样)。
对于 4.1 以上版本,UltraEdit 允许用户配置定界符。为保障兼容性,如果用户不指定特定语言的定界符,则保留现有定界符。每种语言可能有自己的定界符集。如果正在使用默认,需要配置语言的定界符。
要指定定界符,请在词语文件里添加如下一个新行:
/Delimiters = ~!@$%^&*()_-+=|\/{}[]:;"'<> ,.?/
请注意这些定界符应包含空格和制表符,如果希望将它们视为定界符。该行必须以“/Delimiters =”开头。
可以分配定界符到颜色区段。如果有作为定界符的字符,例如 '+',且希望使用严格颜色组将其着色,则可以添加该字符到颜色区段下的自己的行,它将保留其识别为定界符,并以适当的颜色加亮显示。定界符可以包含在关键字的开始,并相应进行加亮,但不能包含于关键字当中。如果需要“复合”关键字,或包含两个区段之间定界符的关键字,则定界符将需要从“定界符”列表中删除,否则该关键字的两个部分将需要分别定义以正确加亮。
函数定义字符串
UltraEdit 允许用户在活动文档或全部方案文档中显示函数列表。对于不同语言,函数的定义可能不同,有必要允许它按照语言来配置。
这是通过修改“wordfile”并定义 UltraEdit 为每个语言使用的字符串来实现的。该字符串将被 UltraEdit 用作正则表达式搜索字符串以查找函数。
默认情况下,正则表达式字符串使用 UltraEdit 风格的正则表达式。如果需要可以使用兼容 Perl 的正则表达式用于函数字符串,需要添加以下内容:
/Regexp Type = Perl
现在每种语言可以定义多达六个函数字符串,允许指定更多函数/过程格式。
要指定函数字符串,请为特定语言添加类似下面的行:
/Function String = "%[a-zA-Z]*)"
或
/Function String 1 = "…"
…
/Function String 5 = "…"
要搜索的字符串必须使用引号。需要时,可以指定在函数列表里仅显示结果字符串的一部分。要这样做,请使用正则表达式下定义的带标记表达式,并将表达式中要显示于 "^(" 和 "^)" 之间的部分封闭起来,如:
/Function String = "%[a-zA-Z]+^(*^))"
该示例将忽略第一个词语并显示该行的其余部分。
缩进
UltraEdit 针对特定语言提供自动缩进,以缩进代码块或取消缩进代码块。
为缩进特定语言,请在特定语言区段下添加类似下面的行:
/Indent Strings = "{"
可以在括号里指定任何数量的词语(每个词语/字符串必须在独立的一组引号内 "")。如果缩进字符串出现在一行的任何地方,它将用于缩进(除非它出现在加引号的/注释的文本之内)。缩进是从前一行的缩进处开始的下一个制表站(如同按下了一个制表符键)。
为减少缩进特定语言,请在特定语言区段下添加类似下面的行:
/Unindent Strings = "}"
可以在括号里指定任何数量的词语(每个词语/字符串必须在独立的一组引号内 "")。如果缩进字符串出现在一行的任何地方,它将用于缩进(除非它出现在加引号的/注释的文本之内)。如果包含字符串的行缩进少于前一行则不会出现缩进,否则匹配的字符/词语将减少缩进到前一个制表站且新行缩进到同一点。
对于缩进某些注释掉的行或编译器指令,可能不需要重新缩进文件。可以通过指定不应缩进的行来避免。要这样做,请添加类似下面的行到词语文件里相应的语言区段:
/Ignore Strings SOL = "#" "//"
可以在括号里指定任何数量的词语(每个词语/字符串必须在独立的一组引号内 "")。为使词语匹配,必须使其成为行的第一个字符。如果某行与此匹配,则不会缩进它,而下一行的缩进将执行,好像该行不存在。
括号匹配
在词语文件里每种语言都有打开/关闭 BRACE 的字符串。 它扩展并增强了括号匹配命令在搜索菜单里的功能,以及在“语法加亮”对话框里启用的自动括号匹配。
要定义打开括号,请在特定语言区段下添加类似下面的行:
/Open Brace Strings = "{" "(" "["
或
/Open Brace Strings = "If" "For" "Select Case" "Else" "ElseIf"
要定义关闭括号,请在特定语言区段下添加类似下面的行:
/Close Brace Strings = "}" ")" "]"
或
/Close Brace Strings = "End If" "Next" "End Select" "End If" "ElseIf"
请注意:打开和关闭括号字符串必须在位置上匹配它们的列表,使其能按要求工作。如果 "{" 定义为第一个打开括号字符串,则 "}" 应定义为第一个关闭括号字符串。 这些字符串必须是唯一的字符串。 例如,“endcase”无法用于“casex”和“casez”的关闭括号。
如果未定义打开/关闭括号字符串,则 UltraEdit 在执行括号匹配时使用标准字符组,如在以前的版本中一样。
标记字符
有时可能希望加亮两个字符之间的所有字符。UltraEdit 提供“标记字符”,将 UltraEdit 高亮显示的字符串的开头和结束部分进行标记。在这两个字符之间的所有字符都被高亮显示。
为给特定语言定义标记字符,请在特定语言区段下添加类似下面的行:
/Marker Characters = "ab"
其中“a”是要高亮显示的字符串的第一个字符,而“b”是最后一个字符。请注意,一行内的所有字符将高亮显示,包括空格。如果该行为注释或字符串,它将被忽略。 标记字符可以使用字母,但不能使用空格(空格/制表符)。
此外,跨越定义多达 4 对字符以高亮显示其中内容,如:
/Marker Characters = "abcdefgh"
其中以 'a' 开始并以 'b' 结束的字符串高亮显示为以 'c' 开头并以 'd' 结尾的字符串等等。
加亮显示字符串的颜色是可配置的。要指定颜色,请在相应颜色区段下添加这两个字符,如同它们是一个词,类似 "ab"、"cd" 等等。
打开/关闭折叠字符串
UltraEdit 对打开和关闭折叠字符串有多种语言的默认值。如果在 Wordfile 内没有指定字符串,将使用默认值。否则,使用指定的字符串用于折叠。
/Open Fold Strings = "{"
/Close Fold Strings = "}"
忽略折叠字符串
在特定情况下,Fold 逻辑需要忽略包含字符串的某些行。 如果在源代码的一行中发现忽略折叠字符串,
(在行注释或块注释之外),则 fold 逻辑将忽略任何在该行打开或关闭折叠的字符串。 忽略折叠字符串选择没有提供
默认设置。
/Ignore Fold Strings = "Exit Function"
打开/关闭注释折叠字符串
UltraEdit 提供了仅在注释行中或注释块中识别的打开和关闭折叠字符串的方法。 打开和关闭注释折叠字符串没有提供默认设置。
/Open Comment Fold Strings = "#Region"
/Close Comment Fold Strings = "#End Region"
多行字符串
UltraEdit 对多种语言的多行字符串的高亮显示功能提供默认设置。 如果在 wordfile 中没有指定字符串,则使用默认设置。 否则,将以下其中一个字符串添加到语言定义行(即 /L8 PHP ...中)
EnableMLS
DisableMLS
字符串字母前缀
UltraEdit 支持通过在语言定义行指定字符串前缀字符来指定字符串字母格式。 例如,在 C# .NET 2.0 中,字符串字母前缀可以定义如下:
String Literal Prefix = @
在此情况下,字符串字母之前的 @ 表示反斜线不是真正用于输入路径字母的转义字符。 为了说明,一下两种声明是等同的:
"c:\\data\\"
@"c:\data\"
@"..." 中唯一特殊的字符为 ",如果要内嵌只需重复即可。
语言标记
UltraEdit 已改进了句法高亮显示,现在它可以在同一文档内支持多种语言。这是针对 HTML 类型文件的。为实现此功能,我们添加了额外的语言指示器,需要将其添加到 wordfile.txt 文件,以表示包括在另一种语言中的语言类型。我们的默认 wordfile 文件已具有这些修改。
例如:
如果一个 HTML 文件包含 PHP,那么该句法高亮显示的区域必须存在于主 wordfile 文件内,且 PHP 区域应该在定义行内包含:PHP_LANG
明确的语言标记已被添加到了默认 wordfile 内支持以下语言:
C_LANG // C/C++
COBOL_LANG // Cobol
FORTRAN_LANG // Fortran
PASCAL_LANG // Pascal
PERL_LANG // Perl
PLB_LANG // Plb
VB_LANG // Visual Basic
VBSCRIPT_LANG // Vb Script
ASP_LANG // ASP
CSHARP_LANG // C Sharp
CSS_LANG // CSS
LATEX_LANG // TeX / LaTeX
HTML_LANG // HTML
JAVA_LANG // Java
JSCRIPT_LANG // Javascript
ECMA_LANG // Ecma / Ecmascript
PHP_LANG // PHP
MATLAB_LANG // MATLAB
PUREBASIC_LANG // PureBasic
PYTHON_LANG // Python
SQL_LANG // SQL
XML_LANG // XML
XSL_LANG // XSL
MASM_LANG // Microsoft Assembler
AASM_LANG // AT&T Assembler
NASM_LANG // Netwide Assembler
目前,UltraEdit 用上述语言标记在同一文档内正确地高亮显示多语言。未来 UltraEdit 可能进一步在 wordfile 内使用这些语言标记。
注意:注意: 如果 wordfile 文件包含多处 HTML_LANG 语言标记,则必须进行改正,否则某些语言可能无法正确地高亮显示。UltraEdit 在同一 wordfile 内只允许语言标记(即: C_LANG, COBOL_LANG, HTML_LANG)出现一次。
下列文件扩展名被移动到默认 wordfile 的 HTML 区域:php, asp, 和 jsp。这是为了在文档的外部语言级上帮助改正 HTML 高亮显示,即使在该文件内未指定任何 <HTML> 语言标记。文件的所有 php, asp, 和 jsp 区域都在语言开始和结束标记(例如<? 和 ?> )的基础上正确地得以高亮显示,然而“查看方式”将以 HTML 类型显示该文件。
智能提示支持
向 wordfile 中添加样式关键字以便标识智能提示支持的颜色组。 当前
样式元素的使用非常有限,但在将来的提高中会扩展其使用。 完整的样式元素列表如下:
STYLE_KEYWORD // Keyword
STYLE_FUNCTION // Function
STYLE_EXTENSION // Extensions
STYLE_IDENTIFIER // Identifier
STYLE_OPERATOR // Operator
STYLE_METHOD // Methods
STYLE_EVENT // Events
STYLE_STATEMENT // Statements
STYLE_TAG // Tag
STYLE_VARIABLE // Variable
STYLE_ATTRIBUTE // Attributes
STYLE_ELEMENT // Element
STYLE_COMMAND // Command
新文件高亮显示为
使用该功能的下拉菜单,用户可以从活动 wordfile 中定义的语言列表为语法加亮设置默认语言。 该语言将用来作为未保存文件的默认语言。
拼写检查
默认情况下,UltraEdit 和 UEStudio 将不会在语法加亮文件中执行“输入时拼写检查”。 要更改此设置并允许对语法加亮的文件实行“输入时拼写检查”,请将以下内容添加到 wordfile 的语言定义行(如 /L3"HTML" ...)中:
EnableSpellasYouType
相应的拼写检查选项也必须在配置中选中以便支持。
用户可以修改该文件。
转载于:https://www.cnblogs.com/xwall/archive/2010/04/09/1708500.html