代码拉取完成,页面将自动刷新
Add an include statement to the top of the file from anywhere
easyinclude.addInclude
: Adds an include statement to the current file#pragma once
(if present) if there are no other include statements present一些调整过的部分简要说明
// 包围计算
// 不存在包围时,使用 <>
// >say.h => <say.h>
// "say.h => "say.h"
// <say.h> => <say.h>
// "say.h" => "say.h"
if (value[0] !== '<' && value[0] !== '\"' && value[0] !== '>') {
value = `<${value}>`;
} else if (value[0] === '>') {
value = value.substring(1)
value = `<${value}>`;
} else if (value[0] === '"' && value[value.length -1] !== '"') {
value = `${value}"`;
}
// 获取一个有效的编辑器,可能具有焦点,否则不进行处理
// 获取全文,并使用正则查找一个即将插入的位置
// /[ \t]* 任何可能有空格的的开始
// #\s* 接着是 # 与可能包含任何空格的部分
// () 抓取一个匹配点
// 第一种匹配
// include\s 这个点开头为 include 与单个任意空白
// +[<\"] 追加可能的部分 < 或 "
// [^>\"]* 紧接着是 非 > 或 " 部分
// [>\"] 紧接着是 > 或 " 部分
// 第二种匹配
// \s* 任意空白
// pragma 紧接着是 pragma (所以这是一个关键点)
// \s* 任意空白
// once 紧接着是 once (所以这是一个关键点)
// \s* 任意空白
const editor = vscode.window.activeTextEditor;
if (editor) {
const text = editor.document.getText();
const regex = /[ \t]*#\s*(include\s+[<\"][^>\"]*[>\"]\s|\s*pragma\s*once\s)/g;g;
var match;
// 插入位置
// 一直接进行向下匹配,如果发现了没有了,这个点就是插入点
var insertOffset = 0;
do {
match = regex.exec(text);
if (match) { // 找到结果的搜索的索引
// 在索引的起始位置,计算索引的长度并向后移一位
insertOffset = match.index + match[0].length + 1;
}
} while (match);
editor.edit((editBuilder) => {
editBuilder.insert(
editor.document.positionAt(insertOffset),
`#include ${value}\n`)
});
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。