tutorial - installer emacs




Comment puis-je faire en sorte que les lignes de mise en évidence d'emacs dépassent 80 caractères? (5)

Voici un exemple de code qui mettra en évidence le texte qui se trouve au-delà de la colonne 80 avec le visage 'warning' actuel, et une ligne pour l'activer en mode C ++.

;; Turn on warn highlighting for characters outside of the 'width' char limit
(defun font-lock-width-keyword (width)
  "Return a font-lock style keyword for a string beyond width WIDTH
   that uses 'font-lock-warning-face'."
  `((,(format "^%s\\(.+\\)" (make-string width ?.))
     (1 font-lock-warning-face t))))

(font-lock-add-keywords 'c++-mode (font-lock-width-keyword 80))

Cela ne met pas en évidence toute la ligne, mais je trouve que c'est raisonnablement utile.

Je sais qu'il y a des solutions pour faire en sorte qu'emacs montre la colonne de 80 lignes, mais je ne veux pas ce genre de perturbation visuelle. Je voudrais juste faire ressortir une ligne si c'est plus de 80 caractères.


Voir le whitespace-mode - il fait maintenant partie d'Emacs, et peut faire beaucoup plus que mettre en évidence seulement de longues lignes. (Mais bien sûr, peut être utilisé pour faire seulement cela.)


Voici ma config d' Emacs Dev Kit :

;; whitespace-mode
;; free of trailing whitespace and to use 80-column width, standard indentation
(setq whitespace-style '(trailing lines space-before-tab
                                  indentation space-after-tab)
      whitespace-line-column 80)

Fondamentalement, vous n'avez besoin que du dernier bit, mais je trouve les autres paramètres très utiles (je déteste les onglets et les espaces de fin).


Ce n'est pas exactement ce que vous vouliez, mais j'ai eu un problème similaire et j'ai trouvé cette question / réponse. Tout ce que je voulais, c'était d'insérer un guide visuel, quand j'en avais besoin. C'est ce que j'ai finalement fini par:

(defun insert-80 ()
    "Insert an 80-character-wide guide at beginning of line."
    (interactive)
    (beginning-of-line)
    (insert "0         1         2         3         4         5         6         7         |")
    (newline)
    (insert "01234567890123456789012345678901234567890123456789012345678901234567890123456789|")
    (newline)
)

Super simple, mais parfois très efficace.


Il y a un paquet intégré dans emacs-goodies-el (recommande de l'installer dans le terminal) appelé highlight-beyond-fill-column.el , ajoutez ceci à votre .emacs ou init.el :

(setq-default fill-column 80)
(add-hook 'prog-mode-hook 'highlight-beyond-fill-column)
(custom-set-faces '(highlight-beyond-fill-column-face
                    ((t (:foreground "red" )))))

Le texte au fill-column delà de fill-column qui est 80 dans l'extrait sera mis en évidence avec la couleur du red . Vous pouvez définir le visage comme vous le souhaitez.





emacs