디렉토리의 파일에 대한 emacs 문자 코딩을 어떻게 설정합니까?


2

GNU Emacs 23.3.50.1의 배포판 인 Aquamacs를 사용하고 있습니다.

그리스어로 일부 주석으로 작성된 일부 소스 파일을보고 있는데 CP1253으로 인코딩되어 있습니다.

그리고 적절한 인코딩으로 되돌 리거나 파일 로컬 변수를 추가 할 수 있습니다.

/* -*- mode: c-mode; tab-width: 4; coding: cp1253-unix; -*- */

그래서 그것들을 올바르게 열 수 있고, 각 파일에 파일 변수를 지정할 수 있습니다.

그러나 전체 디렉토리의 코딩을 설정하고 싶습니다. .dir-locals.el을 수동으로 편집하는 대신 간단히 다음과 같이 생각했습니다.

M-x copy-file-locals-to-dir-locals

올바르게 열린 파일에서. 그리고 그것은 생성합니다 :

;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((c-mode
  (tab-width . 4)
  (coding . cp1253-unix)))

주사위가 없습니다. 그러나 새로운 탭 너비를 명확하게 인식하므로 파일을 읽습니다.

어떤 아이디어가 있습니까? emacs가 a-list를 처리 할 때 어떤 로그가 있습니까?


emacs24를 사용 coding하여 .dir-locals.el 에 설정하려고 하면 새 파일을 열 때 경고가 표시됩니다.Warning (:warning): Coding cannot be specified by dir-locals
ggll

답변:


1

불행히도 코딩 헤더는 의도적으로 Emacs dir-locals에서 전파되지 않는 것으로 보입니다. 설정에 어려움을 겪고 문제를 재현했습니다.

나중에 나는 당신이 발견 한 것을 확인하는 것으로 보이는이 소스를 발견했습니다 : http://www.emacsmirror.org/package/dir-locals.html

a-리스트를 처리하기위한 로그가 있는지 확실하지 않지만이 변수에 익숙하지 않은 경우 다음을 사용하여 파일을 방문한 후 인코딩을 확인할 수 있습니다.

C-h v buffer-file-coding-system RET

또는

M-x describe-variable RET buffer-file-coding-system RET

개인적으로, 최선의 방법은 이미 지역 변수 인 파일 작업을하는 것입니다.

내가 생각할 수있는 대안 (처음 테스트되지 않음)은 elisp 함수 중 일부를 살펴 보는 것입니다.

(coding-system-priority-list)
(set-coding-system-priority &rest coding-systems)

또는 두 번째 : (디렉토리 구조가 /something/blah/greekcode/file.c라고 가정)

(add-to-list 'auto-coding-alist 
     '("/greekcode/[^/]+.c\\'" . cp1253-unix))

이것은 파일 로컬 변수보다 우선합니다. 필요에 따라 정규 표현식을 수정하고 다음을 평가하여 실험하십시오.

(find-auto-coding "/home/brian/greekcode/garbage.c" 1) <= C-x C-e

보고:

(cp1253-unix . auto-coding-alist)

잘만되면 이것이 도움이된다! 다른 이맥스 사용자가 솔루션으로 제안하는 것을 듣고 싶습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.