¿Cómo contar los caracteres en el búfer, incluidos los espacios?

12

Necesito ver cuántos caracteres contiene mi texto mientras escribo. Encontré estas páginas de Emacs Wiki: Word count , y hay una solución muy parecida a la que necesito: utilicé la segunda solución de esta página (Mostrar el número de palabras en la línea de modo), porque muestra la cantidad de personajes también.

Pero no cuenta espacios. ¿Hay alguna solución que muestre la cantidad de caracteres, incluidos los espacios en la línea de modo? Idealmente, con la configuración de la cantidad objetivo de caracteres (pero esto no es necesario).

Aglavra
fuente

Respuestas:

4

La mode-line-formatvariable ya tiene esa capacidad incorporada, el siguiente fragmento debe agregar eso cerca del final de su línea de modo.

(add-to-list 'global-mode-string '(" %i"))

Del Doc:

% i: imprime el tamaño del búfer.

Técnicamente, este es el tamaño en bytes, por lo que podría no coincidir perfectamente con el número de caracteres dependiendo de la codificación que utilice.

También puede tratar, M-x size-indication-mode.


Si el número de bytes no lo satisface, puede usar el siguiente fragmento, que puede causar o no retraso a medida que escribe en buffers muy grandes.

(add-to-list 'global-mode-string
             '(:eval (format " %s"
                       (let ((tab-width 1))
                         (string-width (buffer-string))))))
Malabarba
fuente
10

Alternativamente, cuente palabras y caracteres incluyendo espacios en una selección:

M-x count-words-region
Kirill Yunussov
fuente
4

O podrías simplemente M->C-x =. La información relevante aparecerá en el minibúfer. (Comandos utilizados: end-of-buffery what-cursor-position).

wvxvw
fuente
3

Otras respuestas te han dado información útil, creo. Puede poner lo que quiera en la línea de modo, y un lugar para comenzar es una size-indication-modevariable variable mode-line-position.

Las otras respuestas generalmente le indican la posición actual del búfer en relación con el inicio del búfer (o el inicio de su restricción actual, si se reduce).

A veces es posible que desee la posición relativa a otra posición. Para eso, la biblioteca modeline-posn.elpuede ayudar (ver Posición de línea de modo ).

Cuando la región no está activa, muestra la información habitual (bueno, un poco mejor). Pero cuando está activo, le muestra (en la línea de modo) el número de caracteres y líneas en la selección (región). Entonces, para ver la posición actual en relación con alguna otra posición, solo use C-SPCpara establecer la marca en una de las posiciones. C-x C-xactiva la región, que muestra su tamaño en caracteres (y líneas) en la línea de modo.

Dibujó
fuente
2

A menos que esté malentendido, podría usar point-maxpara obtener el número de caracteres en el búfer:

(defun count-chars ()
  (interactive)
  (save-restriction
    (widen)
    (message "%s characters" (1- (point-max)))))
Dan
fuente
1
Funciona, pero esto no es exactamente lo que quiero: quiero tener un número de caracteres siempre delante de mis ojos, mientras escribo, sin obtenerlo "a pedido".
Aglavra
@Aglavra agréguelo a su línea de modo.
Jordon Biondo
Ah Es posible que desee probar size-indication-mode, o modificar la mode-line-positionvariable en su lugar, entonces.
Dan