Domanda

Ho provato a cercare su Google e cercare nel manuale, ma ancora non riesce a trovare come ottenere maggiori modalità di un oggetto di buffer. Mi potete aiutare con un esempio o un riferimento. Grazie

unica soluzione che ho trovato è stato per interrogare principali modalità dopo aver cambiato il buffer e poi cambiare di nuovo al buffer originale. C'è un modo migliore per farlo?

È stato utile?

Soluzione

C'è un problema con questo?

(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 ripristinerà il buffer quando ritorna.

Altri suggerimenti

Per buffer corrente:

(message "%s" major-mode)

Un modo semplice per farlo è usare la funzione buffer-local-value poiché major-mode è una variabile buffer locale:

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

Basta che si estende da risposte precedenti - chiamare senza argomenti per ottenere la modalità del buffer corrente:

(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))))

es. nel buffer * scratch *:

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

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

Bene, descrivere modalità prende un argomento buffer di facoltativo, ma che consente di visualizzare l'aiuto ... e io non sono esattamente sicuro di cosa si ritorna ...

Ma questo è il migliore che ho trovato in una breve ricerca ... mi dispiace ...

Semplicemente valutare questa:

(print major-mode)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top