현재 내가 작업하고있는 프로젝트에 새로운 C 들여 쓰기 스타일을 만드는 데 어려움을 겪고 있습니다. 이것은 내가 이런 짓을 :이맥스의 어느 부분이 변수를 오버라이드하는지 확인하는 방법
(c-add-style "ck-style"
'("bsd"
(c-auto-align-backslashes . nil)
(c-basic-offset . 4)
(c-offsets-alist . ((case-label . +)
(label . -)
(statement-case-open . +)))
(fill-column . 78)
(indent-tabs-mode . t)
(tab-width . 4)))
(defun ck-init-c()
(if (string-match "/project/" buffer-file-name)
(c-set-style "ck-style")
(c-set-style "bsd")))
(add-hook 'c-mode-hook 'ck-init-c)
나는 또한 c-indentation-style
의 가치를 보여주는 후크로 호출하고 훅에 확실히 올바른 값을 가지고 (message)
추가 디버그. 그러나 버퍼를 체크인 할 때 c-indentation-style
의 값은 "bsd"
으로 다시 설정됩니다. 거기에 초기화의 어떤 부분이 이것을 일으키는 지 확인하는 방법이 있습니까? GDB에서 시계 식과 같은 것이 있습니까?
더 쉬운 방법은 [디렉토리 변수] (http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html)를 참조하십시오. '.dir-locals.el' 파일을 원하는 설정으로 프로젝트 폴더에 넣기 만하면됩니다. 그것은 폴더 범위의'init.el'처럼 행동합니다. – harpo
@harpo nice, 아직 디렉토리 변수에 대해 몰랐습니다. 포인터 주셔서 감사! 그러나 디버깅을 목적으로 해답을 알고 있다면 여전히 유용 할 것입니다. – ckruse
@harpo 프로젝트 트리에 이미 그런 것이 있는지 궁금하게 생각하게되었습니다. 그리고 yes입니다.'(c-file-style. "bsd")'가 .dir-locals.el에 설정되었습니다. 그래서 내'c-set-style'가 덮어 쓰기 때문입니다. 다시 한 번 감사드립니다! – ckruse