Какие есть встроенные пакеты с хорошим исходным кодом? [закрыто]

12

Я пытаюсь познакомиться с Emacs Lisp, его синтаксисом, структурами данных и т. Д., Поэтому мне было интересно, какие есть встроенные пакеты, источник которых может помочь мне лучше понять, как использовать язык и изучать его идиомы?

caisah
источник
1
Имейте в виду, что встроенные пакеты полны унаследованного кода и поэтому менее подходят для изучения идиом. Рассматривали ли вы вместо этого использование внешних пакетов и библиотек?
Васамаса
1
Рассматривали ли вы использование учебника по emacs (доступного в виде infoфайла? Некоторые встроенные функции объяснены и подробно описаны.
kiddouk
@ wasamasa Я вижу, я посмотрю на более свежие пакеты.
Caisah
@kiddouk Да, я сделал, но я не могу справиться со стилем письма / объяснения.
Caisah

Ответы:

12

Я могу порекомендовать Ruby Mode in ruby-mode.elи Python Mode in python.el, для некоторых аспектов их реализации. Первый является особенно хорошим источником для расширенного кода отступов и навигации, основанного на новом движке SMIE. Однако ни один из них не использует структуры данных каким-либо особенно умным или продвинутым способом.

Я также рекомендовал бы некоторые части Org Mode 8, для его дизайна. В частности, структура экспорта в Org 8 показывает, как создать универсальный расширяемый объектно-подобный каркас в простом Emacs Lisp. Тем не менее, я рекомендовал бы против большинства других частей Org, по причинам, уже указанным в комментариях: он старый и полон устаревших и вредных методов (например, find-file-noselectдля чтения файлов не в интерактивном режиме).

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

Поскольку сам Emacs очень старый и во многих местах поддерживается только поверхностно, среднее качество его кода на самом деле довольно низкое по современным стандартам. Там много унаследованных вещей. Например, даже в основных частях, таких как байтовый компилятор, вы найдете «TODO» и «DUNNO», датирующиеся годами, если не десятилетиями. Кроме того, поскольку Emacs очень медленно отбирает код и разработчиков из «внешнего» сообщества из-за ограничительных политик, установленных FSF, общее качество увеличивается только медленно.

В общем, вы, скорее всего, найдете хороший код в популярных сторонних пакетах, поддерживаемых известными членами сообщества, например, Magit, Projectile и т. Д.

lunaryorn
источник
2
О, я вижу, они изменили это для последнего ствола.
Шости
3
Те, кто планирует погрузиться в код gnus: пожалуйста, будьте осторожны. Это глубокие воды, и мы бы не хотели никого терять.
Малабарба
2
Если вы посмотрите на Magit, то я рекомендую посмотреть на его следующую ветку.
tarsius
2
У вас есть что-нибудь, чтобы сделать резервную копию вашего последнего требования? Я бы сильно ожидал обратного ...
Расмус
1
Я имел в виду следующее: «[...] Emacs поддерживается поверхностно [...] во многих местах, среднее качество его кода на самом деле довольно низкое, по сравнению с тем, что вы, скорее всего, найдете хороший код в популярных 3-х праздничные пакеты ". Но «Emacs очень медленно принимает код, и разработчики извне» также кажутся бессмысленными IMO (вы читаете debbugs?) ...
rasmus
1

Для основных идиом взглянуть на simple.el

mpontus
источник