Emacs Lisp, come ottenere tampone modo maggiore?
-
19-09-2019 - |
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?
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)