2014-11-15 3 views
1

org-mode에서 열리는 파일과 관련된 테마 또는 사용자 정의면 세트를 지정하고 싶습니다. 내가 할 수있는 방법이 있니? 이미 https://github.com/vic/color-theme-buffer-local이 있지만 특정 파일이 열릴 때 자동으로 적용하는 방법은 없습니다.특정 org-mode 파일에 사용자 정의 테마 나 얼굴을 사용할 수 있습니까?

이상적인 해결책은 내 init.el에서 하드 코딩을 포함하지 않지만로드 된 파일 (또는 참조 된 setupfile)에서 변수 또는 호출 elisp을 설정하는 것입니다.

이 기능이 유용한 이유의 예로, 일부 파일은 매우 평평하며 한 세트의 스타일로 더 읽기 쉽고 다른 파일은 깊게 중첩되어 다른 스타일 세트의 이점을 얻을 수 있습니다.

답변

1

원래 포스터는 원래 포스터가 org-mode로 알려진 주요 모드에서 열린 파일에 적용하고 싶어 color-theme-buffer-local (https://github.com/vic/color-theme-buffer-local)라는 특정 라이브러리를 인용했다 - 특정 변수가 t 경우에만. 그것이 적용되는 경우 non-nil 즉 - org-mode 버퍼를 열면 (load-theme-buffer-local 'misterioso (current-buffer)) 변수 my-favorite-variable 코드의 이전 광고가 호출 될 때 제어 것이다

다음의 예는 코드 라인을 호출 color-theme-buffer-local 대한 지침에 인용 부호를 사용 , nil 일 경우 적용되지 않습니다. 편집


(2014 년 11 월 16 일) :

https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables

http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Local-Variables.html#File-Local-Variables

다음은 파일을 로컬 변수를 사용하는 원래 포스터의 욕망에 따라 수정 답변입니다

이 답변 아래의 주석에서 원래 포스터로 설명한 동작은 일반 org-mode-hook이 실행 됨으로써 발생합니다. 앞에을 지정하면 파일 로컬 변수가 고려됩니다. 따라서 변수 my-favorite-variableorg-mode-hook이 코스를 시작했을 때 여전히 nil입니다 (초기 답변 사용). 다음 수정 된 대답은 파일 로컬 변수를 고려한 다음에 을 실행하는 hack-local-variables-hook을 사용합니다.

+0

'C-c C-e'로 버퍼에'(load-theme-buffer-local 'misterioso (current-buffer))'를 테스트했고 테마가 변경되었습니다. 코드를 테스트하기 위해 스크래치 버퍼에서 실행하고'# - * - my-favorite-variable : 1; - * -'를 내 org 파일에서 열고'C-x k'로 닫은 다음 다시 열었습니다. 주제가 바뀌지 않았습니다. 'M- : my-favorite-variable'은 1이라는 값을 가지고 있음을 보여주었습니다. 어떤 문제가 있을지 모릅니다. – avv

+1

파일 로컬 변수에 대해 가르쳐 주시고, ** 파일 로컬 변수를 고려하기 전에 ** 표준 메이저 모드 후크가 ** 실행되는지 배우도록 도와 주셔서 감사합니다. 나는 파일 로컬 변수를 고려한 후 ** 실행되는'hack-local-variables-hook'을 사용하는 수정 된 답변을 게시했습니다. – lawlist

+0

흠! 천만에요 :). 좋은 sleuthing, 비록 내가 로컬 파일 변수를 사용하여 완고한 아니에요 - 난 그냥 어떻게 든 (그리고 이상적으로 설치 파일에서) 테마를 제어 파일에 뭔가를 설정할 수 싶습니다. 이것은 이제 파일에서 작동하지만 파일 로컬 변수는 org-mode에서는 좋지 않으며 설치 파일에서는 작동하지 않습니다. 그래서 나는 다른 방법 (아마도 org-mode 파일 태그)을 찾고있다. – avv

0

필자가 아는 바에 따르면 색 테마는 전체 Emacs 세션이 실행되는 동안 전역 적입니다. 쉘 버퍼에 어둡게하고 싶지 않은 배경색에도 동일하게 적용됩니다. 불가능한 ATM.

밝은 배경이 마음에 들면, 내 색 테마 "Leuven"(MELPA 또는 GitHub의 Emacs 24.4)을보고 유용한 개선 사항을보고 할 수 있습니다.

+0

원래의 포스터에서 인용 한 라이브러리는 얼굴 버퍼 로컬을 만드는 데 사용되는'face-remapping-alist'를 사용합니다. 색상 테마가 일반적으로 사용되는 문장과 '얼굴 매핑 애칭'을 사용할 때의 규칙에 대한 차이점을 설명하는 비교 및 ​​대조문을 답변에 추가하십시오. http : // www. gnu.org/software/emacs/manual/html_node/elisp/Face-Remapping.html – lawlist

+0

루벤을 만들어 주신 것에 감사드립니다. 나는 당신의 테마가 내 문서들 (더 중첩 된 문서들)에 대해 완벽하지만 다른 사람들에게는 매우 좋지 않기 때문에이 질문을 실제로 요구하고있다. (예를 들어 솔라 화 된 것들은 그보다 훨씬 더 좋다). – avv