it-swarm.com.de

emacs LISP, wie Puffer Hauptmodus zu bekommen?

Ich habe versucht, Google zu durchsuchen und im Handbuch nachzuschlagen, kann aber immer noch nicht herausfinden, wie der Hauptmodus eines Pufferobjekts ermittelt werden kann. Können Sie mir mit einem Beispiel oder einer Referenz helfen. Vielen Dank

die einzige Lösung, die ich finden konnte, bestand darin, den Hauptmodus abzufragen, nachdem der Puffer geändert und dann wieder auf den ursprünglichen Puffer zurückgesetzt wurde. Gibt es einen besseren Weg, dies zu tun?

51
Anycorn

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 stellt Ihren Puffer wieder her, wenn er zurückgegeben wird.

37
Aidan Cully

Für aktuellen Puffer:

(message "%s" major-mode)
38
Adobe

Ein einfacher Weg, dies zu tun, ist die Verwendung der Funktion buffer-local-value, da major-mode eine lokale Variable des Puffers ist:

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

Erweitere nur die vorherigen Antworten - Aufruf ohne Argumente, um den Modus des aktuellen Puffers 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))))

Z.B. in * scratch * Puffer:

(buffer-mode) => 'LISP-interaction-mode

(buffer-mode "tasks.org") => 'org-mode
7
Brian Burns

Nun, der Beschreibungsmodus erfordert ein optionales Pufferargument, aber das zeigt die Hilfe an ... und ich bin nicht genau sicher, was es zurückgibt ... 

Aber das ist das Beste, was ich bei einer kurzen Suche finden könnte ... sorry ...

0
Brian Postow

Einfach bewerten:

(print major-mode)
0
sidharth arya