tern
で実行されるウィンドウに強化されたインテリセンスを提供するために使用していますが、正常に動作しますが、いわばCodeMirror
カスタム " " を追加して、横にアイコンが表示されるようにするという問題があります。types
ドロップダウンで。コードを少し絞った...
定義ファイルでは、次のようにディレクティブ.json
を使用して型が宣言されているようです。!type
"Infinity": {
"!type": "number",
"!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Infinity",
"!doc": "A numeric value representing infinity."
},
"undefined": {
"!type": "?",
"!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/undefined",
"!doc": "The value undefined."
}
これらは、このように と少し対応していますCSS
。
.CodeMirror-Tern-completion-object:before {
content: "O";
background: #77c;
}
.CodeMirror-Tern-completion-fn:before {
content: "F";
background: #7c7;
}
.CodeMirror-Tern-completion-array:before {
content: "A";
background: #c66;
}
.CodeMirror-Tern-completion-number:before {
content: "1";
background: #999;
}
よし、それでいい。私はそれらをスタイリングできます、問題ありません。しかし、私は自分のものをいくつか追加したいのですが、それを行うのに苦労しています。たとえば、私がそうするだけなら...
"Character": {
"!type": "entity",
"!url": "some-url",
"!doc": "This is a character entity."
},
"User": {
"!type": "user",
"!url": "some-url-again",
"!doc": "This is a user entity."
}
全体が機能しなくなるだけです。tern
ちょっと言ってnope nope nope
、何もしないように。私は何時間も試してみて、ソースコードを本当に掘り下げましたが、自分の型を作る方法を本当に見つけることができません. この特定のコード エディターのユーザー (これは「正確な」javascript ではなく、javascript になりますが、コーダーではないため、いくつかの単純なリテラルがあります) を簡単にするための簡単なフラグを簡単に提供したいと思います。それらの上に。
どんな提案も大歓迎です!お時間をいただきありがとうございます。
アップデート
ユーザーが要求したように、私はより多くの助けを得るために、より多くのコードを投稿しています. これが私の望みです。.json
オブジェクトのレイアウトを定義するファイルがあります。オブジェクトは、実際の C# オブジェクト/データベース オブジェクトをミラーリングします。(その部分は重要ではありません。特定のモデルがあることを知っておいてください)
デフォルトの ternecma5.json
およびjquery.json
def ファイルも使用しています。それらはここにあります。
https://github.com/marijnh/tern/blob/master/defs/ecma5.json https://github.com/marijnh/tern/blob/master/defs/jquery.json
そのため、ユーザーが を叩いCTRL+SPACE
て見たときに、その横にCHARACTER
[ ] のタイプが必要です。CHARACTER
だから、最初のステップは文字をタイプとして指定することだと思いました。
character.json
"character": {
"!type": "Character",
"!doc": "Represents the character model.",
"Coefficients":{
"!doc": "The coefficients that govern many of the calculative formulas"
}
}
何が起こったかは次の画面です。
これを追跡しようとしたところtypeToIcon
、addons/tern.js
(実際の tern ファイルではなく、codemirror にプラグインするアドオン ファイル) で呼び出された関数を発見しました。
function typeToIcon(type) {
var suffix;
if (type == "?") suffix = "unknown";
else if (
type == "number" ||
type == "string" ||
type == "bool"
) suffix = type;
else if (/^fn\(/.test(type)) suffix = "fn";
else if (/^\[/.test(type)) suffix = "array";
else suffix = "object";
return cls + "completion " + cls + "completion-" + suffix;
}
だから私はAHA! This is it!!
、ここに自分のタイプを追加できると考えました。
関数に追加console.log(type);
して、出力がどのようなものかを確認しました。これは決して起動しませCTRL+SPACE
んでした. もっと遡らなければなりませんでした。
実際のアジサシのダウンロードの一部であるTypeParser
inと呼ばれる関数を探し出しました。def.js
var TypeParser = exports.TypeParser = function (spec, start, base, forceNew) {
this.pos = start || 0;
this.spec = spec;
this.base = base;
this.forceNew = forceNew;
};
コンソール ログをここに置くと、いくつかの結果が得られました。それらは、利用可能で、 および で定義された多くのタイプのように見えましjquery.json
たecma5.json
。
これは私が得た限りであり、どのように進めればよいかまったくわかりません。