EMACS LISP, wie kann man den Major -Modus von Puffer erhalten?
-
19-09-2019 - |
Frage
Ich habe versucht, Google zu durchsuchen und im Handbuch zu schauen, kann aber immer noch nicht finden, wie man einen großen Modus eines Pufferobjekts erhält. Können Sie mir bei einem Beispiel oder einer Referenz helfen? Vielen Dank
Die einzige Lösung, die ich finden konnte, war das Abfragen von Major-Mode, nachdem ich den Puffer geändert und dann wieder in den Originalpuffer umgestellt hatte. Gibt es einen besseren Weg, dies zu tun?
Lösung
Gibt es ein Problem damit?
(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
Wird Ihren Puffer wiederherstellen, wenn er zurückkehrt.
Andere Tipps
Für den aktuellen Puffer:
(message "%s" major-mode)
Eine einfache Möglichkeit, dies zu tun, besteht darin, die zu verwenden buffer-local-value
Funktion seit major-mode
ist eine Puffer-lokale Variable:
(buffer-local-value 'major-mode (get-buffer "*scratch*"))
Nur von früheren Antworten auszudehnen - rufen Sie ohne Argumente an, um den aktuellen Puffermodus zu erhalten:
(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))))
ZB in * Scratch * Puffer:
(buffer-mode) => 'lisp-interaction-mode
(buffer-mode "tasks.org") => 'org-mode
Nun, beschreiben Sie-Modus nimmt ein optionales Pufferargument an, aber das zeigt die Hilfe an ... und ich bin mir nicht genau sicher, was es zurückgibt ...
Aber das ist das Beste, was ich bei einer kurzen Suche finden konnte ... Entschuldigung ...
Bewerten Sie dies einfach:
(print major-mode)