Изучение Elisp - какие библиотеки высшего качества для чтения исходного кода? - PullRequest
16 голосов
/ 12 марта 2011

При изучении нового языка программирования «читать исходный код» - это распространенный совет, полученный экспертами.Однако с такой огромной системой, как emacs, создаваемой многими людьми в течение десятилетий, новичку не так просто понять, какие библиотеки являются лучшими примерами идиоматического программирования Elisp.Поэтому я хотел бы получить некоторые рекомендации относительно следующих критериев:

  • идиоматический стиль программирования elisp

  • соблюдение рекомендаций по программированию в emacs

  • умное использование пакета cl в соответствии с рекомендациями emacs

  • умное использование пакета eieio

  • примерная организация одной библиотеки .el файлов

  • примерная организация многофайловой / многопакетной библиотеки

  • любые критерии, которые высчитают важным

Укажите причины почему вы рекомендуете определенные библиотеки для авто-дидактических исследований, безусловно, будут информативными для новичков в программировании на Emacs lisp.

Ответы [ 2 ]

4 голосов
/ 13 марта 2011

Как сказал Трей, используйте elisp от самого Emacs, чтобы учиться.Я обычно делаю одну из двух вещей:

1) Если я пытаюсь выяснить, как использовать определенную функцию, я вызову окно dired и сделаю:

% g foobar

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

2) Если я пытаюсьвыяснить, как сделать что-то, и я знаю режим, который делает что-то подобное, я посмотрю на исходный код этого режима, чтобы увидеть, как они это делают.Если вы не знаете, с чего начать, но знаете, как выполнить то, что вам нужно, удобная вещь - это поиск с помощью привязки клавиш.Например, в буфере dired выполните следующее:

C-h k % g

, и это вызовет:

% g runs the command dired-mark-files-containing-regexp, which is an
% interactive compiled Lisp function in `dired.el'.

It is bound to % g, <menu-bar> <regexp> <mark-cont>.
(dired-mark-files-containing-regexp regexp &optional marker-char)

Mark all files with contents containing regexp for use in later
commands. A prefix argument means to unmark them instead.
`.' and `..' are never marked.

Нажав на dired.el в приведенном выше тексте (вбуфер emacs) откроет исходный код и предоставит вам право на определение этой функции.Это отличный способ учиться на примерах.

Не забывайте, что отладчик elisp позволяет точно увидеть, что происходит и что происходит, когда код выполняется пошагово.Вы можете пометить код для отладки, используя edebug-defun, а затем вызывать его как обычно, после чего emacs проведет вас по коду.

3 голосов
/ 12 марта 2011

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

M-x find-library simple RET

Я думаю, что само собой разумеется, почему собственный код lisp в Emacs является хорошим примером Emacsшепелявость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...