我試圖搜索谷歌並查看手冊,但仍然無法找到如何獲取緩衝區對象的主要模式。你能幫我用一個例子或引用。由於的Emacs Lisp,如何獲得緩衝區的主要模式?
唯一的解決辦法我能找到的是改變了緩衝區,然後變回原來的緩衝區之後查詢的主要模式。有沒有更好的方法來做到這一點?
我試圖搜索谷歌並查看手冊,但仍然無法找到如何獲取緩衝區對象的主要模式。你能幫我用一個例子或引用。由於的Emacs Lisp,如何獲得緩衝區的主要模式?
唯一的解決辦法我能找到的是改變了緩衝區,然後變回原來的緩衝區之後查詢的主要模式。有沒有更好的方法來做到這一點?
有沒有用的問題?
(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
將在它返回時恢復您的緩衝區。
好,說明模式有一個可選的緩衝說法,但顯示的幫助...我不完全相信它返回......
但是,這是我能找到一個簡短的最好搜索...對不起...
一個簡單的方法來做到這一點是使用buffer-local-value
功能,因爲major-mode
是一個緩衝區局部變量:
(buffer-local-value 'major-mode (get-buffer "*scratch*"))
對於當前緩衝區:
(message "%s" major-mode)
感謝Adobe和現在請端口PS到Linux :) – 2016-08-10 12:33:13
從以前的答案就在延伸通話沒有當前緩衝區模式的參數。
(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))))
你也可以用做'(與電流緩衝緩衝或字符串主要模式)的''而不是保存,excursion'。 – haxney 2010-02-11 09:53:28
@haxney:使用'(save-excursion(set-buffer ..)...)'確實已被棄用,以支持'(with-current-buffer ...)'。 Emacs的-24的字節,編譯器發出警告等用途。 – Stefan 2012-09-19 20:12:35