我正在尝试为将处理 PowerShell 的括号编写插件/扩展。好吧,看了之后发现CodeMirror也没有PowerShell模式,所以需要自己创建。我过得很糟糕,因为网上几乎没有关于我想做的事情的详细资源。
这是我的main.js
文件:
define(function (require, exports, module){
"use strict";
//Load Modules
var LanguageManager = brackets.getModule("language/LanguageManager"),
CodeMirror = brackets.getModule("thirdparty/CodeMirror2/lib/codemirror"),
PowerShellMode = require("powershell.js");
//Define the Language
LanguageManager.defineLanguage("powershell", {
name: "PowerShell",
mode: "powershell",
fileExtensions: ["ps1"],
lineComment: ["\/\/"]
});
function log(s) {
console.log("[PS-DevKit] " +s);
}
log("PowerShell module loaded!");
});
这是我的powershell.js
文件:
//CodeMirror Example
CodeMirror.defineMode("powershell", function() {
return{
startStat: function() {return {inString: false};},
token: function(stream, state){
//If a string starts here
if (!state.inString && stream.peek() == '"'){
stream.next(); //Skip quote
state.inString = true; //Update state
}
if (state.inString) {
if (stream.skipTo('"')){ //Quote found on this line
stream.next(); //Skip quote
state.inString=false; //Clear flag
} else {
stream.skipToEnd(); //Rest of line is string
}
return "red-text"; //Token style
} else {
stream.skipTo('"') || stream.skipToEnd();
return null; //Unstyled token
}
}
};
});
使用此代码按原样运行 Brackets 时,我收到一个错误(开发人员控制台),它无法powershell.js
从“Program Files(x86)\Brackets\www”加载我的文件。所以我尝试输入文件所在位置的确切路径(位于我的用户目录中的括号扩展文件夹),它工作但我收到以下消息:
Use brackets.getModule("thirdparty/CodeMirror2/lib/codemirror") instead of global CodeMirror.
at Object.defineProperty.get (/brackets.js:115:32)
at file:///C:/Users/MY_USERNAME/AppData/Roaming/Brackets/extensions/user/PS-DevKit/powershell.js:2:1
有输入吗?现在,我要做的就是让它加载并将引号中的任何文本更改为红色。尽管我收到关于需要使用 CodeMirror 模块的弃用警告,但扩展确实会加载,并且如果我创建一个“.ps1”文件,它会识别出它是 PowerShell。