Frage

Ich bearbeite Pakete, die Elch verwenden, und ich habe mich gefragt, ob es in der Tag -Liste ein Plugin für die Erstellung von Elchattributen gibt.

Zum Beispiel im folgenden Code das Attribut options zeigt sich nicht in Tag_List, aber print_out_site tut:

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");
}
War es hilfreich?

Lösung

Fügen Sie die Zeile hinzu

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

zu ~/.Ctags und es sollte sich zeigen. Möglicherweise müssen Sie den regulären Ausdruck optimieren, um falsche Übereinstimmungen in anderen Dateien zu vermeiden oder unterschiedliche Formatierung für die Attributdeklarationen in anderen Dateien zu erfüllen.

Dies erweitert CTAGs so, dass es eine andere Art von Tag erfasst, basierend auf dem regulären Ausdruck beim Parsen von Perl -Dateien.

Anschließend müssen Sie das Plugin des Taglists über den neuen Tag -Typ mitteilen, indem Sie diese zu Ihrer VIMRC -Datei hinzufügen:

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

Andere Tipps

Geoff, ich habe Ihren Code ausprobiert, aber es hat bei mir nicht mit der von Ihnen verwendeten Syntax funktioniert. Könnte dies ein Versionsproblem sein? Ich verwende ausgelassene CTAGs Version 5.8.
Ich habe das Regex auch ein bisschen geändert, da die Zitate optional sind und Sie möglicherweise Leerzeichen (aber nichts anderes) zulassen möchten, das das Schlüsselwort "Has" voraussetzt.
Hier ist, was für mich funktioniert hat. Ich habe eine $ home/.CTAGS -Datei erstellt (hatte noch keine, sonst fügen Sie sie einfach hinzu) mit der folgenden Zeile:

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

Dann fügte die Linie in .vimrc hinzu, wie Sie vorgeschlagen haben

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

Jetzt listet es meine Attribute in Elchmodulen auf.

Darüber hinaus finde ich es nützlich, auch Informationen über die übergeordnete Klasse, Rollen und verwendete Module in der Taglist zu haben. Hier finden Sie meine vollständige $ home/.CTAGS -Datei:

--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/

Und das habe ich in .VIMRC (Sie können die Reihenfolge der Tags in der Taglist ändern, indem Sie einfach die Reihenfolge in der TILLIST_PAR_SETTINGS ändern):

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

Aufgrund des zusätzlichen Inhalts finde ich es nützlich, die Option TList_Show_one_file zu verwenden, die die Taglist nur die Tags der aktuell ausgewählten Datei anzeigt.
Um einige der Tags vorübergehend zu verbergen, können Sie den Cursor jederzeit auf den Tag -Namen verschieben und "ZC" (und "ZO" zum Wiedereröffnen der Falte drücken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top