这是一个为 Visual Studio Code 提供折言(origami-lang)语言支持的扩展插件。折言是一门创新性的融合型脚本语言,深度结合 PHP 的快速开发基因与 Go 的高效并发模型。
- 支持 origami 语言的所有关键字和语法结构
- 支持中文关键字高亮(函数、输出、类等)
- 支持字符串插值语法
"Hello {$name}"和"@{function()}" - 支持注解语法
@Controller、@Route等 - 支持类型声明和可空类型
?string
- 自动括号配对和闭合
- 智能缩进
- 代码折叠支持
- 注释快捷键支持
.zy- 折言脚本文件.cj- 折言代码文件
- 自动检测
zy-lsp命令,优先使用 stdio 方式 - 回退到 TCP 连接方式,确保兼容性
- 支持两种连接方式的自动切换
// 变量声明和类型
string $name = "Alice";
int $age = 25;
?string $nickname = null;
// 函数定义
function greet(string $name): string {
return "Hello {$name}!";
}
// 类定义
class User {
public string $name;
public function __construct(string $name) {
this->name = $name;
}
}// 使用 spawn 启动协程
spawn {
echo "异步执行";
};@Controller
@Route(prefix: "/api")
class ApiController {
@GetMapping(path: "/users")
public function getUsers() {
return "用户列表";
}
}$result = $array
->map(fn($x) => $x * 2)
->filter(fn($x) => $x > 10)
->reduce(fn($acc, $x) => $acc + $x, 0);- 在 VS Code 中打开扩展面板 (
Ctrl+Shift+X) - 搜索 "zy-lang" 或 "折言"
- 点击安装 "ZY Language Support" 扩展
在使用此扩展之前,你需要选择以下两种方式之一:
- 安装 zy-lsp 命令到系统 PATH
- 扩展会自动检测并使用 stdio 方式启动语言服务器
- 确保语言服务器在
localhost:8800端口运行 - 扩展会自动连接到此端口
# 安装 zy-lsp 命令到系统 PATH
# 扩展会自动检测并使用此命令启动语言服务器
# 无需任何参数# 启动语言服务器(示例命令)
origami-language-server --port 8800- 在 VS Code 中打开扩展面板 (Ctrl+Shift+X)
- 搜索 "Origami Language Support"
- 点击安装
- 创建
.zy或.cj文件 - 开始编写 origami 代码
- 享受语法高亮和代码提示
- 代码补全: 智能代码提示和自动完成
- 定义跳转: 快速跳转到函数和变量定义
- 悬停提示: 鼠标悬停查看符号信息
- 语法检查: 实时语法错误检测
可以在 VS Code 设置中配置语言服务器选项:
origami.languageServer.enabled: 启用/禁用语言服务器
扩展会按以下优先级选择连接方式:
- stdio 方式:如果检测到
zy-lsp命令,优先使用 stdio 方式 - TCP 方式:如果未检测到
zy-lsp命令,回退到 TCP 方式(localhost:8800)
如果连接失败,请检查:
zy-lsp命令是否已安装到系统 PATH- 命令是否有执行权限
- 查看 VS Code 开发者控制台的错误信息
- 语言服务器是否在
localhost:8800端口运行 - 防火墙是否阻止了连接
- 查看 VS Code 开发者控制台的错误信息
<?php
namespace App\Controller;
use Annotation\Route;
use Annotation\Controller;
@Controller
@Route(prefix: "/api/users")
class UserController {
@Inject(service: "UserService")
public $userService;
@GetMapping(path: "/list")
public function getUserList(): array {
return this->userService->getAllUsers();
}
// 支持中文关键字
函数 获取用户信息(int $id): ?User {
return this->userService->findById($id);
}
}
// 字符串插值
$message = "用户 {$user->name} 的年龄是 {$user->age}";
// 异步执行
spawn {
输出 "异步任务执行中...";
};# 克隆仓库
git clone https://github.com/your-username/origami-vscode-extension.git
# 安装依赖
npm install
# 编译
npm run compile
# 运行扩展
F5 (在 VS Code 中)欢迎提交 Issue 和 Pull Request 来改进这个扩展!
MIT License