14

Haskell に相当する ctags を探しています。hasktagsを試しましたが、いくつか問題があります。

enumeratorのソース フォルダーでrunhasktags .を実行すると、次のようになります。

hasktags: tags: openFile: resource busy (file is locked)

を実行するvim -t enumFileと、エラーが発生します。

E431: Format error in tags file "tags"
Before byte 4085
E426: tag not found: enumFile

Gasbagも試しましたが、ghc- 7.0.4ではコンパイルできません。

4

2 に答える 2

13

Mac OS X (または Windows。以下を参照) を使用していますね。その場合、hasktags -c(Vi 形式のタグのみを作成する) で問題が解決します。

これが唯一の説明ではありませんが、OS X システムでは次のようになります。

  • デフォルトでは、hasktags は、vi と Emacs の両方のタグが必要であると想定しています。
  • したがって、tags(Vi の場合) とTAGS(Emacs の場合)の両方を作成しようとします。
  • ただし、OS X は Unix とは異なり、デフォルトで大文字と小文字が区別されません。したがって、両方のファイルをそこに置くことはできません。
  • あるファイルを別のファイルで上書きするのではなく、何らかの理由で hasktags が競合します。これはおそらく、「他の」ファイルを閉じる前に 1 つのファイルを開くためです。Evan Laforge が説明したように、これは遅延 I/O のおかげだと思います。

更新: コメントで指摘されているように、Windows では大文字と小文字が区別されないため、同様の問題が発生する可能性があります。

于 2013-02-10T02:25:12.800 に答える
9

hasktags にはいくつかのバグがあり、そのうちの 1 つは遅延 IO を使用しているため、リソース ビジー エラーが発生する傾向があります。

たまたま、 http://hackage.haskell.org/package/fast-tagsにタグ プログラムを書きました。

その他のオプションは、修飾された Module.function タグを作成する hothasktags と、洗練された IDE のような vim tagbar と統合するように設計された lushtags です。私の経験では、hothasktags は巨大なタグ ファイルを生成し、lushtags はファイルを解析できなくなるとすぐにクラッシュします。どちらも haskell-src-exts を使用しているため正確ですが、ファイルを解析できず、.hsc ファイルを処理できないとクラッシュします。fast-tags には独自のパーサーがあるため、これらの問題はありませんが、タグを見逃したり、偽のタグを付けたりする解析バグに対して脆弱です。

お気づきのように、gasbag (および htags) は haskell-src を使用します。つまり、Haskell 98 でのみ動作します。

免責事項: TAGS が emacs タグを意味する場合、fast-tags はまだそれらを実行しませんが、誰かが気にかけていれば簡単に追加できます。

于 2012-04-08T01:33:51.573 に答える