Меню Рубрики

Установка emacs для linux

GNU Emacs. Статья, которую я так и не нашел…

Доброго времени суток, Читатель!

В данной статье хочу подробно рассказать про настройку текстового редактора GNU Emacs.

Операционная система GNU Emacs — программируемый текстовый редактор для программистов, написанный на программируемом языке программирования.

Для расширения Emacs используется диалект языка Lisp — Emacs Lisp.
Строго говоря, Emacs нельзя назвать просто текстовым редактором. Emacs — это интерпретатор языка Emacs Lisp, конструктор текстового редактора, заточенного именно под Вас. Малая часть программы реализована на языке Си (около 30% — отвечает за базовое взаимодействие с ОС, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp (далее, elisp). Именно такая архитектура отличает GNU Emacs от других профессиональных текстовых редакторов — он, до неприличия, расширяем.

Функционал этого редактора настолько огромен и разнообразен, что новичку в этой среде крайне сложно освоиться. Чего стоит только процесс настройки — на это могут уйти годы, или вся жизнь. Именно поэтому я решил написать эту статью — подробное руководство по начальной настройке Emacs, для тех кто:

  • хочет начать использовать GNU Emacs, но не знает как;
  • пишет на языках, поддержка которых в IDE оставляет желать лучшего или её вообще нет;
  • пишет на разных языках, «программист-полиглот»;
  • хочет иметь универсальную среду разработки на работе и дома, на нескольких компьютерах сразу;
  • хочет иметь функциональную и мощную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode;
  • хочет автоматизировать процесс обработки большого числа текстовых файлов;
  • хочет иметь нетребовательную к аппаратным ресурсам, кроссплатформенную среду для работы с любой текстовой информацией;
  • хочет среду, которую можно без особых усилий, буквально «на лету», настроить под себя, свою конкретную задачу, расширить, самостоятельно добавив новый функционал;
  • любит универсальность и расширяемость;
  • пишет для web, на скриптовых языках: Python, Ruby, Perl и т.п.;
  • хочет приобщиться к вечному, к Emacs — одному из самых долгоживущих проектов Open Source сообщества;
  • etc.

Стоит сказать, что в современной IT-индустрии все чаще появляются различные амбициозные проекты, связанные с разработкой «текстовых редакторов XXI века», убийц замен Emacs и/или Vim:

  • Light Table;
  • Sublime Text;
  • Atom от GitHub.

Ну что сказать… Удачи им в этом нелегком труде. А мы, пожалуй, займемся настройкой GNU Emacs.


Да. Вы не ошиблись. Фильм «Трон: Наследие». GNU Emacs используют и там. Кто бы мог подумать…

Забыл предупредить: я пишу на Common Lisp (ещё один диалект языка Lisp), поэтому часть материала будет про то, как превратить Emacs в полноценную IDE с картами и девушками для этого языка программирования. Хороший пример, к стати…

Установка

  • скачать архив с официального сайта;
  • создать директорию C:\emacs\ и распаковать в него скаченный архив;
  • запустить файл C:\emacs\bin\addpm.exe (создаст пункт в меню Пуск для запуска Emacs).

Для дистрибутивов GNU/Linux (на примере deb-based дистрибутивов) есть четыре способа:

    в терминале выполнить команду:

  • через менеджер пакетов synaptic;
  • через центр приложений дистрибутива;
  • собрать из исходников.
  • Для Mac OS X:

    • посмотри тут;
    • или здесь;
    • можно глянуть вот сюда.

    На момент написания статьи последняя версия редактора — Emacs-24.4. Вот ее и берите для Mac OS X или MS Windows. Для GNU/Linux советую использовать ту версию, которая представлена в стандартных репозиториях Вашего дистрибутива.

    Настройка

    Есть, как минимум, четыре способа настройки Emacs:

    • написанием конфигурационного файла .emacs;
    • через меню программы;
    • с помощью команды M-x customize (C-x означает Control-x, M-x означает Meta-x, где Meta может означать: «нажать-отпустить Esc» или «нажать-держать Alt». (например, Meta-x это или нажать Esc, затем x, или, удерживая Alt, нажать x);
    • спереть позаимствовать чужой файл .emacs и начать работать (не советую).

    Мы не ищем легких путей! Будем писать конфигурационный файл на языке elisp!
    Сказано — сделано!

    Файл конфигурации .emacs

    После того, как Вы успешно установили GNU Emacs на свой компьютер, необходимо создать файл с названием .emacs и уже в нем прописать основные настройки.
    Обозначения, используемые в статье (повторение — мать учения):

    • C-a: Ctrl-a;
    • M-a: Meta-a (Если у Вас нет клавиши Meta (Alt), используете клавишу Esc);
    • C-M-a: Ctrl-Meta-a.

    Итак, запускаем Emacs. С помощью комбинации клавиш C-x C-f создаем новый файл .emacs и начинаем в нем писать. Не обижайтесь, но вдаваться в синтаксис языка elisp не стану — это превратит статью в монстра. В конце просто приведу ссылки на необходимые ресурсы.

    Читайте также:  Установка nvidia без проверки

    Для начала, расскажем Emacs о том, в какой операционной системе он запустился. Для этого напишем на elisp две функции, которые нам в этом помогут:

    Теперь, вызывая эти функции как условия для операторов ветвления, мы можем настроить кроссплатформенный файл конфигурации для Emacs (результатом наших трудов будет файл .emacs, который прекрасно работает в ОС MS Windows и дистрибутивах GNU/Linux. На Mac OS X не проверял).

    IDE для Common Lisp

    Для превращения Emacs в полноценную среду разработки для языка Common Lisp нам понадобится два пакета:

    • реализация Common Lisp. Я выбрал SBCL;
    • Slime — режим Emacs для разработки приложений на языке Common Lisp.

    Если Вы пользователь ОС MS Windows и, вдруг, пишете на Common Lisp, то Вам нужно:

    • скачать SBCL;
    • установить в C:\sbcl\ скаченный SBCL;
    • скачать Slime;
    • разместить в C:\slime\ скаченный Slime.

    На GNU/Linux все проще: выполнить из командной строки:

    Поехали дальше

    Если Вы счастливый пользователь Mac OS X или дистрибутива GNU/Linux, то Emacs полезно запустить как сервер:

    Далее, укажем Emacs пути по которым но сможет найти установленные дополнения (в частности, пакеты Slime и SBCL):

    Давайте расскажем Emacs о том, кто мы такие (мало-ли, решите через Emacs почту отправлять или в jabber‘e переписываться. ):

    Мой любимый dired-mode. Настроим его:

    Теперь можно запустить dired-mode комбинацией клавиш C-x d. Для удаления папки в dired-mode наведите курсор на эту папку, нажмите d, затем x. Чтобы убрать с папки отметку на удаление нажмите u.

    Замечательный способ «прыгать» по определениям функций почти для всех языков программирования — Imenu. Предположим, что у Вас файл с программой на 100500 строк с кучей функций. Не беда! Нажимаем F6 и в минибуфере вводим часть имени искомой функции и TAB‘ом дополняем. Нажали Enter — и мы на определении искомой функции:

    Пишем название открытого буфера в шапке окна:

    Помните, что мы определили пути, по которым Emacs ищет дополнения и внешние программы? Пусть «пройдется» по этим путям (где дополнения) при запуске:

    Еще не забыли, что Emacs предоставляет Вам прекрасную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode? Настроим:

    Наведем аскетизм красоту — уберем экраны приветствия при запуске:

    Выделим выражения между <>,[],(), когда курсор находится на одной из скобок — полезно для программистов:

    В новых версиях Emacs внедрили electic-mod‘ы. Первый из них автоматически расставляет отступы (работает из рук вон плохо), второй — закрывает скобки, кавычки и т.д. Отключим первый (Python программисты меня поймут. ) и включим второй:

    Хотим иметь возможность удалить выделенный текст при вводе поверх? Пожалуйста:

    Уберем лишнее: всякие меню, scroll-bar‘ы, tool-bar‘ы и т.п.:

    Никаких автоматических сохранений и резервных копий! Только hardcore:

    Самое больное и сложное место в настройке — кодировки:

    Продолжаем наводить красоту:

    Автоматический перенос длинных строк:

    Определим размер окна с Emacs при запуске:

    Интерактивный поиск и открытие файлов? Пожалуйста:

    Быстрая навигация между открытыми буферами:

    Цветовые схемы. Как без них? Для этого:

    • скачаем пакет color-theme для Emacs отсюда;
    • создадим директории .emacs.d/plugins/color-theme;
    • распакуем туда содержимое архива с темами;
    • расположить папку .emacs.d в:
      • для MS Windows в корень диска C:\.emacs.d
      • для GNU/Linux в домашнюю директорию

      Укоротить сообщения в минибуфере:

      Настройки пустых строк в конце буфера:

      Выделять результаты поиска:

      Перемещение между сплитами при помощи комбинаций M-arrow-keys (кроме org-mode):

      Удалить лишние пробелы в конце строк, заменить TAB‘ы на пробелы и выровнять отступы при сохранении буфера в файл, автоматически:

      Пакет CEDET — работа с C/C++/Java (прекрасная статья Alex Ott’a по CEDET):

      Автодополнение ввода. Для этого:

      • скачаем пакет auto-complete для Emacs отсюда;
      • создадим директории .emacs.d/plugins/auto-complete;
      • распакуем туда содержимое архива с auto-complete;
      • расположить папку .emacs.d в:
        • для MS Windows в корень диска C:\.emacs.d
        • для GNU/Linux в домашнюю директорию

        Настроим среду для Common Lisp — Slime:

        Настроим Bookmark — закладки, которые помогают быстро перемещаться по тексту:

        Собственно, всё! Можно нажать C-x C-s и сохранить файл .emacs. Куда положить файл .emacs и папку .emacs.d (если использовать пути из моего .emacs):

        • .emacs в C:\Users\%username%\AppData\Roaming\
        • папку .emacs.d в корень диска C:\

        GNU/Linux:

        • .emacs в домашнюю директорию: /home/%username%/
        • папку .emacs.d в домашнюю директорию: /home/%username%/

        Мой .emacs можно скачать с моей странички на GitHub.

        Полезные ссылки

        Множество полезных статей по GNU Emacs на Хабрахабр. Также есть серия замечательных скринкастов на YouTube про Emacs, опубликованных Дмитрием Бушенко:

        Cерия скринкастов (на англ. языке) Emacs Rocks.

        Невероятно огромная, подробная и полезная статья (на англ. языке): Sacha Chua’s Emacs configuration.

        Огромное разнообразие цветовых тем для Emacs. Смотреть тут.

        Чтобы не оставить без внимания пользователей другого редактора — Vim, вот ссылка на мой .vimrc на GitHub. Там все подробно описано (если что, могу и по Vim статью написать. ).

        С нетерпением жду Ваших комментариев, уважаемые читатели. Надеюсь, Вы нашли что-то полезное/новое для себя.

        источник

        Собираем GNU Emacs для Ubuntu

        Вопросы связанные с администрированием ОС лежат вне области моих интересов, поэтому когда возникает необходимость решить один из таких вопросов, я сначала стараюсь найти краткое howto, если же ничего не найдено, сажусь за чтиво руководств, которые после решения проблемы благополучно забываю. Поэтому для редко решаемых, но всё же время от времени возникающиx проблем, я пишу себе шпаргалки. Эта статья — одна из них. Чем она в большей мере является: «quick’n’dirty создание deb пакета» или «кратко о сборке emacs.deb» — судить не берусь, подойдёт как в качестве одного так и другого. Ниже описана сборка GNU Emacs 24.0.92 из исxодных кодов в Ubuntu 11.10.

        Начинаем с подготовки места:

        и создания, в случае его отсутствия, GPG-ключа, которым будет подписан собранный пакет:

        /.gnupg/john_doe.gpg —export ‘John Doe’

        Будет задан ряд вопросов, ответы на которые интуитивно-понятны. Есть только один тонкий момент, при создании ключа — указывайте такое же имя, которое будете использовать потом при создании пакета.

        Установим пакеты, необходимые для сборки .deb:

        sudo apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder

        Теперь надо получить исxодные коды GNU Emacs:

        bzr co —lightweight -v bzr://bzr.savannah.gnu.org/emacs/trunk emacs-24.0.92

        Обратите внимание, что имя директории для получения исxодныx кодов — emacs-24.0.92 — должно быть выбрано в соответствии с требованиями предъявляемыми к именованию директории, в которой содержатся исходные коды для сборки .deb пакета: packagename-packageversion в нижнем регистре. Узнать номер версии программы в транке можно посмотрев файл README здесь: http://bzr.savannah.gnu.org/lh/emacs/trunk/files.

        Приведём в состояние готовности к сборке директорию с исxодными кодами. Состояние готовности — это наличие скрипта configure . Запускаем для его генерации:

        Теперь надо сделать архив-копию имеющейся директории и поместить его на один уровень с ней:

        tar -czvf ../emacs-24.0.92.tgz ../emacs-24.0.92/

        dh_make -p emacs -e john.doe@gmail.com -c gpl3 -f ../emacs-24.0.92.tgz

        где john.doe@gmail.com заменяем на свой e-mail, отвечаем на вопрос:

        Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?

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

        Если в системе не хватает чего-то для сборки:

        checking for library containing tputs. no
        configure: error: The required function `tputs’ was not found in any library.
        These libraries were tried: libncurses, libterminfo, libtermcap, libcurses.
        Please try installing whichever of these libraries is most appropriate
        for your system, together with its header files.
        For example, a libncurses-dev(el) or similar package.

        то просто доустанавливаем необxодимое:

        sudo apt-get install libncurses5-dev

        Поиск необходимого (можно использовать регулярные выражения):

        apt-cache search .*libncurses.*dev

        Посмотрим на вывод команды ( dpkg-depcheck -d ./configure ) в самом конце длинного листинга:

        Packages needed:
        libgtk-3-dev

        Это надо будет добавить к перечисленным пакетам в файле debian/control в строке «Build-Depends», разделяя перечисленные пакеты запятой и пробелом. Посмотрите на остальные поля в этом файле, отредактируйте их при необходимости. Вот содержимое моего файла для сравнения:

        Source: emacs
        Section: editors
        Priority: extra
        Maintainer: John Doe
        Build-Depends: debhelper (>= 8.0.0), autotools-dev, libgtk-3-dev
        Standards-Version: 3.9.2
        Homepage: www.gnu.org/software/emacs

        Package: emacs
        Architecture: any
        Depends: $, $
        Description: GNU Emacs is an extensible, customizable text editor.

        Подробную информацию о содержимом файла debian/control можно найти тут: http://www.debian.org/doc/manuals/maint-guide/dreq.ru.html#control.

        Возвращаясь к выводу команды configure , посмотрите, с чем будет собран GNU Emacs, найдите следующие строки:

        What operating system and machine description files should Emacs use?
        `s/gnu-linux.h’ and `m/amdx86-64.h’
        What compiler should emacs be built with? gcc -std=gnu99 -g -O2
        Should Emacs use the GNU version of malloc? yes
        (Using Doug Lea’s new malloc from the GNU C Library.)
        Should Emacs use a relocating allocator for buffers? no
        Should Emacs use mmap(2) for buffer allocation? no
        What window system should Emacs use? x11
        What toolkit should Emacs use? GTK
        Where do we find X Windows header files? Standard dirs
        Where do we find X Windows libraries? Standard dirs
        Does Emacs use -lXaw3d? no
        Does Emacs use -lXpm? yes
        Does Emacs use -ljpeg? yes
        Does Emacs use -ltiff? yes
        Does Emacs use a gif library? yes -lgif
        Does Emacs use -lpng? yes
        Does Emacs use -lrsvg-2? yes
        Does Emacs use imagemagick? yes
        Does Emacs use -lgpm? yes
        Does Emacs use -ldbus? yes
        Does Emacs use -lgconf? no
        Does Emacs use GSettings? yes
        Does Emacs use -lselinux? yes
        Does Emacs use -lgnutls? yes
        Does Emacs use -lxml2? yes
        Does Emacs use -lfreetype? yes
        Does Emacs use -lm17n-flt? yes
        Does Emacs use -lotf? yes
        Does Emacs use -lxft? yes
        Does Emacs use toolkit scroll bars? yes

        Если требуется поддержка какой-то библиотеки (там где стоит «no»), доставьте нужные -dev пакеты в систему. В файле INSTALL описаны опции для скрипта configure , используя которые можно по-разному сконфигурировать сборку GNU Emacs. Имейте в виду, что сейчас вы делаете пробные запуски configure и делая dpkg-depcheck -d ./configure —without-png , к примеру, вы не оказываете влияние на создаваемый .deb пакет с скомпилированным GNU Emacs. Чтобы передать необxодимые параметры скрипту configure во время сборки .deb пакета, добавьте следующие строки в debian/rules :

        override_dh_auto_configure:
        dh_auto_configure — —without-png

        Обратите вниманиие, что вторая строка должна и начинается с символа табуляции (здесь парсер сожрал всё и отступа не видно).

        А сейчас пара слов о содержимом debian/ . Для сборки необходимы debian/ все они сгенерированы запуском dh_make . В принципе, можно больше ничего не редактировать, но отдавая дань труду людей предлагаю привести в порядок файл debian/copyright . Вот пример:

        Format: dep.debian.net/deps/dep5
        Upstream-Name: emacs
        Source: savannah.gnu.org/bzr/?group=emacs
        Maintainer: John Doe

        Files: *
        Copyright: Copyright (C) 2007 Free Software Foundation, Inc.
        License: GPL-3.0+

        Files: debian/*
        Copyright: 2011 John Doe
        License: GPL-3.0+

        License: GPL-3.0+
        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.
        .
        This package is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        GNU General Public License for more details.
        .
        You should have received a copy of the GNU General Public License
        along with this program. If not, see .
        .
        On Debian systems, the complete text of the GNU General
        Public License version 3 can be found in «/usr/share/common-licenses/GPL-3».

        Теперь, у нас всё готово для сборки. Осталась одна проблема — «make check». Makefile построен таким образом, что там есть цель check и она будет запущена системой сборки .deb. А поскольку мы слили транк, а не подготовленный релиз, то тесты могут и не пройти. По крайней мере, у меня сейчас так. Для пропуска тестов надо установить переменную среды DEB_BUILD_OPTIONS=»nocheck» . Итак, запуск сборки:

        DEB_BUILD_OPTIONS=»nocheck» dpkg-buildpackage -rfakeroot

        без пропуска тестов команда выглядит так:

        По-умолчанию GNU Emacs собирается с поддержкой тулкита gtk3 , параметризировать configure для сборки приятного для глаз GUI варианта с поддержкой Gtk3 и Xft (freetype шрифты) не требуется, достаточно повторить шаги в статье as is и получить нормальную полную сборку GNU Emacs. Если вы всё сделали правильно, то завершится создание пакета вопросом секретной фразы, которую задали при генерации PGP-ключа. После чего уровнем выше текущей директории появится собранный .deb пакет, который можно установить в систему:

        источник