2011-11-01 2 views
2

저는 이맥스 놈입니다 만, 이걸 어떻게 찾아야할지 모르겠습니다. 나는 solarized light 컬러 테마를 사용합니다.이 테마는 지능적인 액센트로 낮은 콘트라스트 테마로 읽을 수 있도록 유지합니다. 그들이 vim 버전에서하는 일 중 하나는 문자열 구분 기호 (일부 언어에서는 큰 따옴표 및 작은 따옴표를 의미)를 강조 표시 한 다음 나머지 문자열과 다르게 강조하여 더 두드러지게 만듭니다.이맥스 문자열에서 ""을 강조 표시합니다.

테마의 이맥스 포트에는이 글꼴이 없지만 글꼴 잠금 메커니즘 (예 : http://www.emacswiki.org/emacs/HexColour)을 사용하면 꽤 이상한 일이 일어나는 것을 보아서 가능하다고 생각했습니다.

문자열 구분 기호를 강조 표시 할 수 있습니까? 그렇다면 어떻게해야할까요?

편집 :

Jon O.의 답변을 받으려고합니다. 우선 모든 모드에 추가하려는 시도에

(defface my-string-delimiter-face 
    '((t (:foreground "red" :weight bold))) 
    "My custom face for string delimiters") 

(add-hook 'after-change-major-mode-hook 
      (lambda() 
      (font-lock-add-keywords nil '(("\\s\"\\|\\s|" 0 solarized-string-delimiter-face t))))) 

을 시도 난 그냥를하기위한 시도

(font-lock-add-keywords 'emacs-lisp '(("\\s\"\\|\\s|" 0 solarized-string-delimiter-face t))) 

와 후크 식을 대체하는 시도 그럼

을 (작동하지 않았다) 같은 것을 작동 시키십시오 (작동하지 않음)

답변

4

font-lock-add-keywords을 사용하면 다음과 같이 문자열 구분 기호를 강조 표시 할 수 있습니다.

(font-lock-add-keywords 'foo-mode '(("\\s\"\\|\\s|" 0 'my-string-delimiter-face t))) 

정규 표현식은 "\\s\"\\|\\s|" 구문 클래스 "문자열 견적을"이 있어야 단일 문자,합니다 (\\s\" 부분) 또는 "일반 문자열 구분"합니다 (\\s| 부분)과 일치합니다. \s은 Elisp 매뉴얼 (elisp)Syntax Tables(elisp)Regexp Backslash에서 읽을 수있는 다양한 문자 구문 클래스와 일치합니다.

그것은 당신이 탈출 문자열없이 볼 경우 읽기 조금 쉽게 : \s"\|\s|

0 전체 일치하는 문자열에 얼굴을 적용하는 것을 의미하고, 마지막에 t이 얼굴은 어떤 얼굴을 무시할 수는 (많은 모드 font-lock-string-face 또는 유사한로 구분 기호를 포함하여 전체 문자열을 강조하기 때문에) 문자열에 이미 존재하는

'foo-mode이 변경 buffer-을 만들기 위해 (예를 들어 'emacs-lisp-mode, 'php-mode), 또는 nil 어떤 모드의 인용 이름이 될 수 로케 l은 현재 버퍼에만 있습니다.

my-string-delimiter-face은 기존의 얼굴이 될 수있다 (이 경우 당신은 아마 당신이 그것을 적용 할 모드의 모드 - 후크에 넣고해야한다), 또는 다음과 같이 수행하여 하나를 정의 할 수 있습니다 :

(defface my-string-delimiter-face 
    '((t (:foreground "red" :weight bold))) 
    "My custom face for string delimiters") 
+0

길고 번거로운 질문에 대한 대단한 대답이지만, 도움을 주셔서 감사합니다. –

+0

@MattBriggs : 얼굴 이름 앞에 따옴표'''가 필요하다고 생각합니다 ('솔라 화 문자열 구분 기호 - 얼굴'). 나는 기본 글꼴 잠금면이 변수와 인용 부호로 모두 작동하기 때문에 항상 이것을 잊어 버린다.이것을 반영하기 위해 내 대답을 편집했습니다. 지금은 저에게 효과가있는 것처럼 보입니다. 도움이됩니까? –

+0

@MattBriggs : 위의 두 번째 예에서,'(font-lock-add-keywords 'emacs-lisp-mode ...''emacs-lisp-mode'는 주요 모드. –

관련 문제