Haga el porcentaje de visualización de la línea de modo y no "Superior / Inferior / Todo"


9

Línea de modo 's %pmuestra el porcentaje de la visión actual de la memoria intermedia:

% p El porcentaje del texto del búfer sobre la parte superior de la ventana, o 'Superior', 'Inferior' o 'Todo'. Tenga en cuenta que la construcción de línea del modo predeterminado trunca esto a tres caracteres.

No me gusta Top / Bottom / All y me gustaría mostrar siempre el porcentaje. ¿Hay una manera de lograr esto?


2
Tengo curiosidad por qué. Topsignifica 0%. Bottomsignifica 100% Allsignifica 100% y la parte superior también es visible. Puedes hacer casi todo lo que quieras con la línea de modo, pero en este caso sería un fastidio molestar con esto. Tenga en cuenta que puede invertir fácilmente la dirección del porcentaje: consulte %P(en lugar de %p).
Drew

3
Mi cerebro buscará un número cuando quiera saber dónde estoy. Cuando tengo que recordar ocasionalmente que también podría ser Superior / Inferior, entonces tengo que recordar eso.
ClojureMás principalmente

Una idea sería calcular el buffer de tamaño - es decir, el número de puntos - entre point-miny window-start, y window-end, y point-max, y, si se desea, el tamaño del búfer visible podría ser tenidos en cuenta - es decir, los puntos entre los window-startque window-end- los los cálculos se pueden hacer en un abrir y cerrar de ojos y no afectarían el rendimiento porque el punto no se mueve. Esos cálculos del tamaño del búfer podrían convertirse en porcentajes. Creo que esta es una respuesta, pero dejaré que alguien más la escriba porque hoy tengo otros proyectos en mente.
ley

Nunca me pareció útil saber el porcentaje de búfer anterior: \ En mi humilde opinión, conocer la línea actual / total_líneas y, finalmente, saber que TODO el búfer de contenido se muestra (cuando estoy en la primera línea) es más útil. Solo mi opinión, tal vez es mi experiencia la que no es lo suficientemente amplia.
Nsukami _

Respuestas:


5

Aquí hay un ejemplo de cómo puedes hacer algo como esto. Sin embargo, tenga en cuenta que muestra exactamente lo que solicitó (porcentaje de texto sobre la ventana), que probablemente no sea lo que realmente desea. Por ejemplo, nunca se muestra 100%, ya que siempre habrá algo de texto dentro de la ventana.

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-start) 0.01 (point-max)))))

También podría usar window-end, que tiene la desventaja opuesta (casi nunca muestra 0).

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-end) 0.01 (point-max)))))

Es posible que desee rodear estas cadenas con espacios o algún otro relleno.


0

La incorporada en el código de %pmiradas sólo en window-starty point-maxy calcula el porcentaje de esa manera. Puede encontrar esto usando C-h f format-mode-liney luego siguiendo el enlace a las fuentes de Emacs C (suponiendo que las tenga en alguna parte).

Entonces, puede hacer lo mismo usando un :evalformulario en mode-line-format.


77
¿Puede ampliar su respuesta para proporcionar la solución completa?
Kaushal Modi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.