Emacs Lisp Руководство по функциям?

Я использую Emacs уже более трех лет, но мне все еще нужны месяцы, чтобы писать даже небольшие функции в Lisp. Я просмотрел Справочное руководство GNU Emacs Lisp, но оно было огромным и структурировано полностью противоположным от JavaDoc, а не от функций к описаниям, но с другой стороны вокруг.

Что сделает мою жизнь намного проще - это какой-то маленький документ, похожий на JavaDoc, с наиболее часто используемыми внутренними функциями Emacs и быстрое описание.

    (point) - returns current position in buffer
    (save-excursion (p)) - saves current position in buffer before 
                           executing (p) and restores it afterward.

Кто-нибудь знает, где я могу найти что-то подобное?

Ответы

Ответ 2

Вы пробовали руководство по сборке в emacs? Откройте любой буфер lisp (или любой буфер в режиме lisp), переместите свою точку на любую функцию или переменную и нажмите C-h f (для функции) или C-h v (для переменной). Emacs предоставит вам довольно краткое описание функции/переменной.

Например, содержание руководства для (save-excursion) -

save-excursion is a special form in `C source code'.
(save-excursion &rest BODY)

Save point, mark, and current buffer; execute BODY; restore those things.
Executes BODY just like `progn'.
The values of point, mark and the current buffer are restored
even in case of abnormal exit (throw or error).
The state of activation of the mark is also restored.

This construct does not save `deactivate-mark', and therefore
functions that change the buffer will still cause deactivation
of the mark at the end of the command.  To prevent that, bind
`deactivate-mark' with `let'.

Хорошо также, что встроенное руководство дает вам "ссылку" на исходный код функции и другие функции, которые могут быть связаны, что делает его приятным для просмотра.

Конечно, вы не можете научиться lisp таким образом, но для поиска документации по функциям это хороший стартер. Когда вы обнаружите, что встроенное руководство не понятно (что иногда бывает), тогда вам нужно для google функцию;)

Ответ 3

GNU Введение в emacs lisp, безусловно, более доступно, чем справочное руководство.

Ответ 4

Я бы добавил пару вещей:

  • M-x apropos - ищет функции и переменные для любой строки, указанной вами (например, каталог). Обратите внимание, что это немного отличается от C-h a, который находит только интерактивные функции

  • найдите аналогичную часть кода и скопируйте ее - вы можете много узнать о том, как делать вещи, глядя на то, что уже сделано. Если у вас есть определенная функция, которую вы хотите увидеть, один хороший способ - посетить основной исходный каталог lisp в dired (например, d:/product/emacs/lisp или /usr/share/lib/emacs/ lisp) и % g, который будет grep через все файлы, которые ищут любую строку, которую вы вводите. Откройте этот файл и посмотрите, что с ним сделали другие люди.

  • C-h f и C-h v - как упоминалось выше, вы можете открыть источник, указать точку над функцией или переменной, а затем получить документацию на нем.

  • Ознакомьтесь с Emacs wiki, в котором вы можете просмотреть модули Emacs lisp.

Ответ 5

Я думаю, вы ошибаетесь. При изучении язык программирования и набор библиотек (в совокупности "Emacs Lisp "), вам необходимо подходить к нему как по микро-, так и по макромасштабе. Прежде чем вы начнете писать программное обеспечение, вам нужно знать, какие инструменты вы есть. Это то, что руководство Emacs Lisp направлено на обучение Вы на. Вам действительно нужно сесть и прочитать все это. Что как вы знаете, какие функции предоставляет Emacs.

После этого вам понадобится информация об "микроуровне". Есть ряд источников, которые это обеспечивают. Если у вас есть общее представление о что вам нужно сделать ( "работа с буферами" ), затем ссылку Lisp это хорошее место, чтобы выяснить, что вам нужно знать. Если вы знаете, что есть функция, которая делает то, что вы хотите, но не совсем помните имя, затем M-x apropos (C-u C-h a) поможет вам выполнить поиск документация. Если вы знаете, какую функцию вы хотите использовать, но не помните, как это работает, затем M-x describe-function (C-h f) будет сортировать это для вас.

Так или иначе, ключ должен изучить Emacs Lisp, а затем позволить Emacs помочь вам с деталями. Список функций не собирается вас многому научить.

(О, еще одна вещь - вы должны ознакомиться с Common Lisp. В большинстве библиотек Emacs используется cl, которые являются полезными CL функции, реализованные в Emacs Lisp. loop, destructuring-bind, defun* и т.д., и все они очень полезны.)

Ответ 7

Пробовали ли вы <f1> f? Он связан с describe-function. Пример с point:

point is a built-in function in C source code.
(point)

Return value of point, as an integer.
Beginning of buffer is position (point-min).

[back]

Как и большинство систем Lisp, Emacs имеет интегрированный инструмент документации!

  • Любая функция или переменная Lisp может объявить необязательную строку doc.
  • Почти вся стандартная команда или функция объявляет полезную строку doc.
  • Emacs (как и большинство систем Lisp) позволяет в любой момент отобразить строку документа любой функции или переменной (<f1> f и <f1> v).
  • При отображении строка документа доступна для просмотра, что означает, что вы можете щелкнуть по символам, чтобы увидеть их строку документа, или перейти к источнику соответствующей функции или переменной.
  • Как только вы оцениваете любые defun или defvar, его строка документа доступна через describe-function или describe-variable: этот документ жив!

Ответ 10

В XEmacs, и я тоже верю в Emacs, нажав C-h f, тогда клавиша табуляции для завершения вкладки, которая в этой точке является всеми функциями, предоставит вам список функций, о которых знает редактор.

Вы просто используете клавиши курсора и прокрутите список до того, о котором хотите узнать, и нажмите "Enter", чтобы просмотреть детали.

Если список функций, с дополнительной информацией, является тем, что вы хотите, что даст вам.

Этот список - это все доступные в данный момент функции, поэтому, если у вас установлены пакеты из lisp, он показывает функции, предоставляемые этими пакетами, а также собственные функции. В моей копии XEmacs сегодня у меня есть 6 586 функций в списке. Emacs будет похож.

Проблема заключается в том, что не все функции имеют имена, которые делают их контекстно-значимыми (т.е. не все переменные/функции меню имеют в них меню слов, поэтому вы будете пропускать некоторые вещи, если вы идете только по именам.

Вы можете использовать страницы INFO (в меню), чтобы просмотреть их более локально и получить одну и ту же информацию об использовании.

Ответ 11

Загрузите исходный код для Emacs. Перейдите в папку src/и введите:

grep -r DEFUN *

Вы получите список всех примитивных функций Lisp Emacs.

Ответ 12

M-x find-library RET < имя библиотеки > это все, что вам действительно нужно