Domanda

Sto modificando i pacchetti che usano Moose e mi chiedevo se ci fosse un plug -in per realizzare gli attributi di alci nell'elenco dei tag.

Ad esempio, nel seguente codice, l'attributo options non viene visualizzato in tag_list, ma print_out_site fa:

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");
}
È stato utile?

Soluzione

Aggiungi la linea

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

a ~/.ctags e dovrebbe presentarsi. Potrebbe essere necessario modificare l'espressione regolare per evitare corrispondenze spurie in altri file o per adattarsi alla formattazione diversa per le dichiarazioni degli attributi in altri file.

Ciò estende i CTAG in modo da rilevare un altro tipo di tag in base all'espressione regolare quando si analizza i file Perl.

Quindi è necessario raccontare il plug -in Taglist sul nuovo tipo di tag aggiungendo questo al tuo file VIMRC:

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

Altri suggerimenti

Geoff, ho provato il tuo codice ma non ha funzionato per me con la sintassi che usi. Potrebbe essere un problema di versione? Sto usando CTAGS Exuberant versione 5.8.
Ho anche modificato un po 'il regex perché le citazioni sono opzionali e potresti voler consentire spazi (ma nient'altro) che precedeva la parola chiave "ha".
Ecco cosa ha funzionato per me. Ho creato un file $ home/.ctags (non ne avevo ancora uno, altrimenti solo aggiungerlo) con la seguente riga:

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

Quindi aggiunto la riga in .vimrc come hai suggerito

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

Ora elenca i miei attributi nei moduli Moose.

Inoltre, trovo utile avere anche informazioni sulla classe principale, i ruoli e i moduli usati visualizzati nel taglist, quindi ecco il mio file completo $ 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/

e questo è quello che ho in .vimrc (puoi modificare l'ordine dei tag nel taglist semplicemente cambiando l'ordine in 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

A causa del contenuto aggiuntivo trovo utile utilizzare l'opzione TList_Show_one_file, che costringe il taglist a mostrare solo i tag del file attualmente selezionato.
Per nascondere temporaneamente alcuni dei tag puoi sempre spostare il cursore nel nome del tag e premere "ZC" (e "ZO" per riaprire) la piega.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top