2017-05-04 6 views
3

C++, C, Java 및 C# 소스 코드 파일의 디렉토리 경로와 파일 이름 (및 줄 번호)을 포함하는 로그 파일이 있습니다. 정규식을 작성하여이 파일 이름과 행 번호를 검색하고 소스 코드 파일을 열고 지정된 줄 번호에 삽입 포인터를 놓습니다 (컴파일 명령과 함께 사용할 때 다음 오류 함수와 비슷 함).emacs/elisp를 사용하여 글꼴 잠금 소스 코드 부분 강조 표시

로그 파일에 여러 번 나타나는 파일 이름이 주어지면 소스 코드 파일 표시 창/버퍼에 강조 표시를 추가하고 강조 표시를 선택적으로 제거하려고합니다.

글꼴 잠금이없는 경우 add-text-properties, remove-text-properties 및 add-face-text-property (여기서는 remove-face-text-property입니까?)와 같은 기능을 사용하여이를 수행 할 수 있습니다 키워드 색상 코딩). 글꼴 잠금이 켜져 있으면 이러한 기능이 작동하지 않습니다!

글꼴 잠금이 켜져있는 경우 어떻게해야합니까? 점진적 검색 기능을 사용하여 글꼴 잠금 코딩을 엉망으로 만들면서 강조 표시를 추가하고 제거 할 수 있습니다.

감사 대신 텍스트 속성의 지크프리트

답변

0

사용 오버레이. 예 : - 글꼴 잠금이 이길 원하는

(let ((ol (make-overlay BEG END))) 
    (overlay-put ol 'face 'bold)) 
0

face이 강조 글꼴 잠금에 의해 기각되어 텍스트 속성을 사용하는 모든 하이라이트 : 얼굴 bold BEG 및 END 사이의 텍스트 강조, 그런 짓을. 대부분의 경우 텍스트를 강조 표시 할 수 있지만 조만간 글꼴 잠금은 버퍼를 다시 정의 할 때 강조 표시를 지 웁니다. 이 하지가 강조 적용 되는가

오버레이를 사용 - 글꼴 잠금 오버레이에 영향을주지 않습니다. 따라서 한 가지 대답은 오버레이를 사용하는 것입니다. 그러나 그것이 사용 사례에 맞지 않는다면 (오버레이 사용에는 몇 가지 단점이 있습니다) 여전히 희망이 있습니다.

다른 강조 표시와 글꼴 잠금의 간섭을 방지하기 위해 일반적인 Emacs 접근법은 font-lock-keywords이 포함되지 않은 경우에도 글꼴 잠금 강조 표시로 글꼴 잠금을 속일 수 있습니다.

그러나 이것은 font-lock-mode이 꺼지면 강조 표시가 해제되는 효과가 있습니다. 이것이 좋은 것인지 나쁜지 여부는 사용 사례에 따라 다릅니다.

바닐라 이맥스에서는 선택의 여지가 없습니다. 강조 표시가 글꼴 잠금에 의해 인식되지 않거나 글꼴 잠금을 강조하는 경우 또는 글꼴 잠금 강조 표시가 꺼져있는 경우 강조 표시가 꺼져있는 경우 "강조 표시 중 하나"로 인식됩니다. font-lock-mode가 꺼져있을 때 당신의 특별한 강조가 필요하지 않은 경우

, 당신은 대신 재산 facefont-lock-face 텍스트 속성 을 사용할 수 있습니다.

당신이 당신의 강조를 구현하는 라이브러리 highlight.el를 사용하는 경우, 당신이 할 수있는 단지 font-lock-face의 기본 값으로 옵션 hlt-face-prop를 떠나하여. 값 font-lock-face은 글꼴 잠금으로 강조 표시를 제어 함을 의미하고 값 facefont-lock이 강조 표시를 인식하지 못함을 의미합니다.)

옵션 값이 face 인 경우 라이브러리 font-lock+.el도 사용하면 글꼴 잠금에 의한 간섭이 없습니다. 강조 표시는 글꼴 잠금과 관련이 없습니다. load-path에있는 라이브러리 font-lock+.elhighlight.el에 의해 자동으로로드됩니다. 글꼴 잠금으로 인해 여기에 정의 된 명령을 사용하여 강조 표시 한 얼굴 속성이 제거되지 않습니다.

자세한 내용은 Highlight Library을 참조하십시오.