2011-02-07 4 views
12

Aparece este error gráfico con linum-mode en mi Emacs. Traté de actualizar de 23 a 24 (a través de git) y lo intenté con varios binarios proporcionados en línea y con mi versión compilada en casa. Lo que realmente me interesa es dónde comenzar a diagnosticar el problema.¿Qué causa este error gráfico en emacs con linum-mode en OS X?

"Tearing" of numbers in linum-mode

El problema desaparece si me desplazo los números de línea desgarradas fuera de la pantalla y de nuevo.

Respuesta

11

he experimentado el mismo problema y pasó bastante tiempo tratando de resolverlo. El error gráfico es el resultado de un choque entre el modo Linum y cómo se representa el flequillo. Lamentablemente, no pude resolver el problema en linum.el y el código de visualización de franjas es parte de la fuente C.

¡Todavía se puede hacer! La forma más fácil de arreglarlo es simplemente apagar el flequillo.

M-x fringe-mode RET none RET 

Para hacer los flecos quedarse permanentemente fuera, recomiendo la personalización de la configuración con M-x customize-group RET fringe porque algunas versiones compiladas de Emacs para Mac OS X tienen sus propios ajustes marginales que se pueden superponer partes de su archivo .emacs.

Realmente no necesito esos indicadores de línea, así que no tener un flequillo no me molesta. Sin embargo, me perdí una pequeña separación entre los números de línea y el texto del búfer. Seguí el consejo de una publicación en Emacs Wiki para recuperar ese espacio. En la versión 0.9x de Linum, cambiar la línea 160 de

(setq width (max width (length str))) 

a

(setq width (max width (+ (length str) 1))) 

La inspiración para este cambio está aquí: http://www.emacswiki.org/emacs/LineNumbers

hay argumentos en el enlace de la fuente para establecer el linum-format variable en lugar de modificar linum.el. Si bien entiendo de dónde vienen, la mayoría de los temas de colores en estos días darán color al espacio extra y no proporcionarán lo que estoy buscando (una separación de aproximadamente un espacio que es el color de fondo). Si edita linum.el, asegúrese de ejecutar

M-x emacs-lisp-byte-compile-and-load 

para hacer que los cambios sean persistentes. Puede ver el resultado de esto mirando el espacio antes del cursor en la imagen que se encuentra aquí: http://i.stack.imgur.com/TxyMr.png (No tengo suficiente reputación para incrustar imágenes).

¡No más artefactos gráficos!

0

Así es como lo tengo configurado en mi .emacs y no tengo el problema, aunque tampoco uso emacs con gtk o cualquier otra interfaz gráfica de usuario.

(+1-modo de Linum)

(setq Linum de formato "% d")

Es posible que desee cortar alrededor con (setq linum-format) para ver si usted puede conseguir buenos resultados. Además, no olvides navegar por emacswiki on linum.

7

Tuve el mismo problema y encontré una solución y aunque no es la más bonita, debido a un espacio adicional a la izquierda del número de línea, es mucho más elegante que cambiar el linum.el. Aquí está la parte pertinente de mis ~/.emacs:

;; Linum mode                                                       
(global-linum-mode t)                                                     
;; Offset the number by two spaces to work around some weird fringe glitch                                          
(setq linum-format " %d ") 

Esto elimina el problema de superposición flecos y no tiene ningún otro tipo de impacto que no sea compensando el número de línea.

0

para hacer una separación entre los números de línea y el texto del búfer, el cambio de seguimiento será mejor:

En la versión 0.9x de Linum, línea de cambio 150 de

(concat "%" (número -to-cadena w) "d")))))

a

(concat "%" (número-a-cadena w) "d")))))

esta marca la separación tiene el mismo color de fondo con los números de línea '.

+0

editar el código original no es una gran idea, sin embargo. Sugeriría adoptar el código en la siguiente respuesta y, en su lugar, realizar el cambio: http://stackoverflow.com/a/11496199/324105 – phils

0

El problema todavía estaba aquí en emacs 24.4, OS X 10.10.1. La solución que funcionó: después de cargar el tema de su elección:

(load-theme 'whatever) 
(set-face-attribute 'fringe nil :background (face-background 'default))