패키지의 API를 자주 변경하고 있지만 완성 된 모든 정의 된 기호 (필요한대로)를 company-mode
가져옵니다 . 우연히 언 바운드 이름을 사용하고 싶지 않으므로 시작하는 모든 변수와 함수를 어떻게 바인딩 해제 할 수 있습니까? 이 후, 나는 단순히 다시 할 수있을 것 입니다.my-package-
load-file
답변
unload-feature
Elisp 소스 또는 바이트 컴파일 파일로드의 일부로 정의 된 모든 기호를 정의 해제하려면 호출 하십시오. provide
마지막 에 전화하여 파일이 끝나는 지 확인하십시오 . 이것은 load
함수 중 하나를 통해 require
또는를 통해 파일을로드했다고 가정하고 C-M-x
( eval-defun
) 또는 유사한 메커니즘으로 정의 된 기호를 정의하지 않습니다 .
심볼을 정의한 패키지가 아닌 이름을 기준으로 심볼을 바인딩 해제하려면 mapatoms
모든 심볼을 반복 할 수 있습니다 .
(mapatoms (lambda (symbol)
(if (string-prefix-p "foo-" (symbol-name symbol))
(unintern symbol))))
답변
-
makunbound
심볼을 동적 변수로 사용 하지 않도록합니다 (즉, voidsymbol-value
). -
fmakunbound
함수로서의 심볼 사용 을 제거하는 데 사용합니다 (예 : voidsymbol-function
). -
mapatoms
모든 기호를 반복하는 데 사용 합니다. 그 각각에 관한 법률symbol-name
호출 둘 : 당신이 관심있는 특정 접두사에 의해 일치makunbound
하고fmakunbound
그것을. -
변수 나 함수로 사용하는 것이 아니라 기호 자체에 대해 완성도를 사용 하지 않는 한
unintern
기호 에 대해 필요하지 않습니다 . 당신은하지만 않는 완전히 기호를 제거하려면 다음 사용합니다 .unintern