Liquid LSP Extension
这是一个为VS Code提供的Liquid模板语言支持插件,基于自定义的Liquid解析器实现。
功能特性
语法高亮
- 支持Liquid输出表达式
{{ }}
- 支持Liquid标签
{% %}
- 支持Liquid注释
{# #}
语法检查
- 实时语法错误检测
- 语法警告提示
- 基于递归下降解析器的精确错误定位
代码补全
- Liquid语法片段补全
- 常用标签和过滤器提示
- 智能上下文感知补全
语言支持
- 文件扩展名:
.liquid , .lqd
- 语言ID:
liquid
安装
- 克隆此仓库
- 运行
pnpm install 安装依赖
- 运行
npm run compile 编译插件
- 在VS Code中按F5启动调试模式
配置
插件支持以下配置选项:
liquidLsp.maxNumberOfProblems : 控制最大问题数量(默认:100)
liquidLsp.trace.server : 控制服务器通信跟踪级别(off/messages/verbose)
使用方法
- 打开一个
.liquid 文件
- 插件会自动激活并提供语法支持
- 输入
{{ 、{% 或{# 会触发代码补全
- 语法错误会在编辑器中实时显示
开发
项目结构
packages/vscode-extension/
├── client/ # VS Code客户端代码
├── server/ # LSP服务器代码
├── language-configuration.json # 语言配置
└── test.liquid # 测试文件
构建
npm run compile # 编译TypeScript
npm run watch # 监听文件变化
技术实现
- 解析器: 基于递归下降解析器的Liquid AST解析
- 错误容忍: 支持错误节点,即使有语法错误也能继续解析
- 位置信息: 所有AST节点都包含精确的位置信息
- LSP协议: 完整的Language Server Protocol实现
示例
{% if user %}
<h1>Welcome, {{ user.name | upcase }}!</h1>
{% for item in items %}
<p>{{ item.title }}</p>
{% endfor %}
{% else %}
<p>Please login</p>
{% endif %}
许可证
MIT License
| |