문제

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top