Ekran dışındayken bir kapsamın başlangıcını görüntüleme


12

Bu ekranın dışına çıktığında bir kapsamın açılış bölümünü görüntülemek istiyorum.

Misal:

namespace a  
{  
...  
--------------------- <- display frame 
...                 |  
}*                  | * when cursor is here display "namespace a" in the minibuffer
---------------------   or on screen

Bu birçok programlama dili için işe yarayabilir ama ben esas olarak C ++ düşünüyorum.

Biraz daha açıklamak ve VS bilenler için, Visual Studio için olanla benzer bir özellik istiyorum. yani imleci bir kapsamın sonuna konumlandırmak, düzenleme tamponunun üstünde kapsamın başlangıcını görüntüler.

Bu özellik zaten bir yerde mevcut mu?


Merak ediyorum, cevabım yardımcı oldu mu?
Tu Do

@ Evet! Bir göz atmak için zamanım vardı. Ben zaten semantik vardı ve sadece küresel-semantik-stickyfunc modunu açmak güzel çalıştı. Teşekkürler. Benim sorunum şimdi renk headerline okunabilir hale olmamasıdır ..
log0

Yanıtlar:


14

C / C ++ / Java / Emacs Lisp / Python yazıyorsanız, semantik-yapışkan-fonk modu istediğinizi yapar.

NOT : Bu, şu anda Emacs 24.4'te bulunan CEDET'i değil, Git'ten CEDET ile çalışıyor gibi görünüyor. Git'ten Emacs almak için:

git clone http://git.code.sf.net/p/cedet/git cedet

Ve ilk olarak init dosyanızdaki her şeyin üzerine CEDET yükleyin:

(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))

Etkinleştirildiğinde, bu mod işlev noktasının geçerli tamponun ilk satırında olduğunu gösterir. Bu, bir ekrandan daha fazla yayılan çok uzun bir işleve sahip olduğunuzda ve işlev adını okumak için yukarı kaydırmanız ve ardından orijinal konumuna kaydırmanız gerekmediğinde kullanışlıdır.

Bu görüntüler tam fonksiyon arayüzü (dönüş türü, işlev adı ve parametreleri), sadece işlev adı.

Etkinleştirmek için bu kodu init dosyanıza yerleştirin:

(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)

GÜNCELLEME : Akım ile ilgili problemlerden biri semantic-stickyfunc-mode, birden fazla satıra dağılmış tüm parametreleri görüntülememesidir. Bu sorunu çözmek için stickyfunc-improve paketini oluşturdum .

DEMO :

İşte C'de bir demo:

semantik-yapışkan işlev modu -c

İşte Emacs Lisp'te bir demo:

semantik-yapışkan fonk-mod elisp

GÜNCELLEME : Alternatif olarak, dümen-semantik veya imenu kullanabilirsiniz . Bir işlevin içindeyken ve komutu çalıştırdığınızda, imleç doğrudan listedeki işleve yerleştirilir, böylece her zaman tam işlev arabirimini görebilirsiniz. DEMO:

  • İlk olarak, helm-semantic-or-imenuişleve gitmek ve o helm-define-key-with-subkeysnoktaya hareket etmek için kullanıyorum .

  • Sonra helm-semantic-or-imenutekrar başlıyorum ve helm-define-key-with-subkeysönceden seçiliyor.

  • Daha sonra, noktayı değişken dümen haritasına taşıyorum ve helm-semantic-or-imenuiki işlev üzerinde yeniden yürütüyorum: dümen-sonraki-kaynak ve dümen-önceki-kaynak. Bu sefer, içinde çalıştığım şu anlamsal etiketi göstermek yerine (dümen haritası), Dümen Semantik tamponundaki diğer iki etiketi gösterir. Çünkü komutu çalıştırmadan önce bir önek argümanı sağladım.

Ayrıca bu demo Emacs Lisp'de, C / C ++ için de çalışıyor ve gerçekten uzun bir işlev arayüzüne sahipseniz daha esnektir.

dümen-semantik-veya-imenu


Lisp (özellikle Elisp) için bunu nasıl elde ettiniz? Kodunuzu değerlendirdim emacs -Qancak göz attığımda açıkladığınız davranışı alamıyorum, örneğin org.el.
itsjeyd

Cevabı güncelledim. Bzr'den Semantic ile denemelisiniz.
Tu Do

1
Tamamen konu dışı. Beni Nyan moduna tanıttığın için teşekkürler. Kodlamam bir daha asla eskisi gibi olmayacak.
purple_arrows 06

6

which-function-modeYaparak açabilirsiniz

M-x which-function-mode RET

Ayarı kalıcı yapmak için şunu ekleyin:

(which-function-mode 1)

init dosyanıza.

Belgelerden:

Geçerli işlevin mod satırı ekranını aç / kapat (Hangi İşlev modu). [...]

Hangi İşlev modu genel küçük moddur. Etkinleştirildiğinde, geçerli işlev adı belirli ana modlarda mod satırında sürekli olarak görüntülenir .

Not : Ad gerçekten bunu önermez, ancak bu sadece "işlevler" için değil, diğer kapsam türleri için de geçerlidir. Örneğin, içinde org-mode, which-function-modegeçerli alt ağacın başlığını görüntüler.


Teşekkürler! Mod satırında görüntülenen işlev adını seviyorum. Bazı vakalar çok iyi çalışmıyordu. Bir ad alanındaki bir yapıdaki yöntem gibi, yalnızca ad alanı adı görüntülenir
log0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.