Emacs bordüründe eyleme geçirilebilir kod katlama


15

Emacs saçaklarımı kod katlama bölümlerini gösterecek şekilde yapılandırmak istiyorum.

Örneğin, Mac'teki BBEdit, bir JSON dosyasını düzenlerken aşağıdakileri gösterir:

BBEdit kod katlama işaretleri

İşaretlerin kendileri işlem yapılabilir: bir işaretin tıklanması ilgili kod bölümünü genişletir veya daraltır. Belgede kod katlamayı destekleyen bir mod yoksa, saçak gösterilmez.

Emacs saçak işlevselliğini bu şekilde genişletmek mümkün müdür?

Yanıtlar:


16

Hideshowvis , saçaklara tıklanabilir simgeler ekler, ancak garip bir nedenden dolayı elpa veya melpa'ya dahil edilmez. Varsayılan olarak, -katlanabilir kod için kenarda bir a gösterir ve ardından içeriği a ile elipsler .... Ayrıca etkinleştirerek katlanmış içerik için ipucu hideshowvis-symbolsekler +ve ipucu biraz daha yüksek yapar.

Hideshow'un kendisi aynı zamanda satırdaki fare tıklamalarının S-mouse-2(veya orta tıklamayı kaydırma) kullanarak görüntüyü değiştirmesini sağlar. Bu yerleşik ve ile etkinleştirilebilir hs-minor-mode.


1
Güzel, hideshowvis.el önerdiğim gibi bir hack kullanıyor, ancak (raw olayını okuyarak) çift tıklamak zorunda kalmadan çirkinliği olmadan. İşaretçi için teşekkürler.
Sigma

3
Hideshowvis.elharika çalışıyor, teşekkürler! JSON dosyaları ile çalışmak için bazı sorunlar vardı js3-mode; Bu sorunları çözmek için, yalnızca hideshowvis'in kuyruktaki tüm eylemlerden sonra etkinleştirildiğinden emin olmak zorunda kaldım, örneğin:(dolist (hook '(emacs-lisp-mode-hook c++-mode-hook)) (add-hook hook 'hideshowvis-enable)) (defun hideshowvis-enable-immediately () (run-at-time "0 seconds" nil 'hideshowvis-enable)) (add-hook 'js3-mode-hook 'hideshowvis-enable-immediately)
Mathieu Legrand

Şimdi melpa'da.
dshepherd

4

Saçak öğelerin doğrudan tıklama alabileceğini düşünmese de (yine de yanlış olabilirim), olası bir hack bağlamak (kbd "<left-fringe> <double-mouse-1>")

İlk tıklama noktayı saçak simgesine karşılık gelen satırın başına taşıyacağından, (point)varsayımsal (un) katlama işlevinizin değerini test etmek, kodun hangi kısmının (un) katlanacağını veya herhangi bir şey yapmanız gerekiyor (bu satır için saçak simgesi yoksa)

kuruluş modu tamponlu örnek:

(define-key org-mode-map (kbd "<left-fringe> <double-mouse-1>") 'org-cycle)

Saça çift tıklandığında ilgili alt ağaç çevrilir.

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.