質問

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

たとえば、次のコードでは、属性 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");
}
役に立ちましたか?

解決

行を追加します

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

〜/.ctagsへ、そしてそれは現れるはずです。他のファイルでの偽の一致を避けるために、または他のファイルの属性宣言の異なるフォーマットに対応するために、正規表現を微調整する必要がある場合があります。

これにより、CTAGが拡張されるため、PERLファイルを解析するときに正規表現に基づいて別のタイプのタグを検出します。

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

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

他のヒント

Geoff、私はあなたのコードを試しましたが、それはあなたが使用する構文では私にとってはうまくいきませんでした。これはバージョンの問題でしょうか?熱狂的なCTAGSバージョン5.8を使用しています。
また、引用符がオプションであり、「持っている」キーワードを前処理するスペース(しかし他に何も)を許可することをお勧めします。
これが私のために働いたものです。 $ 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モジュールに私の属性がリストされています。

さらに、親のクラス、役割、使用済みモジュールに関する情報をタグリストに表示することも有用であると思います。

--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」を再開する)を押すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top