1

私は最近ラケットを使い始めました。最初に行ったことの 1 つは、vim TagList プラグインをラケットで動作させることでした。しかし、それは少しも機能しません。ラケット ファイルを開くことができ、TagList ウィンドウは、テキスト ファイルを開いた場合と同じように空白になります。

拡張ページによると* ~/.vimrc ファイルに以下を追加しました:

let Tlist_Ctags_Cmd = 'ctags --langdef=racket --langmap=racket:.rkt --regex-racket=/^\(def[a-zA-Z0-9\-_\?\/\\]+[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\1/d,definition/'
let Tlist_racket_settings = 'racket;d:Definition'

追加の ctags も ~/.ctags ファイルにありますが、TList は私の設定行がうまくいかないというエラーを吐き出していました。私は最初にctagsの既存のスキーム機能を使用しようとしましたが、同じ結果が得られませんでした。既存のスキーム機能を使用するために、 ~/.vimrc で次のことを試しました

let Tlist_Ctags_Cmd = 'ctags --langmap=scheme:.rkt'
let Tlist_racket_settings = 'racket;f:Functions'

他の誰かがそれを機能させる方法について何かアイデアを持っているなら、私は非常に感謝しています.

ありがとう、

  • ctags 1ページへのリンクも投稿しますが、許可しません(新しいユーザー)。それへのリンクは、タグリストの拡張ページにあります。

編集

コマンドラインからの ctags

コマンドラインから ctags を使用できます。TagList FAQ ページの ctags 行でテストすると、次の結果が得られます。

 $ cat ~/.ctags
--langdef=racket
--langmap=racket:.rkt
--regex-racket=/^\(def[a-zA-Z0-9\-_\?\/\\]+[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\1/d,definition/
--regex-racket=/^\(define\-syntax(\-rule)?[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\2/m,macro/
--regex-racket=/^\(define?[ \t]+(([a-zA-Z0-9\-_\/\\\?]+)[ \t]+\(lambda|\(([a-zA-Z0-9\-_\/\\\?]+))/\2\3/f,function/
$ ctags  -f - --format=2 --excmd=pattern --fields=nks XMMSClient.rkt 
defenum XMMSClient.rkt  /^(define-syntax defenum$/;"    m   line:11
defxmmsc    XMMSClient.rkt  /^(define-syntax defxmmsc$/;"   m   line:20
libxmmsclient   XMMSClient.rkt  /^(define libxmmsclient (ffi-lib "libxmmsclient"))$/;"  d   line:5

スイッチで言語定義を強制しても、言語をスキームに変更しても、出力は同じです。

タグバーについて

人々がそれを提案する前に、私は TagBar を見たことがありませんでした。興味深いことに、.ctags ファイルへの変更でうまくいきました。残念ながら、ロードされたすべてのバッファのタグを TagList のように表示する設定が見つからないので、TagList を使用することをお勧めします。

比較画像を投稿したいのですが、新しいメンバーとしては許可されないと思います。romainl の提案に従って、vim ファイルタイプをスキームに設定することができ、それは機能します。ただし、これは 80% の解決策のようにしか思えません。拡張ページによるドキュメントが、私が持っているものが機能するはずであることを示唆しているように見える場合です。おそらく、バグレポートの提出を検討する必要があります。

再度、感謝します、

4

2 に答える 2

1

これは、公式ドキュメントから取り出して次のように保存した小さなラケットのスニペットですtt.rkt

(define (checker p1 p2)
  (let ([p12 (hc-append p1 p2)]
        [p21 (hc-append p2 p1)])
    (vc-append p12 p21)))

ラケット固有の構文/インデント ファイルがないと、 が (もちろん) にft設定されているか、何も設定されていないかracket(デフォルト) は表示されません。I:set ft=schemeの場合、TagList とTagBarcheckerの両方が「関数」としてリストされます。

左から右へ: ファイル、TagBar、TagList。

ラケットファイルに対するTagListとTagBar

私が理解していることから、「Racket」は、Scheme 派生物のブランド変更です。標準からあまり逸脱していない場合は、次の行を追加すると~/.vimrc役立つ場合があります。

autocmd BufRead,BufNewFile *.rkt set filetype=scheme
于 2012-01-26T08:22:51.617 に答える
1

xsltファイルの場合でも、同じ問題に苦しんでいます...私の解決策は、taglist.vimをいじって見つけたので、次の行を追加しました

let s:tlist_def_xslt_settings = 'xslt;f:function:v:variable'

Vim コードの s:tlist_def_ 部分を検索して、適切に見えるものを入力してみてください。Tagbar 内にも同様のメカニズムがあります。コードを詳しく読んでいないので、なぜこれが必要で、cta からの出力を使用しないのかわかりません

于 2012-04-26T16:05:36.580 に答える