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?

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top