суббота, 17 мая 2014 г.

emacs. Отладка регулярных выражений

В данной заметке я хочу поделиться информацией о потрясающей функции emacs - конструкторе и отладчике регулярных выражений re-builder. Итак, поехали.
Для начала, запустим emacs и откроем какой-нибудь файл. Пусть это будет один из файлов исходного кода.
Далее, запустим re-builder. Делается это как обычно.
M-x re-builder
В результате, в окне emacs будет открыт буфер *RE-Builder*.
Задачу ставим такую: сконструировать регулярное выражение для получения всех строк с директивой #include. В моем файле эти строки начинаются с #include (вот это поворот :-) ). Начнем же создание регулярного выражения.
Как видите, стоило там только указать, что искомые строки начинаются с #include, как re-builder тут же нам их подсветил. Часть регулярного выражения уже создана и мы сразу же видим, как она работает. Едем дальше.
А дальше у нас возможны пробелы (один, несколько или вообще их отсутствие), укажем же сей факт в нашем регулярном выражении.
За директивой #include и пробелами следует открывающая скобка < или двойная кавычка.
Как видите, стоило нам только указать это в регулярном выражении, как все сработало как нужно. После скобки или двойной кавычки нас ждут символы алфавита и цифры в количестве от единицы и более. Необходимо это учесть.
Кажется, мы забыли указать, что в именах заголовочных файлов могут содержаться слэши, точки и символы подчеркивания. Исправляемся.
И последний штрих - закрывающая скобка > или двойная кавычка.
Просто шикарно! Регулярное выражение готово.

Первоисточник: Introduction to Regex in Emacs.

пятница, 2 мая 2014 г.

emacs. Работа с репозиториями пакетов

Для emacs существует огромное количество расширений, среди которых много весьма и весьма полезных. Установить пакет с каким-либо расширением можно как вручную с сайта разработчика, так и воспользовавшись менеджером пакетов, входящим в штатный комплект редактора. Если вы не находите нужного пакета в репозитории ELPA, то можете подключить еще парочку, например, MELPA и Marmalade. Дополнительные репозитории подключаются следующим кодом, который следует поместить в файл .emacs.
(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
При работе с пакетами пригодятся следующие команды и горячие клавиши:
  • M-x package-refresh-contents - обновить список доступных пакетов;
  • M-x list-packages - загрузить список пакетов (будет создан буфер со списком доступных пакетов и их кратким описанием);
  • В буфере со списком пакетов можно отметить пакет для установки (клавиша i), обновления (клавиша U) или удаления (клавиша d). Отметку можно снять с помощью клавиши u. После того, как вы отметили пакеты, необходимо применить запланированные действия. Сделать это можно нажав клавишу x.
После установки какого-либо пакета, необходимо настроить его для использования в emacs. Для этого следует обратиться к файлу README проекта или комментариям в коде. Про сайт разработчика тоже забывать не стоит.

UPD: 07.09.2014

четверг, 1 мая 2014 г.

emacs. Быстрое переключение между режимами переноса строк

Еще одной весьма востребованной функцией любого текстового редактора является возможность удобного и быстрого переключения между режимами переноса строк. В emacs это делается добавлением следующего кода в файл .emacs.
(setq default-truncate-lines t)
(global-visual-line-mode 1)
(global-set-key [f9] 'toggle-truncate-lines)
Как видно из настроек, переключение между режимами будет осуществляться с помощью горячей клавиши F9. По умолчанию режим будет включен и перенос будет осуществляться без разрыва слов.

Полезная ссылка по теме: http://ergoemacs.org/emacs/emacs_long_line_wrap.html