Gibt es ein VIM -Plugin, mit dem Moose -Attribute in Tag_List angezeigt werden?
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");
}
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.