Emacs에서 커서 아래에 글꼴 가져 오기


96

나는 나만의 맞춤 색상 테마를 개발하고 있으며 커서 아래의 텍스트에 영향을 미치는 글꼴 목록을 얻을 수 있다면 정말 유용 할 것입니다.

Textmate의 show current scope 명령과 같은 것입니다.

그러면 Mx 사용자 지정 얼굴을 수행하고 사용 가능한 옵션을 살펴보고 현재 사용중인 단어에 어떤 것이 영향을 미치는지 추측하는 수고를 덜 수 있습니다.

어떤 아이디어?


마우스 커서를 사용하여 동일한 기능을 찾고있는 경우 (예 : point문제의 텍스트를 볼 수없는 경우 ) 다음을 참조하십시오. emacs.stackexchange.com/a/35449/13444
Braham Snyder

답변:


42

what-face다음 코드로 정의 할 수 있습니다 .

(defun what-face (pos)
  (interactive "d")
  (let ((face (or (get-char-property (pos) 'read-face-name)
                  (get-char-property (pos) 'face))))
    (if face (message "Face: %s" face) (message "No face at %d" pos))))

그 후

M-x what-face

현재 지점에서 찾은 얼굴을 인쇄합니다.

( 내장되지 않은 것을 지적한 thedz 에게 감사드립니다 what-face.)


3
이것은 텍스트 속성으로 설정된면을 무시합니다. 활성화 hl-line-mode하면 hl-line다른 얼굴이 아닌 얼굴 로만 볼 수 있습니다 . 고려 gist.github.com/Wilfred/f7d61b7cdf9fdbb1d11c
윌프레드 휴즈

2
Karl Fogel별도의 답변 에서이 코드의 버그를 지적했습니다 . 출력 메시지는 pos매개 변수 에서 얼굴을 설명하고 있지만 얼굴 읽기는 실제로에서가 (point)아니라에서 수행 됩니다 pos.
Rory O'Kane

1
이것은 작동하지 않습니다. 대신 "Mx describe-face"를 사용할 수 있습니다.
luochen1990

2
pos함수가 아닙니다. 순서대로 조각 작업, 당신은 교체해야 할 (pos)pos라인 3과 4
cebola

173

what-cursor-position 접두사 인수는 다른 정보 중에서 얼굴 아래의 얼굴을 보여줍니다.

키보드 단축키는 Cu Cx =

출력 예 (얼굴 속성은 마지막 단락에 표시됨) :

             position: 5356 of 25376 (21%), column: 4
            character: r (displayed as r) (codepoint 114, #o162, #x72)
    preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x72
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong), a:ASCII, l:Latin, r:Roman
          buffer code: #x72
            file code: #x72 (encoded by coding system undecided-unix)
              display: by this font (glyph code)
    nil:-apple-Monaco-medium-normal-normal-*-12-*-*-*-m-0-iso10646-1 (#x55)

Character code properties: customize what to show
  name: LATIN SMALL LETTER R
  general-category: Ll (Letter, Lowercase)
  decomposition: (114) ('r')

There are text properties here:
  face                 org-level-2
  fontified            t

[back]

11
어떤 원용 what-cursor-position.
viam0Zah

hmmm, 때로는 what-cursor-position을 호출하고 때로는 버퍼 속성 (글꼴 포함) 목록을 표시합니다. 이전 동작을 얻으면 커서를 이동하고 반복하면 후자가 나타납니다.
davidA 2010 년

2
나는 명령과 키 입력의 알 수없는 조합으로 이것을 발견하게되어 매우 기쁩니다. 나는 emacs그것을 어떻게 좋아하는지 표시하고 다음 다시 시작할 때 그것을 되 찾는 방법을 얻지 못했습니다
Miserable Variable

2
Emacs GUI에 글꼴 이름을 표시합니다. 터미널에서 Emacs는 글꼴 설정에 대한 책임이 없으므로 이러한 정보는 C-u C-x =터미널에서 실행되는 Emacs에서 수행 할 때 사용할 수 없습니다 emacs -nw file.txt.
Fernando Basso

68

MX 설명 얼굴


5
여기에는 커서 아래의 얼굴을 즉시 사용자 정의 할 수있는 멋진 링크도 포함됩니다
dolzenko

2
이것은 대부분의 경우 잘 작동하지만 때로는 이해할 수없는 이유로 내가 찾고있는 얼굴을 제안하지 않는 경우도 있습니다. 예를 들어, ansi 색상이있을 때 eshell에서 "default"라고 표시됩니다.
사무엘 에드윈 워드

2
이것은 내가 무언가를 입력 할 수있는 프롬프트를 보여줍니다. 커서 아래에있는 글꼴을 설명하려면 무엇을 입력해야합니까?
Zelphir Kaltstahl

1
이것은 조직 모드에서 코드 블록 글꼴을 사용자 정의하는 데 효과적이었습니다. @Zelphir, 프롬프트 전의 텍스트는 적어도 내 경우에는 얼굴을 보여주었습니다. 당신은 return. 예를 들어 내 결과는 Describe face (default ‘org-block-background’): .
Mallory-Erik

8

트레이는 올바른 길을 가고있는 얼굴입니다. 다음과 같은 메일 링리스트의 이메일로 연결되었습니다.

(defun what-face (pos)
    (interactive "d")
        (let ((face (or (get-char-property (point) 'read-face-name)
            (get-char-property (point) 'face))))
    (if face (message "Face: %s" face) (message "No face at %d" pos))))

이맥스에 번들로 제공되지 않았다는 것을 잊었습니다. 저작자 표시가있는 답변에 출처를 입력해도 되나요? :)
Trey Jackson

2

'what-face'코드에 버그가 있습니다. 함수는 "pos"를 인수로 사용하지만 얼굴을 가져올 때 사용하지 않습니다. 대신 메시지가 나중에 pos를 주장 하더라도 "(point)"를 사용합니다. "% d에 얼굴 없음"사례에서.


2
이것은 그 대답에 대한 주석으로 더 잘 배치됩니다.
Adam Spiers

1
그것이 수정 되었다면 더 좋습니다 ... 어쨌든 그것을 발견하기 위해 +1
rath
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.