vscode-qt-for-python 项目教程
1. 项目的目录结构及介绍
vscode-qt-for-python/
├── .github/
│ └── workflows/
│ └── main.yml
├── images/
│ └── logo.png
├── src/
│ ├── extension.ts
│ ├── languageFeatures.ts
│ ├── qmlFormatter.ts
│ ├── qmlPreview.ts
│ ├── qmlSyntax.ts
│ └── utils.ts
├── package.json
├── README.md
└── CHANGELOG.md
- .github/workflows/main.yml: GitHub Actions 的工作流配置文件,用于自动化构建和发布。
- images/logo.png: 项目的 logo 图片。
- src/: 包含扩展的主要源代码文件。
- extension.ts: 扩展的主入口文件。
- languageFeatures.ts: 提供语言特性支持,如代码补全、悬停提示等。
- qmlFormatter.ts: QML 文件格式化功能。
- qmlPreview.ts: QML 文件预览功能。
- qmlSyntax.ts: QML 语法高亮功能。
- utils.ts: 工具函数和辅助类。
- package.json: 扩展的元数据和依赖管理文件。
- README.md: 项目的说明文档。
- CHANGELOG.md: 项目的更新日志。
2. 项目的启动文件介绍
项目的启动文件是 src/extension.ts
。这个文件是扩展的入口点,负责初始化扩展并注册各种功能。以下是 extension.ts
的主要内容:
import * as vscode from 'vscode';
import { activateLanguageFeatures } from './languageFeatures';
import { activateQmlFormatter } from './qmlFormatter';
import { activateQmlPreview } from './qmlPreview';
import { activateQmlSyntax } from './qmlSyntax';
export function activate(context: vscode.ExtensionContext) {
activateLanguageFeatures(context);
activateQmlFormatter(context);
activateQmlPreview(context);
activateQmlSyntax(context);
}
export function deactivate() {}
- activate: 扩展激活时调用的函数,初始化并注册所有功能模块。
- deactivate: 扩展停用时调用的函数,目前为空。
3. 项目的配置文件介绍
项目的配置文件是 package.json
。这个文件包含了扩展的所有元数据、依赖项和命令配置。以下是 package.json
的主要内容:
{
"name": "vscode-qt-for-python",
"displayName": "Qt for Python",
"description": "Visual Studio Code extension for PySide6 and PyQt6",
"version": "1.0.0",
"publisher": "seanwu1105",
"engines": {
"vscode": "^1.50.0"
},
"categories": [
"Programming Languages"
],
"activationEvents": [
"onLanguage:qml",
"onCommand:extension.previewQml"
],
"main": "./src/extension.ts",
"contributes": {
"commands": [
{
"command": "extension.previewQml",
"title": "Preview QML"
}
],
"languages": [
{
"id": "qml",
"extensions": [
".qml",
".qmldir"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "qml",
"scopeName": "source.qml",
"path": "./syntaxes/qml.tmLanguage.json"
}
]
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"postinstall": "node ./node_modules/vscode/bin/install",
"test": "npm run compile && node ./node_modules/vscode/bin/test