Подтвердить что ты не робот

Как получить список неактивных функций Emacs lisp?

Как получить полный список неинтерактивных функций, которые я могу использовать в Emacs Lisp?

Интерактивные легко найти в справочной системе, но я хочу получить полный список всех других функций, которые я могу использовать. Например concat, car, cdr и т.д. (И желательно с документацией).

Спасибо

Ed

Редактировать: ответили благодаря Джуни. Я немного поиграл с его ответом и получил его для сортировки результатов (используя результаты его кода, чтобы помочь мне найти правильную функцию сортировки!)

(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))))
4b9b3361

Ответ 1

Вот основная идея - см. руководство Emacs Lisp для любых неясных понятий.

(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")))))

Ответ 2

Попробуйте apropos вместо apropos-command. Это даст вам все функции, а не только интерактивные. C-h a по умолчанию привязан последним, но если вы делаете много взлома elisp, я рекомендую привязать его к первому.

Ответ 3

Вы можете проверить содержимое obarray, хотя оно содержит все символы, а не "все функции".

В качестве альтернативы, следующее может сделать трюк (потянет части пакета совместимости CL):

(уменьшить (лямбда (до следующего) (если (fboundp next) (минус дальше так далеко) до сих пор))   obarray   : начальное значение nil)

Ответ 5

Попробуйте команду apropos с пустым вводом.

Ответ 6

Nevermind. Оказывается, Ch f (описать функцию) включает в себя неинтерактивные функции, хотя мне все равно будет интересно найти способ просмотра/поиска только неинтерактивных (особенно только встроенных).