Emacs 모드를 사용하여 일부 파일에 주석을 추가합니다 (실제 모드는 중요하지 않음). 라이브러리로 제공되며 컴파일 된 lisp 코드가 있습니다 (물론). 그것의 단일 함수를 오버라이드하여 그 동작을 수정하고 싶습니다. 내 이맥스 세션을 위해서. 지금은 라이브러리의 소스 파일에서 함수를 복사하여 붙여 넣은 다음 조금 수정하고 eval-last-sexp
을 누르십시오. 여태까지는 그런대로 잘됐다. 그러나 나는 일관성없는 결과를 얻는다 : 이멕스가 .elc
파일의 함수가 소스에서 오는 함수와 어떻게 섞여 있는지를 잘 모르겠다. 때로는 내 자신의 버전의 기능이 실행되고 때로는 원래 버전이 표시되기도합니다. 매우 혼란스럽고 귀찮습니다.Emacs 라이브러리에서 단일 함수 재정의
어떻게하면 이멕스 라이브러리에서 lisp 함수를 일관되게 바꿀 수 있습니까? 읽기 전용 인 라이브러리의 소스 파일을 수정하지 않고도 어떻게해야합니까?
(advice-add 'name-of-func-to-override :override
(lambda() (message "does this instead now")))
함수 이름 name-of-func-to-override
과 버전으로 lambda
교체 :이 같은
'add-function'과 다른 것들은 Emacs 24.4에서만 추가되었다는 점에주의해야합니다 (Emacs를 업데이트해야합니다). –