emacs elisp major-mode

emacs lisp, ¿cómo obtener el modo principal de buffer?



elisp major-mode (5)

¿Hay algún problema con eso?

(defun buffer-mode (buffer-or-string) "Returns the major mode associated with a buffer." (with-current-buffer buffer-or-string major-mode))

with-current-buffer restaurará tu buffer cuando vuelva.

Intenté buscar en Google y buscar en el manual, pero todavía no puedo encontrar cómo obtener el modo principal de un objeto de memoria intermedia. ¿Me pueden ayudar con un ejemplo o una referencia? Gracias

La única solución que pude encontrar fue consultar el modo principal después de cambiar el búfer y luego volver al buffer original. Hay una mejor manera de hacerlo?


Bueno, describe-mode toma un argumento de buffer opcional, pero eso muestra la ayuda ... y no estoy exactamente seguro de lo que devuelve ...

Pero eso es lo mejor que pude encontrar en una breve búsqueda ... lo siento ...


Para el búfer actual:

(message "%s" major-mode)


Simplemente extendiendo las respuestas anteriores, llame sin argumentos para el modo del búfer en uso.

(defun buffer-mode (&optional buffer-or-name) "Returns the major mode associated with a buffer. If buffer-or-name is nil return current buffer''s mode." (buffer-local-value ''major-mode (if buffer-or-name (get-buffer buffer-or-name) (current-buffer))))


Una forma simple de hacerlo es usar la función buffer-local-value ya que major-mode es una variable buffer-local:

(buffer-local-value ''major-mode (get-buffer "*scratch*"))