EMACS LISP, 버퍼 주요 모드를 얻는 방법?
-
19-09-2019 - |
문제
Google을 검색하고 매뉴얼을 보려고했지만 여전히 버퍼 객체의 주요 모드를 얻는 방법을 찾을 수 없습니다. 예제 나 참조로 저를 도와 줄 수 있습니다. 감사
내가 찾을 수있는 솔루션은 버퍼를 변경 한 후 원래 버퍼로 다시 변경 한 후 메이저 모드를 쿼리하는 것이 었습니다. 더 좋은 방법이 있습니까?
해결책
그것에 문제가 있습니까?
(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
버퍼-로컬 변수입니다.
(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))))
예를 들어 * 스크래치 * 버퍼 :
(buffer-mode) => 'lisp-interaction-mode
(buffer-mode "tasks.org") => 'org-mode
글쎄, 설명 모드는 선택적인 버퍼 인수를 가져 오지만 도움이 표시됩니다 ... 그리고 그것이 무엇을 반환하는지 정확히 잘 모르겠습니다 ...
하지만 그게 내가 간단한 검색에서 찾을 수있는 최고입니다 ... 죄송합니다 ...
이것을 간단히 평가하십시오 :
(print major-mode)
제휴하지 않습니다 StackOverflow