색상 테마를 재설정하는 방법?


25

다른 색상 테마를 시도 할 때 특정 테마가 새 테마에 정의되어 있지 않으면 이전 테마 값이 유지되어 충돌이 발생합니다. 이는 emacs 24 및 이전 버전에서도 사용 color-theme됩니다. 각 색상 테마가 의도 한 것처럼 보이도록 모든 색상을 기본값으로 재설정하는 방법이 있습니까?

답변:


22

Emacs 사용자 정의 테마가 아닌 색상 테마를 사용하고 있습니까? 색상 테마 는 라이브러리에 의해 정의됩니다 color-theme.el. Emacs 24부터 사용자 정의 테마 를 사용할 수 있으며 색상 테마와 동일 하지 않습니다 .

  1. 당신이 사용하는 경우 색상 테마를 다음 대답은 간단하다 : 단지라는 의사 색상 테마를 사용 가능 [Reset]. 테마를 완전히 취소합니다. 부과 된 모든 효과를 제거합니다.

  2. 실제로 Emacs 커스텀 테마를 사용하고 있다면 대답은 그렇게 간단하지 않습니다. 당신은 할 수없는 사용자 정의 테마의 적용을 취소합니다. 당신이 할 수있는 일, 많은 도움이됩니다,하는 것입니다 하지 않도록 하여, 각 사용자 정의 테마 disable-theme가 활성화 된 후, 다른 사용하기 전에 사용자 정의 테마를.

    이를 "반자동"으로 수행하는 두 가지 방법이 있습니다.

    • Advise load-theme는 다른 테마를로드 (활성화)하기 전에 먼저 모든 사용자 정의 테마를 비활성화합니다 . 이것은에서 제안 된 이 StackOverflow의 응답 에 의해 tungdao.com에서 Tungd .

      (defadvice load-theme (before theme-dont-propagate activate)
       (mapcar #'disable-theme custom-enabled-themes))
      
    • 테마를 활성화하기 전에 현재 테마비활성화 하는 기능을 정의하고 사용하십시오 . 이것은 Maris Orbidans에 의해 제안되었습니다 .

      (defun enab-theme (theme) 
       (if current-t43m3 (disable-theme current-t43m3))
       (setq current-t43m3 theme) 
       (load-theme theme t)) 
      

    좀 더 자세한 정보는 해당 SO 게시물을 참조하고 동일한 SO 페이지에서 질문 및 기타 답변을 참조하십시오. (주의 사항 : 해당 페이지에서 허용 되는 답변은 사용자 정의 테마 실행 취소 문제에 대한 답변 이 아닙니다 .)

  3. # 2에 설명조차 솔루션이라는 것을 알고 있어야 하지 일반적인 솔루션 : 그들은하지 않습니다 취소 사용자 정의 테마의 적용 - 존재하지 아니 그렇게 할 수있는 방법. 즉, 사용자 정의 테마를 사용하지 않도록 설정하면 복원하지 않습니다 어떤 비 테마 사용자 정의 당신이 테마를 사용하기 전에 만든 수하고 그 테마에 의해 무시 된 것을 (예를 들어, 얼굴 변경).

다시 말해, 색상 테마를 취소하는 것은 사소한 일입니다. 커스텀 테마를 취소하는 것은 불가능합니다. 사용자 정의 테마에 대해 수행 할 수있는 최선의 방법은 다른 사용자 정의 테마와 비교하여 비활성화하는 것입니다.

이 질문과 색상 및 사용자 정의 테마 간 전환 (예 : 사이클링) 방법에 대한 가장 좋은 참고 자료는 Emacs Wiki 페이지 색상 및 사용자 정의 테마 입니다.

그리고 미리 경고 : 이 점에서 이맥스 사용자 정의 테마에 대한 다양한 장소에서 잘못된 정보의 공정한 금액이 있습니다. 사람들은 Emacs가 Emacs 24의 기능으로 커스텀 테마를 추가했다는 것에 당황하게 들었고, 그들 중 일부는 커스텀 테마가 컬러 테마를 대체 한다는 잘못된 결론으로 ​​즉시 뛰어 들었습니다 . 그들은 아닙니다. 각각 몇 가지 장점이 있습니다. 예를 들어 취소 할 수없는 것은 사용자 정의 테마의 주요 단점입니다.

[ 이 GNU Emacs 버그 리포트 는 커스텀 테마를 취소 할 수 없게하여 (이전 사용자 정의를 복원) 개선 요청입니다.]


1
또한 같은 명령을 사용하여 색상 테마를 선택 color-theme-dark-laptop하면 이전 테마로 되돌리려면 수동으로 스냅 샷을 만들어야합니다. 예를 들어 되돌 리라는 (fset 'color-theme-revert (color-theme-make-snapshot))명령 color-theme-revert이 나타납니다. 그렇지 않으면 [Resert] 버튼이 작동하지 않습니다. (내가 color-theme-select
옳은지

helm-themes는 새 테마를 선택할 때 다른 테마를 자동으로 비활성화합니다.
ocodo

1
@EmacsFodder : 사용자 정의 테마에 대해 이야기하고 있다면 다른 테마비활성화하는 것만으로는 충분하지 않습니다 . 사용자 정의 테마를 활성화하기 전에 존재했던 초기 상태로 돌아갈 필요는 없습니다. 색상 테마에는이 문제가 존재하지 않습니다. 초기 상태의 스냅 샷을 찍어 다시 사용할 수 있습니다. 인용 된 EmacsWiki 페이지와 인용 된 버그 보고서를 참조하십시오. 여기, Helm 등의 마법은 총알이 없습니다. 커스텀 테마가 설계된 방식 (결함) 때문입니다.
Drew

@JSG : 예. 초기 상태로 돌아가려면 색상 테마를 활성화하기 전에 가상 색상 테마에 해당하는 스냅 샷을 만들어야합니다. 인용 된 EmacsWiki 페이지와 인용 된 Emacs 버그 보고서에 설명되어 있습니다. 예, 미리 생각해야 할 수도 있지만 최소한 그 상태로 돌아갈 수는 있습니다. 이 기능은 사용자 정의 테마에는 없습니다. 사용자 정의 테마를 비활성화해도 초기 상태로 돌아 가지 않습니다.
Drew

나는 Emas에 대해 전에 주제를 다루지 않았으므로 차이점에 대한 소중한 정보였습니다. 감사합니다! Emacs 25.2.1에서 2016 년 7 월 현재 추가 및 업데이트 된 정보를 위해 이제 자신의 설정을 테마로 저장할 수있는 것 같습니다. 또한 customize-themes동시에 둘 이상의 테마를 사용 하려면 명시 적으로 UI에 표시해야합니다 . 나는 이것이 내 마음을 바꿀 때 적용되는 테마를 취소하는 방법 일 수 있다고 생각합니다. 또한 일부 Lisp를 사용하면 활성화하기 전에 자동 백업을 유지할 수 있다고 생각합니다.
찰스 로베르토 카나 토

-2

에서 내장 테마 중 하나를 선택한 경우에서 테마 M-x customize-themes를 활성화하는 행을 주석 처리하십시오 ~/.emacs.

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