Como programador, quiero ver una regla en una columna específica (generalmente 80), así que veo cuándo cruzo esa columna, pero también para ver qué tan cerca me estoy acercando para poder formatear mi código temprano.
Las opciones que he encontrado hasta ahora no logran este objetivo:
whitespace-mode
,column-enforce-mode
ycolumn-marker
solo resalta filas individuales después de que el texto en la fila ya haya pasado elfill-column
. Me gustaría ver cuándo me estoy acercando a la columna, no solo cuando la cruce.fill-column-indicator
sería una buena solución, salvo que se rompeauto-complete-mode
,company-mode
,avy
, y mucho más. Estos son problemas que parecen difíciles de solucionar, cada uno de los cuales requiere una solución individual; por ejemplo, vea elcompany-mode
problema y elauto-complete-mode
problema , el último tiene más de dos años).
¿Hay alguna alternativa mejor?
display
font-lock
programming
Jorgen Schäfer
fuente
fuente
(set-window-margins nil 0 (max (- (window-width) 80) 0))
Entonces, si tiene una ventana de 120 caracteres de ancho, reducirá el espacio que tiene para mostrar el código a 80 caracteres. De esta manera, no estropeará la configuración de su ventana y puede desactivarla si lo desea. Si tiene flecos, en realidad habrá una línea dibujada en 80 columnas.Respuestas:
fill-column-indicator
es la solución más madura, y si encuentra código basado en superposición con el que entra en conflicto, puede agregar código para suspenderfci-mode
mientras el código conflictivo está activo. Por ejemplo, el siguiente código hace que funcione conauto-complete
:fuente
company-mode
.popup-create
ypopup-delete
, dependiendo de su caso de uso, es posible que necesite asesorar diferentes funciones.Aquí hay una opción que es más robusta, no rompe casi nada (ocasionalmente, el modo de empresa es una excepción notable), pero no es tan conveniente como
fill-column-indicator
.Utilice el formato de línea de encabezado para marcar la columna 80 en el encabezado.
Algo como lo siguiente debería ser suficiente:
Debe cambiar el número de espacios en esa primera cadena dependiendo del tamaño de su franja izquierda. Pero aparte de eso, esto debería funcionar razonablemente bien. No es tan conveniente como una regla en el búfer real, pero ayuda.
También puede configurarlo para que se aplique solo en buffers de programación.
Resultado:
debería obtener algo como lo siguiente (la primera línea no está realmente en el búfer, sino en el encabezado).
fuente
M-x ruler-mode
.Después de mucho sufrimiento debido a la
fill-column-indicator
introducción de varios errores , lo eliminé de mi configuración para siempre.Lo que uso actualmente es la funcionalidad integrada de Emacs para resaltar líneas que son demasiado largas. Esto incluso se ve mejor, no lo habilitaría
fill-column-indicator
ahora, incluso si estuviera libre de errores.Para empezar, puedes tomar mi configuración:
Luego habilítelo donde desee. Lo uso solo en el contexto de programación:
fuente
Emacs 27 admitirá un indicador de columna de relleno de forma nativa a través del modo menor local de búfer
display-fill-column-indicator-mode
y su contraparte globalglobal-display-fill-column-indicator-mode
.Aquí está en acción:
quoth
(emacs) Displaying Boundaries
:fuente
Esta página de EmacsWiki tiene mucha información sobre diferentes formas de marcar una columna en particular o informarle cuando la pase.
El que uso es Mode Line Position .
Pero otros incluyen mostrando una línea vertical en la columna ( Columna marcador , fill-column Indicador ) y usando el modo de espacio en blanco para resaltar el texto que va más allá de la columna.
(Si necesita que la línea esté muy a la derecha de todo el texto en todas las filas, siempre puede activarla
picture-mode
, pero eso probablemente sea útil aquí solo como una solución temporal).Vea también Buscar largas colas para encontrar formas de largas colas bajo demanda.
fuente
No es exactamente lo que quieres, pero una regla como @ Malabarba desperdiciará espacio, aquí hay una mejor solución:
Hay un paquete incorporado en
emacs-goodies-el
(recomiende instalarlo en la terminal) llamado highlight-beyond-fill-column.el , agregue esto a su.emacs
oinit.el
:El texto más allá del
fill-column
cual está 80 en el fragmento se resaltará con el color dered
. Puedes configurar la cara como quieras.fuente
Como
fill-column-indicator
es bastante pesado, esta solución muestra un carácter a la derecha de la línea actual.Entonces, cuando está escribiendo, puede ver el límite de línea antes de excederlo.
Esto define el modo menor
hl-line-margin-mode
:Si usa
evil-mode
y desea limitar esto al modo de inserción, puede agregar los siguientes ganchos:fuente