D言語の補完

Descent 0.5 released

D言語の高精度なメソッド、メンバ補完ができるという話。
D言語の「mixin(文字列定数)」はその文字列をコードにしてしまう。スクリプト言語でいうeval(の劣化版)だ。
だから実際に実行(?)しないと補完の候補は得られないわけで。

だけど記憶が正しければmixinの展開などはコンパイル時に行われるんだよな。っつーことはコンパイル時に展開されたコードをたどっていけばわざわざ実行しなくても候補は得られるかも。ソースは見てないけど、きっとそうしてるだろう。もし実際に「実行」してたら、rcodetoolsのrct-completeで起きていた副作用問題が起きるはず。

Rubyの場合「コンパイル時」という概念がなくて実行時に動的にメソッド定義とかができてしまうから、実際に実行してみないと高精度補完ができない。

Descentの補完がEmacsでもできたらなぁ。