SORU
16 EKİM 2012, Salı


Emacs için etiketler: etags arasındaki İlişki, ebrowse, cscope, Küresel ve exhuberant GNU ctags

Ben iş C projeleri, ve ben geçti Alex Ott guide to CEDET ve diğer konuları hakkında etiketler StackOverflow, ama ben hala şaşkın nasıl Emacs arayüzleri ile bu farklı etiket sistemleri kolaylaştırmak için otomatik tamamlama, arama tanımları, navigasyon kaynak kod tabanı veya önizleme doc-dizeleri.

  1. Fark (özellikler açısından örneğin) etags, ebrowse, , *, *24exuberant ctagscscope ve GTags arasında nedir? Benim için bunları kullanmak gerekirEmacs?

  2. Eğer etiketler/otomatik tamamlama sembolleri içinde gezinmek için kullanmak istiyorsanız semantik/Senatör (CEDET) ihtiyacım var mı?

  3. Semantik bu farklı etiket yarar üstüne masaya ne getiriyor? Nasıl bu araçlar ile arayüz?

CEVAP
16 EKİM 2012, Salı


Son zamanlarda daha ayrıntılı olarak: farkı açıklamaya çalışacağım burada okudum iyi bir soru

Nokta 1:

etags ctags dizin oluşturmak hem de (bir.k.bir. dil nesneleri etiket/TAGS) dosya kaynak bu öğeleri hızlı ve kolay bir metin editörü veya başka bir yardımcı tarafından bulunması için izin veren bir dosya buldum. Bir etiket için bir dizin girişi mevcuttur dil bir nesne (veya, alternatif olarak, dizin girdisi, bu nesne için oluşturulan anlamına gelir. Etiketleri tarafından oluşturulan ctags olan zengin açısından meta, Emacs ama yorumlayamaz ek veri zaten o kadar düşünmelisiniz onları daha fazla veya daha az aynı (ana avantajı ctags olurdu destek için daha fazla dil). Etiketler dosyalar için ilk sınıf/yöntem/işlevi/beyan/etc/sabit tanımlar yukarıya bakıyor.

cscope çok daha güçlü canavar (C/C ve Java ile ilgili, en azından bildiğim kadarıyla). Süre çalışır, daha fazla veya daha az aynı ilke (oluşturma Bir dosya yararlı meta) verir sana biraz daha süslü şeyler bulmak tüm başvurular için bir sembol olarak gördüğünü bir işlev olarak çağrılan, vb (burada bulabilirsiniz tanımları gibi).

Özetle:

11* *Bir seni tanımlar (ne derdi./simgesi bildirim gitmek için izin verir ^em>tek yönlü arama). ctags genel amaçlı bir aracı bir çok dil için yararlıdır.

Öte yandan projenin sayfasında belirtildiği gibi) cscope size izin verir:

  • Bir sembol Bildirgesi
  • Bir sembol için tüm başvurular seçilebilir bir listesini gösterir
  • Herhangi bir genel tanım aramak
  • Fonksiyonlar bir fonksiyon tarafından çağrıldı
  • Fonksiyonlar bir fonksiyon arıyorum
  • Bir metin dizesi arayın
  • Düzenli ifade deseni aramak
  • Bir dosyayı bulmak
  • Bir dosya da dahil olmak üzere tüm dosyaları bul

C/C projeleri ile uğraşıyorum zaman cscope bakım ağır kullanım çok az ctags hakkında yaptığım bu noktada herkes için bir sürpriz olarak gelmelidir,. Diğer diller ile ilgili durum belli ki tam tersi olurdu.

Nokta 2.

Gerek Akıllı Otomatik tamamlama gereken bir gerçek source code parser (semantik), aksi takdirde yapmayacağını biliyorum bu tür nesneleri (örneğin) uygulamaları ve yöntemleri olabilir çağırdı onları. Birçok farklı kaynaklara dayanan, ama sonuçta bir ayrıştırıcı gerekir en iyi sonuçları elde etmek için bir tamamlama var. Aynı sözdizimi vurgulama - şu anda Emacs sözdizimi büyük modları sadece düzenli ifadeler dayalı olduğunu vurgulayarak için gidiyor ve o çok kırılgan ve hata eğilimli. Umarım birlikte dahil semantik olarak Emacs 23.2 (eskiden bir dış paket önce) başlayalım görmeye daha fazla kullanımlar için (gibi kullanarak analiz eder bir tampon kaynak kodu düzgün vurgulayın)

Emacs 24.1 semantik beri Emacs tamamlanması çerçevesinde kullanılabilir. Bunu test etmek için en kolay yolu C kaynak kodu dosyası ve daktilo açmaktırM-TAByaC-M-ıve semantik olarak izlemek otomatik olarak yüklenecektir sizin için tamamlar. Semantik varsayılan olarak etkin olmayan diller için, bu seçim büyük modu kanca için aşağıdaki satırı ekleyebilirsiniz:

(add-to-list 'completion-at-point-functions 'semantic-completion-at-point-function)

Nokta 3.

semantik doğru kod farkındalık (birkaç dil için şu anda destekler) getiriyor ve IDE ve Emacs arasındaki boşluğu kapatır. Gerçekten etags gibi araçlar ile arabirim yok cscope ama birlikte onları kullanamazsınız anlamına gelmez.

Umarım açıklamalarım mantıklı ve yararlı olacaktır.

P. S. I global ebrowse, oldukça aşina değilim ama eğer hafızam beni yanıltmıyorsa etags kullanmak istediler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KSI

    KSI

    25 Temmuz 2009
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • tinycammonitor

    tinycammonit

    14 Aralık 2010