2009-03-03 7 views
12

Emacs Lisp에서 사용할 수있는 비 대화식 함수의 전체 목록을 얻으려면 어떻게해야합니까?Emacs lisp 비대화 형 함수 목록을 얻으려면 어떻게해야합니까?

대화 형 시스템은 도움말 시스템에서 쉽게 찾을 수 있지만 사용할 수있는 다른 모든 기능의 전체 목록을 원합니다. 예를 들어 concat, car, cdr 등 (그리고 문서가있는 것이 좋습니다).

감사

에드

편집 : Jouni에 답변 감사합니다. 나는 그의 대답 비트와 함께 주변에 연주하고, 결과를 정렬하는 데있어 (내가 올바른 정렬 기능을 찾을 수 있도록 자신의 코드의 결과를 사용하여!)

(flet ((first-line (text) 
        (if text 
         (substring text 0 (string-match "\n" text)) 
        ""))) 
    (let ((funclist (list))) 
    (mapatoms 
    (lambda (x) 
     (and (fboundp x)      ; does x name a function? 
      (not (commandp (symbol-function x))) ; is it non-interactive? 
      (subrp (symbol-function x))   ; is it built-in? 
      (add-to-list 'funclist 
         (concat (symbol-name x) " - " (first-line (documentation x)) 
           "\n"))))) 
    (dolist (item (sort funclist 'string<)) 
     (insert item)))) 
+0

질문과 대답에 감사드립니다. emacs lisp을 배우는 동안 매우 유용합니다. – aartist

답변

13

가 여기에 기본적인 아이디어 - 불분명 한 개념에 대한 Emacs Lisp manual를 참조하십시오.

(flet ((first-line (text) 
     (if text 
      (substring text 0 (string-match "\n" text)) 
      ""))) 
    (mapatoms 
    (lambda (x) 
    (and (fboundp x)       ; does x name a function? 
      (not (commandp (symbol-function x))) ; is it non-interactive? 
      (subrp (symbol-function x))   ; is it built-in? 
      (insert (symbol-name x) " - " (first-line (documentation x)) "\n"))))) 
+1

와우, 정말 훌륭합니다. 짧은 코드에서 10 가지 새로운 것을 배웠습니다. 감사. – Singletoned

0

당신이 더 이상 look at the website

+0

나는 많은 일을 해왔지만 기능 목록을 찾을 수없는 것 같습니다. 절대적으로 모든 것의 목록이지만 기능을위한 것이 아닌 페이지가 있습니다. 그리고 나는 이맥스 (emacs)에 내장 된 것이있을 것으로 기대하고있었습니다. – Singletoned

0

할 수 빈 입력으로 apropos 명령을 시도하십시오.

+0

모든 것을 나열하고, C-h f는 그 관점에서 더 나을 것입니다. – Singletoned

+0

죄송 합니다만 모든 것이 표시되지는 않습니다. 비 대화식 명령은 전혀 포함되지 않습니다. – Singletoned

+0

apropos.el을보고 직접 작성하십시오. – starblue

0

Nevermind. C-h f (함수 설명)에는 비대화 형 함수가 포함되지만, 비대화 형 함수 (특히 내장 함수 만 포함) 만보고/검색하는 방법을 찾는 데는 여전히 관심이있는 것으로 나타났습니다.

1

"모든 기능"보다는 모든 기호가 포함되어 있지만 obarray의 내용을 확인할 수 있습니다.

또는합니다 (CL 호환성 패키지의 일부에 끌어) 트릭을 할 수있는 다음 :

(감소 (람다 (그래서-까지 다음) (만약 (fboundp 다음) (단점 다음 소위 지금까지) SO-까지)) obarray : 초기 값 전무)
4

apropos 대신 apropos-command보십시오. 그러면 대화식 대화식 기능뿐만 아니라 모든 기능을 사용할 수 있습니다. C-h a은 기본적으로 후자에 바인딩되지만, elisp 해킹을 많이하는 경우 이전에 바인딩하는 것이 좋습니다.

관련 문제