확장명에 의존하지 않는 파일의 주 모드를 식별하는 방법은 여러 가지가 있습니다. 설명서의 파일 모드 선택을 참조하십시오 .
처리중인 파일의 종류에 따라을 사용할 수 있습니다 magic-mode-alist
. 또한 auto-mode-alist
일치하는 확장자로만 제한되지는 않습니다. 파일 이름 또는 경로의 모든 부분을 일치시킬 수 있습니다.
처리하는 파일이 해당 메커니즘에 대해 일관성이없는 경우 한 가지 옵션은 auto-mode-alist
전체 파일 이름과 일치하는 항목 을 추가 하거나 일부 프로젝트의 루트 경로와 일치하고 사용자 정의 함수를 호출하여 이름을 모드와 일치시키는 것입니다.
지정된 디렉토리의 모든 파일이 동일한 유형 인 경우 디렉토리 로컬 변수를 사용하여 모드를 설정할 수도 있습니다. 디렉토리 변수는 .dir-locals 파일이 아닌 init 파일에서 설정할 수 있습니다 . 자세한 내용 은 디렉토리 변수 를 참조하십시오.
최신 정보
다음은 자신의 절대 파일 이름 및 주요 모드 목록을 관리하는 빠른 시도입니다.
(defvar my-custom-mode-alist '())
(defvar my-custom-mode-alist-file (expand-file-name "custom-file-assoc" user-emacs-directory))
;; command to save the file->mode association of the current buffer
(defun save-file-mode-association ()
(interactive)
(when buffer-file-name
(add-to-list 'my-custom-mode-alist (cons buffer-file-name major-mode))
(write-custom-mode-alist my-custom-mode-alist-file)))
(defun write-custom-mode-alist (file)
(with-current-buffer (get-buffer-create " *Custom File Assocations*")
(goto-char (point-min))
(delete-region (point-min) (point-max))
(pp my-custom-mode-alist (current-buffer))
(condition-case nil
(write-region (point-min) (point-max) file)
(file-error (message "Can't write %s" file)))
(kill-buffer (current-buffer))
(message "Wrote custom file associations to file %s" file)))
(defun load-custom-mode-alist (file)
(when (file-exists-p file)
(with-current-buffer
(let ((enable-local-variables nil))
(find-file-noselect file))
(goto-char (point-min))
(setq my-custom-mode-alist (read (current-buffer)))
(setq auto-mode-alist (append auto-mode-alist my-custom-mode-alist))
(kill-buffer (current-buffer)))))
;; Load any custom file associations and add them to auto-mode-alist
(load-custom-mode-alist my-custom-mode-alist-file)
# -*- mode: conf -*-
Emacs가 사용하도록 팁을conf-mode
줍니다. 이 중 몇 개가없고 정규식을 통해 일치시킬 수 있으면 정규 표현식을에 추가 할 수 있습니다automode-alist
.