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*"))