Estoy usando line-number-mode
para tener un indicador de la línea actual en mi línea de modo, sin embargo, para archivos grandes o más bien, archivos con líneas largas, comienza a mostrar dos signos de interrogación en lugar de un número de línea. He cavado un poco y descubrí que mientras line-number-mode
está definido simple.el
, las variables personalizables (y probablemente toda la lógica involucrada) están definidas xdisp.c
. Cambiar la line-number-display-width
variable a un número arbitrariamente alto podría solucionar esto, pero estoy mucho más interesado en el fragmento de código y la lógica que lo hace imprimir los dos signos de interrogación. Sería muy útil si alguno de ustedes pudiera encontrarlo para mí, tal vez incluso explicar la lógica detrás de esto.
fuente
M-: (format-mode-line "%l")
También muestra signos de interrogación?format-mode-line
.Respuestas:
Gracias a las sugerencias de @ lunaryorn pude localizar el código que causa esto. Parece que
format-mode-line
eventualmente llamadecode_mode_spec
para convertir los códigos de formato dados en valores. Para el caso de%l
esta función, realiza algunas verificaciones de cordura para evitar perder demasiado tiempo calculando, luego verifica si la línea actual está excediendoline-number-display-limit-width
. Como ese es el caso de mi archivo en cuestión, salta a unano_value
etiqueta que devuelve un relleno??
como valor."Resolver" esto implica establecer la variable en un valor suficientemente alto:
Este valor se obtuvo al observar la heurística correspondiente en la
xdisp.c
que toma la altura de la ventana multiplicada por dos más treinta y la multiplicaline-number-display-limit-width
, para evitar el desbordamientomost-positive-fixnum
en un sistema de 32 bits, un valor de 2000000 sería una apuesta segura.fuente
M-x set-variable <RET> line-number-display-limit-width <RET> 2000000 <RET>