programing

emacs lisp, 버퍼 메이저 모드를 얻는 방법?

shortcode 2021. 1. 18. 08:23
반응형

emacs lisp, 버퍼 메이저 모드를 얻는 방법?


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

글쎄, describe-mode는 선택적 버퍼 인수를 사용하지만 도움말을 표시합니다 ... 그리고 그것이 무엇을 반환하는지 정확히 모르겠습니다 ...

하지만 그게 제가 간단한 검색에서 찾을 수있는 최고입니다 ... 죄송합니다 ...


간단히 평가하십시오.

(print major-mode)

참조 URL : https://stackoverflow.com/questions/2238418/emacs-lisp-how-to-get-buffer-major-mode

반응형