JavaScriptエディタでJSDocを表示するようにしてみた

AmaterasのJavaScriptエディタで、関数にJSDocを書いておくと補完の際に表示するようにしてみました。

引数や戻り値の情報はちゃんとJSDocをパースして取得しているので、関数の戻り値の型に応じて補完、なんてこともできるようになるはず(まだ実装していませんが…)。
ただし、いまのところAmaterasのJavaScriptエディタが対応しているのは普通の関数定義の記法だけです。以下のような記述をした場合、helloを関数とは認識しません。

var hello = function(name){
  return "Hello " + name + "!";
};

JavaScript(に限らずLL全般)は記述の自由度が高いのと、動的なのでツールを作るのが難しいですねー。

ゴールデンウィークの目標

5日も休みがあるのですが、Seasar2徹底入門が終わって執筆のほうが一段落ついているので、休み中にやることの目標を立てておこうと思います。なんか決めとかないとダラダラしてしまうので…。

プログラミングClojureを全部読む
少しずつ読み進めているのですが、連休中に読み終えたいです。できれば何かしらコードも書けるといいですね。忙しくなると頭を使う作業がなかなかできなくなるので今のうちにやっておきたいです。他にもいくつかいじりたいものがあるんですよねぇ…。
Mirage 1.0.1をリリースする
1.0.0を出したばかりですが、すでにコミット済みの新機能がかなりあるので連休中にリリースしたいです。あと、Clickと組み合わせて何かサンプルアプリを作ってみたいです。でもそこまでやってる時間はないかなぁ…。
JavaScriptエディタの補完機能の改善
最近AmaterasのJavaScriptの強化に取り組んでいるのですが、補完機能のコア部分の改修は連休中に目途をつけたいなと思っています。
サッカーの試合を観る
録画したゲームが何試合かあるので気分転換を兼ねて連休中に消化したいです。録画したゲームを真面目に観ると一試合に二時間以上かかるのでちょっと覚悟が必要なんですよね…。それにしても今年はCL決勝がバイエルン×インテル、EL決勝がフラム×アトレティコとどちらも燃えるカードですね。

あとThinkPadと、シンセを弾くとき用にヘッドホンを買いたいなー。うーん…、引きこもりですねー。

型が特定できるケースとできないケース

AmaterasとWTPJavaScriptエディタで型が特定できるケースとできないケースを調べてみました。
まずは基本形ですが、以下のようなケースはもちろんOKです。eはHTMLElementだと認識され、eに対して補完するとちゃんとHTMLElementのメンバが補完候補として表示されます。

var e = document.getElementById("id");

以下のようなケースもサポートしていて、e2はちゃんとHTMLElementと認識されます。

var e = document.getElementById("id");
var e2 = e;

以下のようにJSDocに関数の引数の型が指定されている場合は引数の型を特定することもできます。もちろん@typeを記述しておくと関数の戻り値の型もちゃんと認識します。WTPだとユーザ定義関数の戻り値の型は認識できないみたいです。

/**
 * @param {String} name
 * @type String
 */
function hello(name){
  ...
}

いまのところ以下のようなケースがダメです。WTPだとこういうケースも型を特定できているみたいです。

var e = null;
e = document.getElementById("id");

もう一押しかなぁ。

JSDocを自動挿入するようにしてみた

関数定義の前で/**と入力してENTERキーを押すと…

こんな感じで関数定義からJSDocの雛形を自動挿入するようにしてみました。
WTPにはすでに同様の機能がありますが、Amaterasでは@paramタグの型を指定する部分や、@typeタグも出力するようにしています。これらの情報は入力補完で使用するので、なるべく記述されていることが望ましいためです。
ちなみにWTPだとJSDoc部分でも補完できたりしますね…。