Emacs Lisp, cómo conseguir amortiguar modo mayor?
-
19-09-2019 - |
Pregunta
He tratado de buscar en Google y buscar en el manual, pero todavía no puede encontrar la manera de llegar modo mayor de un objeto de memoria intermedia. ¿Me pueden ayudar con un ejemplo o una referencia. Gracias
única solución que pude encontrar fue a consultar major-mode después de cambiar el tampón y después se vuelve al búfer original. ¿Hay una mejor manera de hacerlo?
Solución
¿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á su búfer cuando se devuelve.
Otros consejos
Para búfer en:
(message "%s" major-mode)
Una forma sencilla de hacerlo es utilizar la función buffer-local-value
desde major-mode
es una variable local al búfer:
(buffer-local-value 'major-mode (get-buffer "*scratch*"))
Al igual que se extiende desde las respuestas anteriores - llamada sin argumentos para obtener el modo del búfer en:
(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))))
por ejemplo. en el búfer * scratch *:
(buffer-mode) => 'lisp-interaction-mode
(buffer-mode "tasks.org") => 'org-mode
Bueno, describir en modo toma un argumento búfer opcional, pero que 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 ...
Simplemente evaluar esta:
(print major-mode)