Как сказал Трей, используйте 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 проведет вас по коду.