Pregunta

Estoy editando los paquetes que utilizan los Alces, y me preguntaba si había un plugin para hacer Alce atributos se muestran en la Lista de Etiquetas.

Por ejemplo, en el código siguiente, el atributo options no se muestra en Tag_List, pero print_out_site no:

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");
}
¿Fue útil?

Solución

Agregar la línea

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

a ~/.ctags y debería aparecer. Es posible que deba ajustar la expresión regular para evitar coincidencias espurias en otros archivos o para acomodar diferentes formatos para las declaraciones de atributos en otros archivos.

Esto extiende los CTAG para que detecte otro tipo de etiqueta basado en la expresión regular al analizar los archivos Perl.

Luego debe informar al complemento Taglist sobre el nuevo tipo de etiqueta agregando esto a su archivo VIMRC:

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

Otros consejos

Geoff probé tu código pero no funciona para mí con la sintaxis que se utiliza.Este podría ser un problema de versión?Estoy usando exuberante ctags la versión 5.8.
También he modificado el regex un poco porque las comillas son opcionales y es posible que desee permitir que los espacios (pero nada más) que preceden a los 'tiene' la palabra clave.
Aquí es lo que ha funcionado para mí.He creado un $HOME/.ctags archivo (no tiene uno, sin embargo, de lo contrario, sólo tiene que añadir a ella) con la siguiente línea:

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

A continuación, se añadió la línea en .vimrc como usted sugiere

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

Ahora las listas de mis atributos en Moose módulos.

Además, me parece que es útil también tener información acerca de la clase padre, funciones y módulos usados se muestran en la taglist, así que aquí está mi $HOME/.ctags archivo:

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

y esto es lo que tengo en .vimrc (usted puede cambiar el orden de las etiquetas en el taglist simplemente cambiando el orden en el 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

Debido a que el contenido adicional me parece útil el uso de la Tlist_Show_One_File opción, que obliga a la taglist para mostrar sólo las etiquetas del archivo actualmente seleccionado.
Para ocultar temporalmente algunas de las etiquetas siempre se puede mover el cursor hasta el nombre de la etiqueta y haga clic en "zc" (y "zo" para volver a abrir) el pliegue.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top