VSCode Clang-Format 插件使用教程
项目目录结构及介绍
VSCode Clang-Format 插件的目录结构如下:
vscode-clang-format/
├── CHANGELOG.md
├── README.md
├── package.json
├── src/
│ ├── clangFormat.ts
│ ├── extension.ts
│ └── test/
│ ├── runTest.ts
│ └── suite/
│ ├── extension.test.ts
│ └── index.ts
├── syntaxes/
│ └── clang-format.json
└── vscode.png
- CHANGELOG.md: 记录项目的更新日志。
- README.md: 项目的主要介绍文档。
- package.json: 项目的元数据文件,包含依赖、脚本等信息。
- src/: 源代码目录。
- clangFormat.ts: 主要功能实现文件。
- extension.ts: 插件入口文件。
- test/: 测试代码目录。
- runTest.ts: 测试运行文件。
- suite/: 测试套件目录。
- extension.test.ts: 插件测试文件。
- index.ts: 测试索引文件。
- syntaxes/: 语法定义目录。
- clang-format.json: Clang-Format 语法定义文件。
- vscode.png: 项目图标。
项目的启动文件介绍
项目的启动文件是 src/extension.ts
。这个文件是插件的入口点,负责初始化和注册插件的主要功能。以下是 extension.ts
的主要内容:
import * as vscode from 'vscode';
import { ClangFormatProvider } from './clangFormat';
export function activate(context: vscode.ExtensionContext) {
const provider = new ClangFormatProvider();
context.subscriptions.push(
vscode.languages.registerDocumentFormattingEditProvider('cpp', provider)
);
}
export function deactivate() {}
- activate: 插件激活时调用的函数,注册文档格式化提供者。
- deactivate: 插件停用时调用的函数。
项目的配置文件介绍
项目的配置文件主要是 package.json
。这个文件包含了插件的所有元数据和配置信息。以下是 package.json
的部分内容:
{
"name": "vscode-clang-format",
"displayName": "Clang-Format",
"description": "VS Code extension to format C/C++ code using Clang-Format.",
"version": "1.9.0",
"publisher": "xaverh",
"engines": {
"vscode": "^1.52.0"
},
"categories": [
"Formatters"
],
"activationEvents": [
"onLanguage:cpp",
"onLanguage:c"
],
"main": "./out/extension.js",
"contributes": {
"configuration": {
"type": "object",
"title": "Clang-Format configuration",
"properties": {
"clang-format.style": {
"type": "string",
"default": "file",
"description": "Clang-Format style to use."
},
"clang-format.executable": {
"type": "string",
"default": "clang-format",
"description": "Path to the clang-format executable."
}
}
}
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile && npm run lint",
"lint": "eslint src --ext ts",
"test": "node ./out/test/runTest.js"
},
"devDependencies": {
"@types/vscode": "^1.52.0",
"@types/glob": "^7.1.3",
"@types/mocha": "^8.2.0",
"@types/node": "^12.11.7",
"eslint":