6

Moose を使用するパッケージを編集していますが、タグ リストに Moose 属性を表示させるためのプラグインがあるかどうか疑問に思っていました。

たとえば、次のコードでは、属性optionsは Tag_List に表示されませんが、表示されますprint_out_site

use Moose;
use MooseX::AttributeHelpers;

...

has 'options' => (
    metaclass => 'Collection::Hash',
    isa       => 'HashRef[Str]',
    is        => 'ro',
    provides  => {
        exists => 'exists',
        get    => 'get',
        set    => 'set',
    },
);

...

sub print_out_site {
    my $self = shift;
    my $key  = shift;
    $self->fasta_out_fh->print(">", $key, "\n");
    $self->fasta_out_fh->print($self->sites->{$key}, "\n");
}
4

2 に答える 2

5

ジェフ、私はあなたのコードを試しましたが、あなたが使用する構文ではうまくいきませんでした. これはバージョンの問題でしょうか?熱狂的な ctags バージョン 5.8 を使用しています。
引用符はオプションであり、「has」キーワードの前にスペース (ただし、それ以外は何もない) を許可したい場合があるため、正規表現も少し変更しました。
これが私のために働いたものです。次の行で $HOME/.ctags ファイルを作成しました (まだ作成していないため、追加するだけです)。

--regex-perl=/^\s*has\s+['"]?([0-9a-zA-Z_]+)/\1/a,attribute/

次に、提案したように .vimrc に行を追加しました

let tlist_perl_settings='perl;c:constant;l:label;p:package;s:subroutine;a:attribute'

これで、Moose モジュールの属性が一覧表示されます。

さらに、親クラス、ロール、および使用されているモジュールに関する情報もタグリストに表示されると便利だと思うので、完全な $HOME/.ctags ファイルを次に示します。

--regex-perl=/^\s*has\s+['"]?([0-9a-zA-Z_]+)/\1/a,attribute/
--regex-perl=/^\s*with\s+(['"])(.+)\1/\2/r,role/
--regex-perl=/^\s*extends\s+(['"])(.+)\1/\2/e,extends/
--regex-perl=/^\s*use\s+([^ ;]+)/\1/u,use/

これは私が.vimrcに持っているものです(tlist_par_settingsの順序を変更するだけで、タグリストのタグの順序を変更できます):

let tlist_perl_settings='perl;u:use;p:package;r:role;e:extends;c:constant;a:attribute;s:subroutine;l:label'
let Tlist_Show_One_File = 1

追加のコンテンツがあるため、現在選択されているファイルのタグのみをタグリストに表示するように強制する Tlist_Show_One_File オプションを使用すると便利です。
一部のタグを一時的に非表示にするには、いつでもカーソルをタグ名に移動し、「zc」(再度開くには「zo」) を押します。

于 2010-08-24T12:36:46.723 に答える
5

行を追加

--regex-perl=/has '(.*)' => \(/\1/a,attribute,moose attributes/

~/.ctags に追加すると、表示されるはずです。他のファイルでの誤った一致を回避するため、または他のファイルでの属性宣言の異なるフォーマットに対応するために、正規表現を微調整する必要がある場合があります。

これは ctags を拡張して、perl ファイルの解析時に正規表現に基づいて別のタイプのタグを検出できるようにします。

次に、これを vimrc ファイルに追加して、新しいタグ タイプについて taglist プラグインに伝える必要があります。

let tlist_perl_settings='perl;c:constant;l:label;p:package;s:subroutine;a:attribute'
于 2010-02-02T18:05:50.920 に答える