- PVSM.RU - https://www.pvsm.ru -

Хорошо настроенный Emacs

Все что нужно знать для того чтобы быстро и грамотно настроить Emacs.

Emacs [“Editor MACroS”, ​/ˈeditər ˈmakrōs/​​/ˈemaks/​, далее — «эмакс»] был создан давным давно в Лаборатории искусственного интеллекта Массачусетского технологического института MIT AI Lab [1]. Эмакс это текстовый редактор поведение и возможности которого изменяются прямо во время написания в нем текста на языке программирования на котором написан сам эмакс. Более того, прямо во время написания в эмаксе текста на языке программирования на котором написан сам эмакс изменяется поведение и возможности самого языка программирования на котором написан эмакс. Все это делает эмакс самым гибким и универсальным текстовым редактором в сравнении с любым другим.

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

Универсальность эмакса играет вам на руку, если вы понимаете как он устроен: вы можете делать тысячу разных дел через единый интерфейс в котором все состоит из текста во всех его проявлениях. Возможно, это выглядит архаично с точки зрения представлений о современном пользовательском интерфейсе, но это не так; хотя бы потому что современные интерфейсы не раскрывают силу простого текста в полной мере. Чтобы стать грамотным пользователем эмакса, вам придется понять его концепцию и внутреннее устройство, а это значит — приобщиться к культуре хакеров 70-х годов прошлого века. Новичков такое положение дел пугает, но все не так плохо: эмакс сложен только для сложных задач, а для простых задач он прост, все зависит от ваших потребностей. Начать знакомство с ним лучше с общего обзора “A Guided Tour of Emacs [2]” на сайте свободной [3] операционной системы GNU [4].

Ричард Столлман описывает историю возникновения эмакса в статье «Мой опыт работы с лиспом и развитие GNU Emacs [5]»; эта история тесно связана с не менее интересной историей проекта GNU [6] из которой можно узнать, что GNU Emacs [7] был первым проектом в проекте GNU. Суть того что из себя представляет эмакс подробно изложена в документе “EMACS: The Extensible, Customizable Display Editor [8]” написанном в 1981 году — и за прошедшие годы эта суть ничуть не изменилась.

Расширяемость эмакса это его благословение и проклятье. Конечно, в стандартной поставке эмакс хорош, но не так хорош как мог бы быть. Вы не ограничены решениями разработчиков, и если вам нужна функциональность которой в эмаксе нет, вы можете добавить ее сами: достаточно просто открыть эмакс и подробно её описать. В конце концов все возможности эмакса по редактированию текста это всего лишь текст описывающий что делать с текстом, и вы можете изменить этот текст в любое время точно так же как и любой другой, тем самым изменив возможности эмакса. Потенциально его возможности безграничны, но чтобы ими воспользоваться придется взяться за настройку, а это подразумевает умение программировать и плотное общение с сообществом.

Настройка эмакса это своего рода декоративно-прикладное искусство; для каждого конкретного пользователя она заключается в составлении лисп-программы из фрагментов лисп-кода взятых из множества разрозненных источников. Никакого другого способа в принципе нет, поэтому перед погружением в эту тему следует освоиться с программированием вообще и программированием на лиспе в частности. Лисп [9] это древнейший из используемых языков программирования очень высокого уровня, а также простейший из известных человечеству способов организации вычислений из символов, структур данных и функций (открытых математиками в 1936 году).

В изучении программирования поможет книга «Структура и интерпретация компьютерных программ [10]» — это вводный курс по информатике в MIT. В деле написания программ для эмакса пригодится учебник «Введение в программирование на Emacs Lisp [11]», справочник “GNU Emacs Lisp Reference Manual [12]”, и брошюра “Common Lisp Quick Reference [13]”.

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

Обычно создание удобной для себя конфигурации и ее последующая доводка растягивается на долгое время. Можно облегчить себе жизнь и установить фреймворк в котором все основные настройки выполнены в соответствии с видением автора фреймворка, и вам даже не придется править исходный код для того чтобы просто пользоваться эмаксом в свое удовольствие. Самые популярные фреймворки на сегодня: Spacemacs [14], Emacs Prelude [15], Eschulte Literate Emacs Starter Kit [16], Overtone Emacs Live [17], Purcell emacs.d [18], Oh My Emacs [19].

Все будет хорошо до тех пор пока вы не захотите встроить в эмакс некую невероятную функциональность которой в выбранном фреймворке нет, и тогда вам придется вручную интегрировать некий код не только в эмакс, но и во фреймворк, а для этого нужно будет разобраться с его внутренним устройством, что сводит все его достоинства на нет. К такому выводу пришел автор Emacs Starter Kit [20] (см. Meet Emacs [21]), когда закрыл свой проект после шести лет развития:

Старые версии Emacs Starter Kit были единой-для-всех кодовой базой заменяющей содержимое директории ~/.emacs.d. Это было очень популярное решение, но большая связка бессвязной функциональности вела к тому, что пользователь просто привыкал к ней ничего не понимая. Когда некоторые вещи ломались или вели себя не так как вам хотелось, вы и понятия не имели где их исправить.

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

Система пакетов [22] эмакса это встроенная в него лисп-программа [см. исходник на github [23]; открыть графический интерфейс системы пакетов в эмаксе [24]M-x list-packages [24]] которая автоматически интегрирует в эмакс другие лисп-программы из интернета. Система пакетов работает независимо от операционной системы под которой запущен редактор, она сама отслеживает зависимости между лисп-программами и заботится об их обновлении. Разработку этой ситемы начал [25] Том Тромей [26] в 2007 году, в 2012 она была включена в состав Emacs 24.1; пик популярности Emacs Starter Kit пришелся именно на эти годы, то есть по большому счету сообщество использовало [27] его для разработки системы пакетов.

Как бы там ни было, личная конфигурация эмакса по своей природе была есть и будет просто большой кучей бессвязаного кода, и лучший способ справиться с этим — оставить все как есть; или превратить эту кучу в руководство которое будет объяснять причины [28] (в первую очередь чтобы не забыть самому) по которым тот или иной фрагмент находится в этой куче, а потом сделать так чтобы это руководство само превращало себя в лисп-программу и выполняло конфигурацию эмакса при запуске. А также пересобирало само себя при изменении и скачивало новые версии себя из удаленных источников. Почему бы и нет. Это же руководство для настройки эмакса мышью в лучших традициях Стэнфорда и MIT.

Мой конфигурационный файл для Emacs это небольшая интерактивная программа с помощью которой любой желающий может получить достаточно хорошо настроенный под себя редактор в несколько кликов мыши: интерактивная программа настройки Emacs [29], её репозиторий на гитлабе [30] и репозиторий на гитхабе [31].

Автор: zahardzhan

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/108489

Ссылки в тексте:

[1] MIT AI Lab: https://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artificial_Intelligence_Laboratory

[2] A Guided Tour of Emacs: http://www.gnu.org/software/emacs/tour/

[3] свободной: http://www.gnu.org/philosophy/free-sw.ru.html

[4] операционной системы GNU: http://www.gnu.org

[5] Мой опыт работы с лиспом и развитие GNU Emacs: http://www.gnu.org/gnu/rms-lisp.ru.html

[6] историей проекта GNU: http://www.gnu.org/gnu/thegnuproject.ru.html

[7] GNU Emacs: https://www.gnu.org/software/emacs/

[8] EMACS: The Extensible, Customizable Display Editor: https://www.gnu.org/software/emacs/emacs-paper.html

[9] Лисп: https://en.wikipedia.org/wiki/Lisp_(programming_language)

[10] Структура и интерпретация компьютерных программ: http://newstar.rinet.ru/~goga/sicp/sicp.pdf

[11] Введение в программирование на Emacs Lisp: http://alexott.net/ru/emacs/elisp-intro/elisp-intro-ru.html

[12] GNU Emacs Lisp Reference Manual: https://www.gnu.org/software/emacs/manual/html_node/elisp/index.html

[13] Common Lisp Quick Reference: http://clqr.boundp.org/

[14] Spacemacs: https://github.com/syl20bnr/spacemacs

[15] Emacs Prelude: https://github.com/bbatsov/prelude

[16] Eschulte Literate Emacs Starter Kit: https://github.com/eschulte/emacs24-starter-kit

[17] Overtone Emacs Live: https://github.com/overtone/emacs-live

[18] Purcell emacs.d: https://github.com/purcell/emacs.d

[19] Oh My Emacs: https://github.com/xiaohanyu/oh-my-emacs

[20] Emacs Starter Kit: https://github.com/technomancy/emacs-starter-kit

[21] Meet Emacs: http://www.google.com/search?q=meet+emacs+pluralsight+torrent

[22] Система пакетов: https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html

[23] исходник на github: https://github.com/emacs-mirror/emacs/blob/master/lisp/emacs-lisp/package.el

[24] открыть графический интерфейс системы пакетов в эмаксе: http://list-packages

[25] начал: http://tromey.com/blog/?p=325

[26] Том Тромей: http://www.emacswiki.org/emacs/TomTromey

[27] использовало: http://technomancy.us/153

[28] объяснять причины: http://www.literateprogramming.com/knuthweb.pdf

[29] интерактивная программа настройки Emacs: http://zahardzhan.github.io/well-tuned-emacs/

[30] репозиторий на гитлабе: https://gitlab.com/zahardzhan/well-tuned-emacs

[31] репозиторий на гитхабе: https://github.com/zahardzhan/well-tuned-emacs

[32] Источник: http://habrahabr.ru/post/274759/