Emacs에서 기존 함수의 정의를 인쇄하는 방법이 있습니까?


10

Emacs에서 기존 함수의 정의를보고 싶습니다. 이것이 가능한가?

시도 C-h d function-name RET했지만 실제 함수 자체가 아닌 함수의 문서 문자열 만 반환합니다.

bash의 type명령 과 비슷한 것을 생각하고 있습니다.이 명령은 함수의 전체 정의를 반환합니다.

(부끄러운 스토리 : 나는 우연히 내에서 작동하는 기능을 통해 쓴 .emacs이 아닌 작업 버전으로 파일을 원래의 기능은 아직 메모리에 그리고 그것은 작동하지만이 수 없기 때문.!! 내가 그것을 어떻게 날의 기억.)


1
.emacs버퍼에 계속 열려 있다면 미친 것처럼 실행 취소 해보세요.
Gilles 'SO- 악마 중지

답변:


10

를 입력 C-h f function-name RET하면 사용 가능한 경우 기능 소스에 대한 링크와 함께 기능 설명서가 제공됩니다.

함수 소스의 위치를 ​​검색하기 위해 호출 할 수있는 쉬운 Lisp 함수가 없다고 생각합니다. 조회는 나머지 도움말 시스템과 밀접하게 관련되어 있습니다. find-lisp-object-file-name함수의 소스가 어디에 있는지 알아 내려는 주요 함수입니다.

function-name(이맥스의 C 소스에서 정의 된) 프리미티브가 아니라면 (symbol-function 'function-name), 또는 더 일반적으로 (간접 함수 'function-name) 코드를 볼 수 있습니다 . 그러나 함수가 바이트 컴파일 된 경우 바이트 코드 만 표시됩니다.


1
감사합니다! (symbol-function 'function-name)내가 찾던 것입니다! 또한 실제로 C 함수에 대한 소스가 필요한 경우 Oleg의 답변 정보를 사용하여 얻을 수 있습니다.
Micah R Ledbetter

감사! 또한 함수가 자동로드 된 경우 소스 코드를 가져 오기 전에 한 번 호출해야합니다.
Gerhard Burger

3

M-x find-function 점 근처의 함수 정의를 반환합니다.

설명서에서 :

버퍼에서 함수 근거리 (`function-called-at-point '로 선택)에 대한 정의가 포함 된 소스 파일을 찾아 정의 앞에 배치합니다. 버퍼가 이미 존재하는 경우 이동하기 전에 마크를 설정하십시오.

C로 구현 된 함수도 포함하려면 .emacs 파일에 다음을 추가해야합니다.

(setq find-function-C-source-directory (concat (getenv "emacs_home") "/path/to/source-dir"))

흠. 이것은 알아 두는 것이 좋지만 내장 함수에서만 작동한다고 생각합니다.
Micah R Ledbetter

1
사용자 정의 함수에서도 작동합니다.
Oleg Pavliv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.