2010-02-02 17 views
6

Moose'u kullanan paketleri düzenliyorum ve Moose özelliklerinin Etiket Listesinde görünmesi için bir eklenti olup olmadığını merak ediyordum.Moose özelliklerinin Tag_List'te görünmesini sağlayan bir vim eklentisi var mı?

Örneğin, aşağıdaki kodda, nitelik options Tag_List içinde görünmüyor

ancak print_out_site yapar:

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"); 
} 
+0

MooseX :: AttributeHelpers kullanımdan kaldırılmıştır; Moose :: Meta :: Attribute :: Native :: Trait :: * kullanın. – Ether

+0

Teşekkürler. Bunu biliyordum, ama bu "eski" kod. ;) –

cevap

5

~/.ctags ve ona hattını

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

ekle göstermeli. Diğer dosyalardaki sahte eşleşmeleri önlemek veya diğer dosyalardaki özellik bildirimleri için farklı biçimlendirmeleri yerleştirmek için normal ifadeyi değiştirmeniz gerekebilir.

Bu, ctags'ı genişletir, böylece perl dosyalarını ayrıştırırken normal ifadeye dayalı olarak başka bir etiket türü algılar.

Sonra vimrc dosyasına bu ekleyerek yeni etiket türü hakkında taglist eklentisi anlatmak gerekir:

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

Bu komut satırından ctags çalıştırırsam çalışır, ancak TagList dosyayı okumıyor gibi görünmüyor. Baska öneri? Windows kullanıyorum, eğer bir ipucu ise. – daotoad

+1

@daotoad vim için gerekli ayarları ekledim ve bu girişler için belirli bir etiket türü atamak için ctags yapılandırmasını güncelledim. Bu herşeyi işe yaramalı. –

+0

Teşekkürler. Bilgisayarımda çalışamadım, yeni bir sanal makinede denedim ve iyi çalıştı.Artık kodunuzun iyi çalıştığını biliyorum, sonra nereye bakacağımı biliyorum. Tekrar çok teşekkürler! –

5

Geoff, senin kod çalıştı ancak sözdizimi ile benim için işe yaramadı sen kullanın. Bu bir sürüm problemi olabilir mi? Exuberant Ctags 5.8 sürümünü kullanıyorum.
Ayrıca regex'i biraz değiştirdim çünkü tırnaklar isteğe bağlı ve 'has' anahtar sözcüğünü içeren boşluklara (ama başka hiçbir şeye) izin vermek isteyebilirsiniz.
İşte benim için çalıştı. Eğer

let tlist_perl_settings='perl;c:constant;l:label;p:package;s:subroutine;a:attribute' 
önerdiği gibi Sonra .vimrc çizgi eklendi

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

: Ben aşağıdaki satırı ile (aksi takdirde sadece kendisine eklemek, henüz bir tane yoktu) $ HOME/.ctags dosyası oluşturduk

Artık öznitelikleri Moose modüllerinde listeler.

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

ve: Ayrıca

, ben de üst sınıfı hakkında bilgi sahibi olmak yararlı bulabilirler, roller ve kullanılmış modülleri taglist görünür, işte benim tam $ HOME/.ctags dosyasıdır Ben yararlı Tlist_Show_One_File seçeneği kullanmak bulmak için ek içerik

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 

: Bu ben .vimrc ne var (sadece tlist_par_settings sırasını değiştirerek taglist etiketlerin sırasını değiştirebilirsiniz) 'dir Bu, etiket listesini yalnızca etiketlerini göstermeye zorlar. şu anda seçili dosya.
Bazı etiketlerin geçici olarak gizlenmesi için, imleci her zaman etiket adına taşıyabilirsiniz ve katlamayı tekrar açmak için "zc" (ve "zo") düğmesine basabilirsiniz.

İlgili konular