首页/新闻资讯/正文详情

PRQL 语法高亮集成指南:为 KSyntaxHighlighting(Kate / KWrite / KDevelop)安装与定制 prql.xml

发布时间:2026/9/23 14:36:18 来源:云帆数科 栏目:资讯中心
PRQL 语法高亮集成指南:为 KSyntaxHighlighting(Kate / KWrite / KDevelop)安装与定制 prql.xml
PRQL 语法高亮集成指南为 KSyntaxHighlightingKate / KWrite / KDevelop安装与定制 prql.xml【免费下载链接】prqlPRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement项目地址: https://gitcode.com/gh_mirrors/pr/prql本文以 PRQL 仓库中 grammars/KSyntaxHighlighting/README.md 为核心深入讲解如何在基于 KSyntaxHighlighting 的编辑器Kate、KWrite、KDevelop中启用 PRQL 语法高亮从各平台安装路径、Flatpak/Snap 包的特殊处理到 prql.xml 内部的关键词分类、上下文规则与词法分析器的对应关系。读完本文你将能在自己的桌面环境中一键接入 PRQL 高亮并能读懂并维护这份语法定义文件。PRQL 与 KSyntaxHighlighting 的集成背景PRQLPipelined Relational Query Language是一种面向数据转换的现代语言旨在以管道式语法替代 SQL 的繁琐嵌套。为了让 PRQL 代码在各种编辑器与 IDE 中获得一致的着色体验仓库在grammars/目录下维护了多套语法定义grammars/README.md 对它们进行了索引覆盖 Ace、CotEditor、Lezer、GtkSourceView、nano、Raku、MonarchPlayground 所用、TextMate 等十余个生态。其中KSyntaxHighlighting 是 KDE 框架下的语法高亮组件被 Kate、KWrite、KDevelop 等 Qt 系编辑器广泛采用。PRQL 为它提供的定义文件即grammars/KSyntaxHighlighting/prql.xml由社区成员 vanillajonathan 贡献见 CHANGELOG.md 中 Add syntax highlight file for KSyntaxHighlighting 一条并在后续版本中持续与标准库同步如 Sync the KSyntaxHighlighting and book highlighters with the std lib。安装 prql.xml各平台的存放路径KSyntaxHighlighting 以用户级目录扫描语法文件因此安装的核心动作只有一个把 prql.xml 复制到对应平台的语法目录。原文给出的路径对照表如下系统环境目标路径本机用户Linux 原生安装$HOME/.local/share/org.kde.syntax-highlighting/syntax/Flatpak 打包应用$HOME/.var/app/PACKAGE_NAME/data/org.kde.syntax-highlighting/syntax/Snap 打包应用$HOME/snap/PACKAGE_NAME/current/.local/share/org.kde.syntax-highlighting/syntax/Windows%USERPROFILE%\AppData\Local\org.kde.syntax-highlighting\syntax\macOS$HOME/Library/Application Support/org.kde.syntax-highlighting/syntax/对于 Flatpak 与 SnapPACKAGE_NAME需替换为实际的应用包标识常见如org.kde.kate、org.kde.kwrite或org.kde.kdevelop。例如通过 Flatpak 安装的 Kate应复制到$HOME/.var/app/org.kde.kate/data/org.kde.syntax-highlighting/syntax/复制完成后重启编辑器或重新加载高亮配置打开任意.prql文件即可看到 PRQL 语法着色。prql.xml中通过extensions*.prql声明了文件扩展名关联因此新建的.prql文件会被自动识别为 PRQL 语言。解析 prql.xml一份自包含的 KSyntaxHighlighting 语法定义prql.xml是一份标准的 KSyntaxHighlighting XML 语法文件整体由language、highlighting与general三大部分组成。理解其结构既能帮助你排查高亮异常也为向其它语法文件迁移提供了模板。语言声明区language namePRQL version1 kateversion5.0 sectionDatabase extensions*.prql authorvanillajonathan licenseMITnamePRQL在编辑器语言选择器中显示的名称kateversion5.0要求 KSyntaxHighlighting 的最低版本sectionDatabase语言分类数据库类extensions*.prql关联的扩展名licenseMIT定义文件本身的许可证。关键词列表与词法分析器一一对应list定义了若干命名词表供上下文规则引用。这些词表并非随意罗列而是严格对齐 PRQL 编译器词法分析器lexer的保留词实现——prql.xml内注释明确说明“与prqlc/prqlc-parser/src/lexer/mod.rs中的keywordparser 保持同步”。PRQL lexer 中定义了唯一事实来源的保留词表见 lexer/mod.rspub const KEYWORDS: [str; 10] [ let, into, case, prql, type, module, internal, func, import, enum, ]; pub const RESERVED_LITERALS: [str; 3] [true, false, null];对应到prql.xml中则被细分为多个语义列表列表名内容说明importsmodule、import模块与导入关键字keywordscase、enum、func、internal、into、prql除let、type外的其余关键字后两者单独归类declarationstype、alias类型/别名声明letExpressionslet、inlet表达式及其in关键字builtinfuncsaggregate、derive、filter、from、group、join、select、sort、take、window十个内置管道变换specialvarsnull、this、that、true、false特殊变量与保留字面量typesbool、float、int、int8/16/32/64、text、date、time、timestamp基础数据类型modules_builtindate、math、text、prql内置模块名date_functionsnow、to_text、diff、truncdate 模块方法math_functionsabs、acos、asin、atan、ceil、cos、degrees、exp、floor、ln、log、log10、pi、pow、radians、round、sin、sqrt、tanmath 模块方法text_functionslower、upper、ltrim、rtrim、trim、length、extract、replace、starts_with、contains、ends_withtext 模块方法durationsmicroseconds、milliseconds、seconds、minutes、hours、days、weeks、months、years时间单位字面量其中durations与 lexer 中value_and_unit解析器支持的时间单位完全一致见 lexer/mod.rs 的unit分支例如2 days、3 hours中的单位部分会被正确着色而true、false、null在 lexer 中属于RESERVED_LITERALS而非 Keyword token因此与this、that一起归入specialvars并在itemData中被映射为常量样式dsConstant。上下文规则Normal 主上下文contexts中定义了 KSyntaxHighlighting 的状态机。入口为Normal上下文按顺序尝试以下规则#开头进入Hash comment行注释依次匹配types、specialvars、builtinfuncs、declarations、letExpressions、imports、keywords各词表进入Number与StringVariants两个子上下文用正则识别注解\{.*\}如{foo}用长正则匹配运算符与标点匹配十进制、十六进制与浮点数。运算符正则覆盖了 PRQL 的全部语法记号包括管道符|、范围..、整除//、幂**、逻辑/||、比较/!//以及箭头-等这些与 lexer 中的multi_char_operators见 lexer/mod.rs定义的ArrowThin、Eq、Ne、Gte、Lte、And、Or、DivInt、Pow等 token 一一对应。数字字面量进制、浮点与后缀错误检查PRQL 支持多种进制与浮点写法prql.xml通过Number → AssumeNumber → CheckSuffixError三个状态处理十六进制0xA1、二进制0b01、八进制0o71浮点1.1、1.、.1、1e3、1.1e3及带指数符号的变体十进制123、000并支持_数字分隔符词表通过digitPart 0-9*实体定义。CheckSuffixError会在数字后继续出现字母等字符时把其后缀标记为Error样式这与 lexer 中parse_number_with_base对非法数字的拒绝行为在语义上保持一致。字符串体系普通、f-、r-、s- 字符串PRQL 的字符串类型最为丰富prql.xml为每种变体都定义了单引号与双引号、单行与三引号共四组上下文如Single A-string、Triple Q-F-String等普通字符串A-string即 ASCII 字符串与双引号 Q-stringf-string插值字符串内部识别{{、}}转义花括号与{expr}插值区String Interpolation上下文会回落到Normal规则使插值内的代码同样被着色r-string原始字符串不处理转义仅识别反斜杠与引号的边界组合s-stringSQL 字符串同样支持插值是 PRQL 向 SQL 注入片段的机制。转义序列由stringescape上下文处理支持\\、\、\、\b、\f、\n、\r、\t、八进制\NNN、十六进制\xNN与 Unicode\u{1-6位十六进制}见文件头escapedHex/escapedHexUni实体。这与 lexer 中parse_escape_sequence的实现见 lexer/mod.rs逐项对应包括u{...}最多 6 位十六进制、x后恰好 2 位十六进制的约束。主题映射itemDatas 与默认样式itemDatas将上面所有高亮分类映射到 KSyntaxHighlighting 的默认主题样式defStyleNumitemData默认样式语义Keyword/ImportdsKeyword/dsImport关键字与导入OperatordsOperator运算符Data TypedsDataType类型名Builtin FunctiondsBuiltIn内置变换函数Special VariabledsConstantthis/that/true/false/nullFloat/Int/Hex/Octal/BinarydsFloat/dsDecVal/dsBaseN数字字面量CommentdsComment注释String/F-String/R-String/S-StringdsString/dsSpecialString/dsVerbatimString各类字符串String Char/String SubstitutiondsChar/dsSpecialChar转义字符与插值AnnotationdsAttribute{...}注解ErrordsError非法后缀所有 itemData 均关闭拼写检查spellCheckingfalse避免高亮对拼写校正的干扰。通用配置折叠、注释与大小写general中声明了三条全局行为folding indentationsensitive1启用基于缩进的代码折叠PRQL 以换行与缩进表达管道结构这一配置对长查询折叠非常有用单行注释以#开头与 lexer 的comment()解析器一致该解析器同时支持文档注释#!keywords casesensitive1关键字匹配区分大小写。从源码印证高亮定义为何这样划分将prql.xml与编译器源码对照可以得出几个有价值的结论let、type被单独放入declarations/letExpressions列表是因为它们在语法结构上承担声明职责着色上通常期望与普通关键字有所区分而其余关键字统一归入keywords两份清单合起来正好覆盖 lexer 的KEYWORDS常量let、into、case、prql、type、module、internal、func、import、enum见 lexer/mod.rs。builtinfuncs中的 10 个变换对应 PRQL 标准库的管道式变换详见 web/book/src/reference/syntax/keywords.md 对 transforms 的说明——它们本质是std命名空间下的普通函数并非语言关键字。语法文件为它们单独着色使其在查询流水线中一目了然。日期/时间字面量与注解的区分PRQL 中2022-01-01是日期字面量{...}是注解。lexer 在token()中特意让date_token()先于just()匹配见 lexer/mod.rs 的注释 Date literals must come before handling for annotationsprql.xml的注解正则限定为\{.*\}天然不会误吞日期字面量两者互不干扰。模块函数按模块拆分成三个词表date_functions、math_functions、text_functions配合FindMemberModuleMath/MemberModuleMath等上下文可在math.abs这样的模块访问中把方法名单独着色。验证与常见问题如何确认文件被加载复制prql.xml到对应目录后在 Kate 中打开任一.prql文件查看“工具 → 模式”或文档语言选择器应显示 PRQLDatabase 分类。Flatpak/Snap 无效最常见原因是PACKAGE_NAME未替换或路径大小写不一致请核对org.kde.syntax-highlighting目录是否真实存在应用首次运行后才会创建。Windows 路径使用%USERPROFILE%环境变量定位到AppData\Local下的同名目录。macOS注意Application Support中间的空格目录名为org.kde.syntax-highlighting/syntax。如果需要为其它 KSyntaxHighlighting 风格编辑器如 KDevelop 的调试高亮定制行为可直接基于 prql.xml 修改itemDatas中的样式映射或参照同仓库中 GtkSourceView/prql.lang、CotEditor/PRQL.yaml 等兄弟语法文件的做法它们与prql.xml共享同一套关键词来源都注释标明与 lexer 同步改动时可以互相参照。小结PRQL 的 KSyntaxHighlighting 支持由一份自包含的 prql.xml 提供按平台复制到指定目录即可在 Kate、KWrite、KDevelop 中启用。这份文件以 lexerprqlc/prqlc-parser/src/lexer/mod.rs的保留词表为唯一事实来源将关键字、内置变换、模块函数、类型、时间单位、各类字符串与数字字面量、注解与错误后缀完整映射到 KSyntaxHighlighting 的主题体系并支持缩进折叠与大小写敏感匹配。对于希望深度定制 PRQL 高亮体验的开发者读懂这份 XML 的状态机与词表结构即可在此基础上快速修改或移植。【免费下载链接】prqlPRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement项目地址: https://gitcode.com/gh_mirrors/pr/prql创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

OpenCV阴影检测与去除实战:基于YCbCr光照估计的完整方案
OpenCV阴影检测与去除实战:基于YCbCr光照估计的完整方案

简介:数字图像中的阴影常干扰特征提取、图像识别与分割等后续任务。这份基于Python实现的阴影检测与去除项目,面向图像处理学习者与课程设计人群,提供了一套可直接运行的完整方案:输入图片即可自动检测阴影区域,并针对… · 2026/9/23 14:36:18

别被教程骗了:从语法到项目,一秒搞定源码解析的避坑指南
别被教程骗了:从语法到项目,一秒搞定源码解析的避坑指南

别被教程骗了:从语法到项目,一秒搞定源码解析的避坑指南 刚学完 Python 语法,看着满屏的 print("Hello World")… · 2026/9/23 14:36:12

监控水晶头接法入门到精通:告别跑不通的接线代码
监控水晶头接法入门到精通:告别跑不通的接线代码

监控水晶头接法入门到精通:告别跑不通的接线代码 手里那套从网上抄来的接线逻辑,扔进项目里直接报错,变量名对不上,逻辑死循环,看着文档一头雾水。这种“复制来的代码跑不通不知道怎么调”的噩梦,是无数刚入行安防集成或弱电施工的兄弟都经历过的。别慌… · 2026/9/23 14:36:12

S4 HANA 1909常规配置指南:从OBYC到BP的关键设置与避坑实践
S4 HANA 1909常规配置指南:从OBYC到BP的关键设置与避坑实践

简介:面向SAP顾问、实施及运维人员的SAP常规配置详解PDF,基于S4 HANA 1909版本演示讲解。内容聚焦国家定义、计量单位、货币与维护日历四大基础设置,每个部分均给出IMG配置路径、功能说明与参数含义。例如国家设置涉及邮政编码、银行信息与日… · 2026/9/23 15:11:54

搞定www.net性能优化,面试不再被问倒
搞定www.net性能优化,面试不再被问倒

搞定www.net性能优化,面试不再被问倒 复制来的代码跑不通,是不是常让你抓狂?别急,先别急着删库跑路。在大厂面试中,关于 www.net 这类网络域名的处理,往往藏着性能优化的深坑。很多候选人只懂调用,不懂底层原理,一问就露馅。… · 2026/9/23 15:11:54

医院网络升级改造全攻略:从现状评估到架构优化实施
医院网络升级改造全攻略:从现状评估到架构优化实施

简介:面向医院信息科、网络运维及智慧医疗建设人员,这份资源以“医院信息化网络升级改造”为主题,系统梳理了医院网络从早期HIS系统到多子系统阶段的演进痛点,包括结构不合理、二层交换技术缺陷、VLAN无法划分导致的广播风暴、IP管… · 2026/9/23 15:11:47

Apache Druid 数据留存规则实战:基于 Retention Rules 配置数据的保留与丢弃
Apache Druid 数据留存规则实战:基于 Retention Rules 配置数据的保留与丢弃

Apache Druid 数据留存规则实战:基于 Retention Rules 配置数据的保留与丢弃 【免费下载链接】druid Apache Druid: a high performance real-time analytics database. 项目地址: https://gitcode.com/gh_mirrors/druid6/druid 本教程演示如何通过 Apache D… · 2026/9/23 15:11:41

使用 cy.autolock() 全局锁定 Cytoscape.js 节点:API 用法、底层实现与实战指南
使用 cy.autolock() 全局锁定 Cytoscape.js 节点:API 用法、底层实现与实战指南

使用 cy.autolock() 全局锁定 Cytoscape.js 节点:API 用法、底层实现与实战指南 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址: https://gitcode.com/gh_mirrors/cy/cytoscape.js 本文围绕 Cytosc… · 2026/9/23 15:11:34

Codex汉化完整指南:从安装配置到中文界面
Codex汉化完整指南:从安装配置到中文界面

第一次打开Codex的时候,我盯着终端里满屏的英文提示愣了好几秒。说实话,作为一个常年跟命令行打交道的人,英文界面本身不算什么大问题,真正让我烦躁的是提示信息里那些缩写和术语,经常要停下来想一下这个参数到底是干什… · 2026/9/23 15:11:33

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码