Emacs的lisp,如何获得缓冲区的主要模式?

我试图search谷歌,看手册,但仍然无法find如何获得缓冲区对象的主要模式。 你能帮我一个例子或参考。 谢谢

我只能find的解决scheme是在更改缓冲区后查询主模式,然后更改回原始缓冲区。 有没有更好的方法来做到这一点?

这有什么问题吗?

(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将返回缓冲区。

对于当前缓冲区:

 (message "%s" major-mode) 

一个简单的方法是使用buffer-local-value函数,因为major-mode是缓冲区局部variables:

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

只是从以前的答案延伸,调用当前缓冲区的模式没有参数。

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

那么,describe-mode需要一个可选的缓冲区参数,但显示的帮助…我不完全确定它返回什么…

但是,这是我可以在一个简短的search中find最好的…抱歉…

Interesting Posts