Emacs : Scheme 모드에서 'lambda'대신 'λ'를 삽입하는 방법은 무엇입니까?


10

오래 전에 'lambda'라는 단어를 'λ'문자로 대체 한 텍스트 편집기 기능을 발견했습니다. 이맥스에서 이것을하고 싶습니다. 내 환경 설정 :

  • 특정 모드에서만이 기능을 활성화하고 싶습니다 (예 : Scheme 모드에서는 활성화하고 C 모드에서는 끄십시오).

  • 직장에서는 여전히 이전 버전의 emacs를 사용하므로 솔루션은 emacs22 및 emacs23에서 작동합니다.

어떻게 진행해야합니까?

답변:


8

lambda그리스 문자로 대체되는 모드 후크를 작성합니다 .

   (defun sm-greek-lambda ()
       (font-lock-add-keywords nil `(("\\<lambda\\>"
           (0 (progn (compose-region (match-beginning 0) (match-end 0)
           ,(make-char 'greek-iso8859-7 107))
           nil))))))

그런 다음이 후크를 모드에 추가하십시오.

   (add-hook 'emacs-lisp-mode-hook 'sm-greek-lambda)

2
이름을 바꾸려면 더 좋을 것이다 sm-lambda-mode-hook의해 sm-replace-lambda또는 sm-greek-lambda. XXX-mode-hook일반적으로 run-hook지정된 모드 에 의해 실행 된 후크를 식별하여 사용할 수있는 후크를 식별하는 데 사용 add-hook됩니다.
Daimrod

make-char그냥 거기에 22을 지원하기 위해?
Jon Purdy

@Daimrod : XXX-mode-hook대답에 정의 된 a 와이 사용자 정의 의 차이점을 설명해 주 시겠습니까? 아니면 적어도 유용한 문서를 알려주십시오.
rahmu

@rahmu : xxx-mode-hook는 일반적으로 run-hooks모드에 의해 실행되는 후크의 이름입니다 xxx. 즉 emacs-lisp-mode-hook, 함수 emacs-mode가 호출 될 때 실행됩니다 . 이 경우 후크가 실행되지 않지만 함수가 후크에 추가됩니다. 자세한 내용 은 Elisp Manual (Hooks) 을 참조하십시오.
Daimrod

@rahmu : 작은 예제를 추가하기 위해 할 수는 (add-hook 'emacs-lisp-mode-hook 'some-function)있지만 (add-hook 'sm-lambda-mode-hook 'some-function)코드를 작성하지 않으면 작동하지 않습니다 (run-hooks 'sm-lambda-mode-hook).
Daimrod
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.