vscode extension插件開發(fā)(二)

常用的vscode開發(fā)與配置

1. vscode字體設(shè)置

let firstLetterDecoration = vscode.window.createTextEditorDecorationType({color: "#ff0000"});
let range = new vscode.Range(insertPosition, endInsertPosition);
editor.setDecorations(firstLetterDecoration, [range]);

2. CompletionItemProvider 輸入文件的提示內(nèi)容

class CppHoverProvider implements vscode.CompletionItemProvider{
        provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.CompletionItem[]{
            
            var completionItems:vscode.CompletionItem[] = [];
            var completionItem:vscode.CompletionItem = new vscode.CompletionItem("bb");
            completionItem.kind = vscode.CompletionItemKind.Snippet;
            completionItem.detail = "bde";
            completionItem.filterText = "bb";
            completionItem.insertText = "bb";
            completionItems.push(completionItem);
            return completionItems;
        }
        resolveCompletionItem(item: vscode.CompletionItem, token: vscode.CancellationToken): any{
            var completionItem1:vscode.CompletionItem = new vscode.CompletionItem("id");
            completionItem1.detail = "aaa";
            completionItem1.kind = vscode.CompletionItemKind.Snippet;
            completionItem1.filterText = "aa";
            completionItem1.insertText = "aa";
            return completionItem1;
        }
        dispose(){

        }
    }

3. 獲取當(dāng)前編輯文件信息

//文件名
vscode.window.activeTextEditor.document.fileName
//擴(kuò)展名
vscode.window.activeTextEditor.document.languageId
//uri
vscode.window.activeTextEditor.document.uri

4. 獲取當(dāng)前的workspace根目錄

vscode.workspace.rootPath

5. 顯示output輸出框

let outputChannel: vscode.OutputChannel; 
//創(chuàng)建output
outputChannel = vscode.window.createOutputChannel('outputname');
//打開并顯示output
outputChannel.show();
//清空output內(nèi)容
outputChannel.clear();
//寫入內(nèi)容到ouput中
let result = "ouput msg";
outputChannel.appendLine(result);

6. 顯示提示信息

顯示提示信息,包括showErrorMessage规个,showInformationMessage饱苟,showWarningMessage

vscode.window.showInformationMessage("Cpplint deactivated")
    interface CommandQuickPickItem extends vscode.QuickPickItem {
        command: () => Promise<void>;
    }

    let items: CommandQuickPickItem[] = [];
    items.push({ description: 'Runs the analyzer on the current file.', label: 'Analyze current file', command: runAnalysis });
    items.push({ description: 'Runs the analyzer on the entire workspace.', label: 'Analyze workspace', command: runAnalysisAllFiles });
    items.push({ description: 'Opens your web browser to the Cppcheck manual.', label: 'Read the manual', command: readTheManual });

    vscode.window.showQuickPick(items, { matchOnDetail: true, matchOnDescription: true }).then(selectedItem => {
        if (selectedItem && typeof selectedItem.command === 'function') {
            selectedItem.command();
        }
    });

其他顯示還有showOpenDialog,showInputBox,showSaveDialog源织,showTextDocument饿幅,showWorkspaceFolderPick
詳細(xì)可以參考:https://code.visualstudio.com/docs/extensionAPI/vscode-api

7. 獲取配置信息

let settings = vscode.WorkspaceConfiguration
//let settings = vscode.workspace.getConfiguration('cpplint');
let cpplintPath = settings.get('cpplintPath', null);

8. text文檔event監(jiān)聽與處理

主要包括onDidOpenTextDocument,onDidCloseTextDocument侨舆,onDidChangeTextDocument秒紧,onWillSaveTextDocument,onDidSaveTextDocument

//文件打開
vscode.workspace.onDidOpenTextDocument((() => doLint()).bind(this));
//文件保存
vscode.workspace.onDidSaveTextDocument((() => doLint()).bind(this));

9. 文檔打開以后側(cè)邊提示信息

let diagnosticCollection: vscode.DiagnosticCollection = vscode.languages.createDiagnosticCollection('cppcheck');

diagnosticCollection.clear();

let severity = "";
let message = "";
let level = vscode.DiagnosticSeverity.Information;

vscode.workspace.openTextDocument(fileName).then((doc: vscode.TextDocument) => {
    let diagnostics: vscode.Diagnostic[] = [];
    let d = new vscode.Diagnostic(r, `(${severity}) ${message}`, <vscode.DiagnosticSeverity>level);
    d.source = 'cppcheck';
    diagnostics.push(d);
    diagnosticCollection.set(doc.uri, diagnostics);
});

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挨下,一起剝皮案震驚了整個(gè)濱河市熔恢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌臭笆,老刑警劉巖叙淌,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愁铺,居然都是意外死亡鹰霍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門茵乱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂洒,“玉大人,你說我怎么就攤上這事瓶竭《缴祝” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵在验,是天一觀的道長玷氏。 經(jīng)常有香客問我,道長腋舌,這世上最難降的妖魔是什么盏触? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮块饺,結(jié)果婚禮上赞辩,老公的妹妹穿的比我還像新娘。我一直安慰自己授艰,他們只是感情好辨嗽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淮腾,像睡著了一般糟需。 火紅的嫁衣襯著肌膚如雪屉佳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天洲押,我揣著相機(jī)與錄音武花,去河邊找鬼。 笑死杈帐,一個(gè)胖子當(dāng)著我的面吹牛体箕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挑童,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼累铅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了站叼?” 一聲冷哼從身側(cè)響起娃兽,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎大年,沒想到半個(gè)月后换薄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翔试,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年轻要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垦缅。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冲泥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壁涎,到底是詐尸還是另有隱情凡恍,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布怔球,位于F島的核電站嚼酝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏竟坛。R本人自食惡果不足惜闽巩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望担汤。 院中可真熱鬧涎跨,春花似錦、人聲如沸崭歧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽率碾。三九已至叔营,卻和暖如春屋彪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绒尊。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工撼班, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垒酬。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像件炉,于是被迫代替她去往敵國和親勘究。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 最近公司要使用vscode作為開發(fā)工具斟冕,需要對vscode做一些定制功能口糕,比如snippet提示,內(nèi)容提示磕蛇,以及其...
    rill_閱讀 20,934評論 12 18
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理景描,服務(wù)發(fā)現(xiàn),斷路器秀撇,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 最近打算給xmake寫一些IDE和編輯器的集成插件超棺,發(fā)現(xiàn)vscode的編輯器插件比較容易上手的,就先研究了下vsc...
    waruqi閱讀 1,734評論 0 49
  • 天高云愁雁鳥重呵燕, 地深人密世事兇棠绘。 相于枕籍乎夢...
    樊辰閱讀 135評論 2 4
  • 喜歡你, 怕你知道再扭, 又怕你不知道氧苍。
    七月京城閱讀 231評論 0 2