Pieghevole codice utilizzabile con frange Emacs


15

Vorrei configurare la mia frangia Emacs per mostrare le sezioni di piegatura del codice.

Ad esempio, BBEdit su Mac mostrerebbe quanto segue quando si modifica un file JSON:

Contrassegni di piegatura del codice BBEdit

I segni stessi sono utilizzabili: facendo clic su un segno si espande o comprime la sezione di codice corrispondente. Quando il documento non ha una modalità che supporta la piegatura del codice, la frangia non viene mostrata.

È possibile espandere la funzionalità della frangia Emacs in questo modo?

Risposte:


16

Hideshowvis aggiunge icone cliccabili alla frangia, ma per qualche strana ragione non è incluso in elpa o melpa. Per impostazione predefinita, mostra una -frangia per il codice che può essere piegato, quindi elide il contenuto con una .... Abilitando anche hideshowvis-symbolsquesto aggiunge un +e rende un po 'più forte il suggerimento per il contenuto piegato.

Lo stesso Baraccone consente anche ai clic del mouse sulla linea di attivare / disattivare la visualizzazione usando S-mouse-2(o spostando il clic centrale). È integrato e può essere abilitato con hs-minor-mode.


1
Bello, hideshowvis.el usa un hack simile a quello che sto suggerendo, ma senza la bruttezza di dover fare doppio clic (leggendo l'evento non elaborato). Grazie per il puntatore.
Sigma,

3
Hideshowvis.elfunziona benissimo, grazie! Ho avuto dei problemi a farlo funzionare su file JSON con js3-mode; per ovviare a questi problemi, dovevo assicurarmi che hideshowvis fosse abilitato solo dopo tutte le azioni in coda, ad esempio:(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,

Adesso è su melpa.
pastore,

4

Anche se non credo che gli elementi marginali possano ricevere direttamente clic (potrei sbagliarmi però), un possibile trucco sarebbe quello di vincolare (kbd "<left-fringe> <double-mouse-1>")

Poiché il primo clic sposterebbe il punto all'inizio della riga che corrisponde all'icona della frangia, testare il valore della (point)tua ipotetica funzione (non) di piegatura ti permetterebbe di identificare quale parte del codice da (un) piegare, o se devi fare qualsiasi cosa (nel caso in cui nessuna icona di frangia sia presente per questa linea)

esempio con un buffer in modalità org:

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

Fare doppio clic sulla frangia per scorrere la sottostruttura corrispondente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.