2012-04-07 12 views
13

Haskell'e eşdeğer bir ctags arıyorum. Ben hasktags çalıştı, ancak bazı sorunlar var: hasktags ., enumerator kaynağı klasöründeHaskell projeleri için TAGS nasıl oluşturulur?

çalıştırmak verir:

hasktags: tags: openFile: resource busy (file is locked) 

Ve vim -t enumFile çalıştırdığınızda, bir hata oluşur:

E431: Format error in tags file "tags" 
Before byte 4085 
E426: tag not found: enumFile 

I Ayrıca gasbag çalıştı, ancak ghc-7.0.4 üzerinde derleme değil.

cevap

8

hasktags'ın bazı hataları vardır, bunlardan biri, bu kaynakları meşgul hataları verme eğiliminde olan tembel IO'dur.

Ne tesadüf ki

, sadece http://hackage.haskell.org/package/fast-tags de, bir etiket program yazdım

Diğer seçenekler süslü IDE benzeri vim Tagbar ile entegre etmek için tasarlanmış olan, nitelikli Module.function etiketleri ve lushtags yapar hothasktags vardır zımbırtı. Benim deneyimime göre, hothasktags dev etiket dosyaları üretir ve bir dosya ayrıştırılamaz en kısa sürede lushtags çöker. Her ikisi de haskell-src-exts kullanırlar, bu da doğru oldukları anlamına gelir, ancak dosyanızı ayrıştıramazlarsa çökerler ve .hsc dosyalarıyla ilgilenemezler. hızlı etiketlerin kendi çözümleyicisi vardır, bu da bu sorunlara sahip olmadığı anlamına gelir, ancak etiketleri özleyen veya sahte etiketler veren hataları ayrıştırma konusunda da daha savunmasızdır. , Etiketler ederek emacs etiketi anlamına eğer hızlı etiketleri olanlar yapmaz henüz: Fark gibi

, lafebesi (ve htags) sadece Feragat

Haskell 98 üzerinde çalışmak demektir haskell-src kullanmak Birisi umursa bile eklemek kolay olurdu.

+0

vay, hızlı etiketler gerçekten hızlı ve çalışıyor! Teşekkürler – fqsxr

13

Mac OS X (veya Windows, aşağıya bakın) kullanıyorsunuz, değil mi? Bu durumda, hasktags -c (yalnızca Vi biçimli etiketler oluşturur) sorununuzu giderir. Burada tek açıklaması değil ama

bir OS X sistem üzerinde gerçekleşir: varsayılan olarak

  • , hasktags sen vi ve Emacs için her iki etiketleri istediğinizi varsayar.
  • böylece, her iki tags ancak
  • , OS X (Vi için) ve (Emacs için) TAGS, Unix aksine duyarsız varsayılan durumda gereğidir oluşturmaya çalışır. Bu yüzden orada iki dosyaya sahip olamazsınız.
  • , bir dosyayı diğerinin üzerine yazmak yerine, bazı nedenlerden dolayı hasktags bir çatışmaya girer, muhtemelen "öteki" yi kapatmadan önce bir dosya açtığı için. Evan Laforge tarafından açıklandığı gibi tembel I/O sayesinde bunu beklerdim.

Güncelleme: açıklama ile belirttiği gibi Windows da duyarsız, o kadar benzer sorunlar ortaya çıkabilecek bir durumdur.

+1

Benim durumuma göre, vaka duyarsızlığı içeren bu açıklama MS Windows da doğrudur. Emacs kullanıyorum, yani ben de iyi çalışıyor. Ancak bu seçeneğin atlanması hataya neden olur. Bu hasktags-0.68.2'deki gibidir.Tembel bir IO ya da bir hata meselesi gibi görünmüyor. Diğer bir cevap önerildiği gibi – tinlyx

+0

@TingL: Bence tembel IO neden bu özel hata mesajını aldığınızı açıklıyor ("kaynak meşgul"); aksi halde sadece bir hata ve bir 'tag' dosyası (daha sonra yaratılan) almazsınız ve sadece bir editör ile çalışır, diğeriyle değil. – Blaisorblade

İlgili konular