2010-09-02 18 views
9

Me gustaría que mi numeración linum-mode esté alineada a la derecha. Lo más parecido que he encontrado está en emacswiki, pero no funciona - parece que alineó a la izquierda los dígitos en lugar de alinear a la derecha. The snippet is found here. Perdón por el sangrado horrible, lisp es bastante extraño para mí :)¿Alinea a la derecha los números de línea con el modo de línea?

(setq linum-format        
     (lambda (line)          
    (propertize         
    (format         
     (let         
     ((w (length (number-to-string (count-lines (point-min)   
          (point-max))))))  
    (concat "%" (number-to-string w) "d ")) line) 'face 'linum))) 

¿Alguna idea?

Respuesta

4

Personalizar variable de Linum-formato, por ejemplo, para alinear a la derecha en 7 caracteres:

(custom-set-variables '(linum-format (quote "%7d"))) 
+2

Me hubiera gustado mucho más si hubiera sido hecho dinámicamente, pero una vez que un archivo pasa 1000 líneas, no importa de todos modos. ¡Gracias! :) Me conformé con '% 4d'. – monotux

18

Usted sólo puede utilizar el valor 'dynamic por lo que no tiene que elegir una cantidad arbitraria de padding:

(custom-set-variables '(linum-format 'dynamic)) 

O también se puede personalizar con: M-x customize-variable RET linum-format

además, @asmeurer preguntó cómo todavía para añadir un espacio después del número con dynamic. No hay manera fácil de hacer eso, sino que se puede lograr usando defadvice alrededor de la función linum-update-window que me he adaptado a partir del código de dynamic que ya está en esa función:

(defadvice linum-update-window (around linum-dynamic activate) 
    (let* ((w (length (number-to-string 
        (count-lines (point-min) (point-max))))) 
     (linum-format (concat "%" (number-to-string w) "d "))) 
    ad-do-it)) 
+0

Gracias. También puede cambiar esto con 'M-x customize'. – asmeurer

+1

¿Cómo se puede usar el uso dinámico y aún agregar un espacio después del número? Estoy seguro de que es sencillo, pero sigo siendo bastante nuevo para lisp. – asmeurer

+1

@asmeurer Actualicé mi respuesta para mostrar cómo usar 'defadvice' para agregar un espacio después del número. Y sí, puedes usar 'customize' que está relacionado con' custom-set-variables'. – aculich

-2

cambio del linum.el y de byte compilar-archivo a .elc.

para Emacs 23.3

línea 143 de linum.el

    (concat "%" (number-to-string w) "d" " | "))))) 

que cambiar el valor predeterminado fortaleza a "xxx |".

+0

Cambiar el código directamente no es una buena solución a largo plazo a menos que vaya a enviar un parche de inicio que cree que será aceptado; de lo contrario, cuando la instalación de emacs se actualice, perderá esos cambios. En cambio, en su archivo 'init.el' puede agregar' defadvice' para la función 'linum-update-window', como las [últimas ediciones de mi respuesta] (http://stackoverflow.com/a/8470136/462302) muestra cómo hacerlo. – aculich

Cuestiones relacionadas