Prism 会识别代码中的标记,然后再使用 CSS 设置样式以生成语法高亮显示。此页面将概括介绍标准标记和相应的示例。
在定义新语言时,您需要为每种“类型”的代码提供标记名称,例如关键字和运算符,以便 Prism 主题可以相应地分配颜色(和其他样式)。Prism 主题(官方和非官方)只会保证对这些标准标记的覆盖,因此,建议利用以下标准标记,以确保代码会高亮显示。
通用 | |
---|---|
关键字 |
预定义且保留的字词。
|
内建 |
开箱即用的函数/方法/类/类型。
|
类名 |
类、接口、特质或类型的名称。
|
函数 |
函数或方法的名称。
|
布尔值 |
True 和 false,以及类似概念(例如 yes 和 no)成对使用。
|
数字 |
数字值,无论进制和顺序,以及无论实数或虚数。
|
字符串 |
文字,包括数字和符号,甚至可能是更多的特殊字符。
|
字符 |
该语言强制要求只能包含单个字符的字符串。
|
符号 |
一些语言中的原始数据类型,可被认为是标识符。
|
正则表达式 |
正则表达式。
|
网址 |
指向其他页面或资源的链接。
|
运算符 |
表示动作或过程的符号,无论它是数学运算、逻辑运算等等。
|
变量 |
变量的名称。此标记旨在谨慎使用。它通常用于特殊变量(例如,Less 或 Bash),不用于命令式和过程化编程语言中的一般变量(例如,C、JavaScript、Python)。
|
常量 |
常量的名称。
|
属性 |
对象的属性/特征或映射键。
|
标点符号 |
标点符号,例如括号、圆括号、逗号等等。
|
重要 |
任何重要且需要特别高亮显示的内容。
|
注释 |
代码注释。
|
标记语言 | |
标记 |
标记标记(例如,HTML 和 XML 标记)。
|
属性-名称 、属性-值 |
有点像标记标记的属性及其值/参数。
|
名称空间 |
用于在 XML 文档中提供唯一命名的元素和属性。在标记语言之外,它用于标记标识符的包/名称空间部分。
|
序言 |
XML 文档的第一部分。
|
文档类型 |
文档类型声明,特定于标记语言。
|
CDATA |
字符数据,特定于标记语言。
|
实体 |
在标记语言中显示保留字符使用的代码。
|
文档标记语言 | |
粗体 |
粗体文本。主要出现在文档标记语言中。
|
斜体 |
文本以斜体显示。在文档标记语言中很常见。
|
样式表 | |
atrule |
样式表中使用 @ 规则(语句)。
|
选择器 |
用于识别或从组中选择操作对向的代码,例如样式表中 HTML 元素的名称。
|
Diff | |
inserted 、deleted |
添加或修改行和删除行,主要用于差异比较。总体而言,也表示某种内容分别增加和减少/移除。
|
除以上标准标记外,Prism 还有一种标记,用于标记嵌入到其他语言中的语言,比如 HTML 中的 CSS、HTML 中的 JS、Shell 会话中的 Bash 和 JS 中的 CSS,这样 Prism 的主题可以更加准确地突出嵌入语言中的标记。所有嵌入语言均用其自己的特殊标记包装,其中包含一个 CSS 类 language-xxxx
,该类对应于嵌入语言。
打开浏览器的开发者工具并查看下面的示例以实时观察!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>I can haz embedded CSS and JS</title>
<style>
@media print {
p { color: red !important; }
}
</style>
</head>
<body>
<h1>I can haz embedded CSS and JS</h1>
<script>
if (true) {
console.log('foo');
}
</script>
</body>
</html>
有时,一种语言可能会使用特定名称表示特定代码片段,但该名称并非 Prism 的标准标记名称,比如 function-defintion
。由于 function-definition
不是标准标记,因此可以把它用语义类似的标准标记(比如 function
)别名,这样可确保 Prism 的主题突出显示它。请看下面的示例
fn main() {
println!("Hello World");
another_function();
}