2012-11-11 3 views
3

이맥스에서 최근 (일) 변경으로 이맥스의 이전 버전에서 작동했던 defadvice을 사용하는 코드에서 정말 이상한 오류가 발생했습니다. 예를 들어조언이 이맥스 스냅 샷에서 실패했습니다.

(defadvice rename-file (around sync-ectags-rename-file (file newname &optional ok-if-already-exists) activate) 
    "Update ectags for renaming of FILE to NEWNAME." 
    (ectags-unregister-tag-file file) 
    ad-do-it 
    (ectags-register-tag-file newname)) 

그러나 C-x C-e 위에서 잘 작동 사용하여 식을 평가하는 컴파일 된 버전을로드 할 때 일반적으로 나는 예를

Debugger entered--Lisp error: (wrong-type-argument symbolp #[(file newname &optional ok-if-already-exists) 
... 
ad-activate(rename-file nil) 

얻을. 나는 무엇이 잘못되었지만 운이 없었는지 알아 내려고 노력했다. 비슷한 문제는 I advice 기능이있는 다른 여러 경우에서 발생합니다.

+7

왜 StackOverflow를 사용하여 소스 컨트롤에서 빌드 한 스냅 샷에 대한 버그 보고서를 제기합니까? 'M-x report-emacs-bug' – phils

+0

필자는 phils에 완전히 동의하고 요즘에는'emacs-24' 브랜치를 사용하도록 권고합니다. 따라서 24.3 이전에 버그를 수정하는 데 도움이됩니다. – Stefan

+0

버그가 최신 버전에서 수정되었습니다. 나는 더 이상 stackoverflow를 사용하지 않을 것이다. 고마워. –

답변

1

이것은 업스트림 버그입니다. 토론 here을보십시오. 내가 아는 한은 Emacs 24.3이 조언 주위에서 래퍼 - 후크로 바뀔 때 많은 내부 변화가 일어나고 있습니다.

+0

아하! 흥미 롭 군. 주위 걸이 란 무엇입니까? –

+0

해당 문서를 살펴보십시오. C-h v'with-wrapper-hooks '. 기본적으로 조언과 관련하여보다 견고한 대체품입니다. –

+0

@BozhidarBatsov : 새로운 advice 메카니즘은'with-wrapper-hook'을 연상 시키지만 (around : with around와 함께 사용되는 경우), "around advice"에서 "wrapper-hook with"로의 이동이 아닙니다. 이것은 새로운 가벼운 advice 라이브러리 일 뿐이며,'with-wrapper-hook'을 쓸모 없게 만든다. – Stefan

관련 문제