Je voudrais configurer ma frange Emacs pour afficher les sections de pliage de code.
Par exemple, BBEdit sur Mac afficherait ce qui suit lors de la modification d'un fichier JSON:
Les marques elles-mêmes sont actionnables: cliquer sur une marque développerait ou réduirait la section de code correspondante. Lorsque le document ne dispose pas d'un mode prenant en charge le pliage de code, la frange n'est pas affichée.
Est-il possible d'étendre la fonctionnalité des franges Emacs de cette manière?
la source
Hideshowvis.el
fonctionne très bien, merci! J'ai eu quelques problèmes pour le faire fonctionner avec les fichiers JSONjs3-mode
; pour contourner ces problèmes, je devais m'assurer que le masquage ne soit activé qu'après toutes les actions dans la file d'attente, par exemple:(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)
Bien que je ne pense pas que les éléments marginaux puissent recevoir directement des clics (je peux me tromper cependant), un piratage possible serait de lier
(kbd "<left-fringe> <double-mouse-1>")
Étant donné que le premier clic déplacerait le point au début de la ligne qui correspond à l'icône de la frange, tester la valeur de
(point)
dans votre fonction de (dé) pliage hypothétique vous permettrait d'identifier la partie du code à (dé) plier, ou si vous devez faire quoi que ce soit (au cas où aucune icône de frange n'est présente pour cette ligne)exemple avec un tampon en mode org:
Double-cliquez sur la frange pour faire défiler le sous-arbre correspondant.
la source