Y a-t-il un plugin VIM qui fait que les attributs d'orignal apparaissent dans tag_list?

StackOverflow https://stackoverflow.com/questions/2182164

  •  24-09-2019
  •  | 
  •  

Question

Je modifie des packages qui utilisent Moose, et je me demandais s'il y avait un plugin pour faire apparaître les attributs d'orignal dans la liste des balises.

Par exemple, dans le code suivant, l'attribut options n'apparaît pas dans tag_list, mais print_out_site Est-ce que:

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");
}
Était-ce utile?

La solution

Ajouter la ligne

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

à ~ / .ctags et il devrait apparaître. Vous devrez peut-être modifier l'expression régulière pour éviter les correspondances parasites dans d'autres fichiers ou pour tenir compte du formatage différent pour les déclarations d'attribut dans d'autres fichiers.

Cela étend CTAGS de sorte qu'il détecte un autre type de balise basé sur l'expression régulière lors de l'analyse des fichiers Perl.

Ensuite, vous devez parler du plugin TagList sur le nouveau type de balise en l'ajoutant à votre fichier VIMRC:

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

Autres conseils

Geoff, j'ai essayé votre code mais cela n'a pas fonctionné pour moi avec la syntaxe que vous utilisez. Serait-ce un problème de version? J'utilise des CTAGS exubérants version 5.8.
J'ai également modifié un peu le regex parce que les citations sont facultatives et vous voudrez peut-être permettre aux espaces (mais rien d'autre) précédant le mot clé «Has».
Voici ce qui a fonctionné pour moi. J'ai créé un fichier $ home / .ctags (je n'en avais pas encore, sinon il suffit d'y ajouter) avec la ligne suivante:

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

Puis a ajouté la ligne dans .vimrc comme vous l'avez suggéré

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

Maintenant, il répertorie mes attributs dans les modules Moose.

De plus, je trouve utile d'avoir également des informations sur la classe parent, les rôles et les modules d'occasion apparaissent dans la liste de tags, alors voici mon fichier complet $ 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/

Et c'est ce que j'ai dans .vimrc (vous pouvez modifier l'ordre des balises dans la liste de tags simplement en modifiant l'ordre dans le 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

En raison du contenu supplémentaire, je trouve utile d'utiliser l'option tlist_show_one_file, qui force la taglist pour afficher uniquement les balises du fichier actuellement sélectionné.
Pour masquer temporairement certaines des balises, vous pouvez toujours déplacer le curseur vers le nom de la balise et frapper "ZC" (et "zo" pour rouvrir) le pli.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top