답변:
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))))
provide
. 어쨌든, 당신이 정말로 더러운 일을하고 싶다면 내 편집을 참조하십시오.
provide
. 나는이 경우에는 효과가 없을 것이라고 생각한다. 함수는 대화식으로 평가 된 경우 정의 된 파일을 기억합니까?
unload-feature
파일에서 코드를로드하지 않고 평가하는 경우 (효과가있는) 효과가 없습니다 provide
.
makunbound
심볼을 동적 변수로 사용 하지 않도록합니다 (즉, void symbol-value
).
fmakunbound
함수로서의 심볼 사용 을 제거하는 데 사용합니다 (예 : void symbol-function
).
mapatoms
모든 기호를 반복하는 데 사용 합니다. 그 각각에 관한 법률 symbol-name
호출 둘 : 당신이 관심있는 특정 접두사에 의해 일치 makunbound
하고 fmakunbound
그것을.
변수 나 함수로 사용하는 것이 아니라 기호 자체에 대해 완성도를 사용 하지 않는 한unintern
기호 에 대해 필요하지 않습니다 . 당신은하지만 않는 완전히 기호를 제거하려면 다음 사용합니다 .unintern
feature
시스템 보다 한 단계 깊습니다 . 명시 적 그룹화없이 함수 및 변수로만 작업하고 있습니다. 나는 평가를 귀찮게하지 않았습니다(provide 'my-package)
.