Текстовый редактор Emacs

Emacs (исходный код можно посмотреть здесь) — это расширяемый текстовый редактор, который можно кастомизировать под свои нужды при помощи языка Emacs Lisp (Elisp).

Текстовый редактор Emacs

Почему Emacs — это хороший выбор для написания кода на Python?

1) Emacs кастомизируется при помощи встроенного интерпретатора Lisp и менеджера пакетов. Менеджер пакетов под названием package.el имеет меню для управления установкой. Самый большой репозиторий пакетов Emacs — это Melpa, который обеспечивает автоматические обновления.

2) Макросы полезны для выполнения рутинных действий в Emacs. Макрос — это просто записанная последовательность действий (комбинаций клавиш). Он может быть сохранен и выполнен позже.

3) Хуки (hooks) — это переменные Lisp, содержащие списки вызываемых функций. Они обеспечивают механизм расширения для Emacs. При помощи хуков можно перехватывать определённые события. Например, kill-emacs-hook запускается перед выходом из Emacs, поэтому в этот хук можно добавить произвольный набор функций для выполнения необходимых действий до завершения выхода.

Ресурсы по Python и Emacs

Emacs не зависит от языка программирования, поэтому потребуются некоторые усилия, чтобы настроить его в качестве среды разработки Python. Следующие ресурсы помогут вам ознакомиться с настройками, созданными другими разработчиками для работы с Python.

  • «Emacs — the Best Python Editor?» — это продолжение отличной серии статей от Real Python, в которой показано, как начать работу с редакторами. В дополнение к этой статье о Emacs, есть также статьи, описывающие настройку Vim и Sublime Text 3 для разработки на Python.
  • Python-разработчики часто используют reStructuredText (RST) для документирования проектов. Руководство «Emacs Support for ReStructuredText» поможет вам правильно настроить среду для работы с файлами RST.
  • «Emacs as a Python IDE» — это видео, в котором показано, как настроить автозавершение кода, просмотр документации и другие вещи в среде Emacs.
  • «How do you create a robust Python IDE with Emacs (as the Text editor)» — это тред Stack Exchange, в котором высказываются мнения о том, как лучше всего настроить Emacs для эффективной разработки на Python.
  • «Tricked out emacs for python coding» — это краткое руководство по работе с документами ReStructuredText. В нем также рассматривается добавление инструментов статического анализа кода на Python в среду Emacs.

Ресурсы  по Emacs

Emacs, как и любой другой мощный инструмент, требует определенной практики для правильного использования. Эти ресурсы содержат советы по освоению самого редактора, а не конкретные рекомендации по настройке среды Python.

  • «GNU Emacs Manual»— это официальное подробное руководство по GNU Emacs.
  • Emacs is sexy! — это целый сайт с инструкциями по установке, шпаргалками и другими материалами для изучения Emacs.
  • Emacs Redux — это блог с советами и рекомендациями по эффективному использованию Emacs.
  • Emacs Rocks— серия видеоуроков по Emacs.
  • «Absolute Beginner’s Guide to Emacs» и «Emacs as a Python IDE» — пара потрясающих пошаговых руководств от Джессики Хэмрик по настройке Emacs для разработки в общем и для разработки на Python в частности.
  • В руководстве «Compiling and running scripts in Emacs» рассказывается, как настроить Emacs для запуска кода прямо из редактора.
  • What the .emacs.d?! предоставляет множество советов для оптимизации рабочего процесса в Emacs.
  • «Using Emacs Series» — это еще одна серия видеоуроков по Emacs.

Кастомизация Emacs с помощью Elisp

Emacs можно полностью кастомизировать при помощи диалекта языка программирования Lisp — Emacs Lisp (Elisp). Пользователи могут самостоятельно создавать части Emacs — от отдельных функций до новых основных режимов. Возможность полностью модифицировать редактор является причиной старой шутки: «Emacs — хорошая операционная система, которой не хватает нормального текстового редактора».

Нижеперечисленные туториалы помогут вам изучить язык Elisp и использовать его для модификации Emacs.

  • «An Introduction to Programming in Emacs Lisp» — это «официальный» вводный курс, предназначенный для новичков.
  • «Emacs Lisp Guide» предназначен для разработчиков, которые уже некоторое время используют Emacs и хотят начать создавать расширения для редактора.
  • Emacs Wiki содержит множество советов и ресурсов, которые помогут новичкам сориентироваться в Emacs Lisp.
  • Руководство «Practical Emacs Lisp» содержит много полезного кода и фокусируется на примерах.

Пакеты Elisp

Elisp — это диалект языка программирования LISP, который Emacs использует для добавления и модификации функциональности в редакторе. В следующем списке перечислены библиотеки Elisp, которые многие разработчики, использующие Emacs, включают в свою среду разработки.

  • Magit позволяет пользователю просматривать и изменять Git-репозитории из Emacs.
  • company-mode предоставляет возможность автозавершения кода.
  • Flycheck обеспечивает проверку синтаксиса.
  • anaconda-mode (подходит только для разработки на Python) позволяет осуществлять навигацию по коду, поиск документации и автозавершение кода.
  • web-mode.el — это пакет для редактирования веб-шаблонов, таких как Jinja. Он поддерживает многие шаблонизаторы Python, включая Django templates, Mako и Cheetah. Также web-mode.el поддерживает JavaScript-фреймворки для фронтенд-разработки.

Популярные пользовательские конфигурации

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

  • Prelude — это расширенный дистрибутив Emacs версии 24.
  • A reasonable Emacs config — конфигурация Emacs с расширенной поддержкой многих языков программирования, автозавершением кода, проверкой синтаксиса и другими плюшками.
  • Emacs settings — это репозиторий конфигураций, используемых в скринкастах Emacs Rocks.
  • Spacemacs объединяет расширяемость Emacs и эргономичные функции редактирования текста Vim.