Pergunta

Eu tentei pesquisar no Google e procurar no manual, mas ainda não consigo encontrar como obter o modo principal de um objeto buffer. Você pode me ajudar com um exemplo ou uma referência. Obrigado

A única solução que pude encontrar foi consultar o modo principal depois de alterar o buffer e depois voltar ao buffer original. Existe uma maneira melhor de fazer isso?

Foi útil?

Solução

Existe um problema com isso?

(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 Restaurará seu buffer quando ele retornar.

Outras dicas

Para buffer atual:

(message "%s" major-mode)

Uma maneira simples de fazer isso é usar o buffer-local-value função desde então major-mode é uma variável buffer-local:

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

Basta se estender de respostas anteriores - ligue sem argumentos para obter o modo do buffer atual:

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

Por exemplo, em * scratch * buffer:

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

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

Bem, o Mode Descrevante leva um argumento de buffer opcional, mas isso mostra a ajuda ... e não tenho exatamente certeza do que ele retorna ...

Mas esse é o melhor que pude encontrar em uma breve pesquisa ... desculpe ...

Basta avaliar isso:

(print major-mode)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top