web-dev-qa-db-fra.com

emacs LISP, comment obtenir le mode tampon majeur?

J'ai essayé de chercher sur Google et de regarder dans le manuel, mais je ne trouve toujours pas comment obtenir le mode majeur d'un objet tampon. Pouvez-vous m'aider avec un exemple ou une référence. Merci

la seule solution que je pouvais trouver était d'interroger le mode majeur après avoir changé le tampon, puis être revenu au tampon d'origine. Y a-t-il une meilleure façon de le faire?

51
Anycorn

Y at-il un problème avec ça?

(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 restaurera votre tampon quand il reviendra.

37
Aidan Cully

Pour le tampon actuel:

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

Une méthode simple consiste à utiliser la fonction buffer-local-value puisque major-mode est une variable tampon-locale

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

En prolongeant les réponses précédentes - appel sans arguments pour obtenir le mode du tampon actuel:

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

Par exemple. dans * tampon * tampon:

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

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

Décrire le mode prend un argument de tampon optionnel, mais cela affiche l'aide ... et je ne sais pas exactement ce qu'il retourne ... 

Mais c'est le meilleur que j'ai pu trouver dans une brève recherche ... désolé ...

0
Brian Postow

Évaluez simplement ceci:

(print major-mode)
0
sidharth arya