Climacs

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:33, 17 января 2017.

Climacs[1] — это свободный текстовый редактор, написанный на Common Lisp, подобно GNU Emacs, и выпускаемый под лицензией GNU LGPL (версии 2 или более поздней). Climacs использует Common Lisp Interface Manager (CLIM) и ESA[2] для построения пользовательского интерфейса. McCLIM является реализацией CLIM, совместимой с with Climacs. Редактор предоставляет подсветку исходного кода, основанную на инкрементальном синтаксическом анализе.[3]

Несовершенства устаревшей версии

Climacs - современная версия редактора Emacs. GNU Emacs является отличным текстовым редактором, но был разработан более 20 лет назад, и технические решения того времени создают некоторые проблемы сегодня:

  • Emacs Lisp является языком, который был специально разработан для того, чтобы реализовать Emacs. При разработке GNU Emacs и Emacs Lisp, Common Lisp был стандартизирован и дает более высокую производительность, чем у Emacs Lisp (потому что Emacs Lisp реализован как интерпретатор написанный на C) и более сложные функциональные возможности (макросы, CLOS и т.д.). Естественный выбор для реализации Emacs сегодня такой же, как и у Common Lisp.
  • GNU Emacs был разработан до появления стандарта Unicode. К сожалению, внутреннее представление буфера не допускает представление всех символов Unicode в компактном виде.
  • Двадцать лет назад графические пользовательских интерфейсов практически не существовало. GNU Emacs был разработан для текстового терминала.
  • Из-за ограниченной мощности компьютеров в то время, GNU Emacs использует определенное количество приближений для того, чтобы проанализировать содержимое буфера, в частности, когда содержанием является текст программы. Эти приближения больше не нужны, и с учетом современных технологий, можно поддерживать полный синтаксический анализ текста буфера.

Emacs

Схема пользовательского интерфейса Emacs
Скриншот GNU Emacs 22.0.91.1 на Ubuntu ОС

Терминология

Поскольку Emacs появился давно и изначально работал только на текстовых терминалах, его терминология не совсем совпадает с таковой современных оконных систем. Основные специфические термины Emacs:

  • Буфер — объект, представляющий какой-либо текст. Большинство буферов соответствуют открытым файлам, но в принципе буфер может содержать что угодно, например результаты компиляции программы или встроенные подсказки. Emacs в этом плане очень однороден и практически всё общение с пользователем, в том числе интерактивное, идёт через буферы.
  • Фрейм соответствует окну в обычном понимании этого слова (как у X Window System). Каждый фрейм содержит область вывода и одно или несколько окон Emacs.
  • Окно — это просто прямоугольная область фрейма, которая отображает один из буферов. Помимо этого, каждое окно имеет свою строку состояния (англ. mode line), где выводится название буфера, его основной режим и т. п.
  • Область вывода (echo area) — одна или несколько (по необходимости) строк внизу фрейма, в которой Emacs выводит различные сообщения, а также запрашивает подтверждения и дополнительную информацию от пользователя.
  • Минибуфер используется для ввода дополнительной информации. Он всегда отображается в области вывода. Это такой же буфер, как и все остальные, что даёт интересный эффект: например, при операции замены текста можно ввести многострочный текст, что невозможно в большинстве других редакторов.

Варианты Emacs

На сегодняшний день наиболее распространёнными являются варианты GNU Emacs и XEmacs. Оба являются свободным ПО, распространяемым на условиях GNU GPL. XEmacs является ответвлением, или форком, GNU Emacs. В 1991 году некоторые из разработчиков последнего решили «отколоться», чтобы работать над собственным (XEmacs) вариантом редактора. Раскол был вызван их несогласием с мнением |Ричарда Столлмана — в то время главного куратора проекта — о дальнейшем направлении развития Emacs.

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

Интересные факты

  • Emacs имеет режим «психотерапевта», доступный, в частности, через пункт меню «Help→Emacs Psychotherapist» (M-x doctor).
  • В Emacs есть встроенные игры, например тетрис (M-x tetris). Есть также расширение (устанавливаемое из внешних репозиториев), которое позволяет Emacs играть в тетрис автоматически, без участия человека.[4]
  • «Высокий» номер версий Emacs (21, 22) связан не только с высокой интенсивностью разработки редактора и его почтенным возрастом. Вначале версии нумеровались как 1.15, но потом было принято решение отказаться от ведущей единицы.
  • Слово «Emacs» берёт начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году. Однако существует множество других, отчасти шутливых расшифровок этого слова:
    • Editing MACroS
    • Eight Megabytes And Continuous Swapping[5]
    • Escape Meta Alt Control Shift
    • Eventually Malloc()s All Computer Storage
    • Emacs Makes Any Computer Slow
    • Editor for Middle-Aged Computer Scientists

Примечания

  1. Labri [Электронный ресурс]: Climacs, a modern version of the Emacs editor / Дата обращения: 23.12.2016 — Режим доступа: http://dept-info.labri.fr/~strandh/Teaching/PdP/2004-2005/climacs-en.html
  2. ESA: A CLIM Library for Writing Emacs-Style Applications
  3. Syntax Analysis in the Climacs Text Editor
  4. GitHub [Электронный ресурс]: GitHub Project / Дата обращения: 23.12.2016 — Режим доступа: https://github.com/skeeto/autotetris-mode
  5. Catb.org [Электронный ресурс]: EMACS / Дата обращения: 23.12.2016 — Режим доступа: http://www.catb.org/jargon/html/E/EMACS.html

Ссылки