Emacs Lisp
- 1 Введение
-
2 Типы данных Lisp
- 2.1 Печатное представление и синтаксис чтения
- 2.2 Специальный синтаксис чтения
- 2.3 Комментарии
-
2.4 Типы данных программирования
- 2.4.1 Целочисленный тип
- 2.4.2 Тип с плавающей точкой
- 2.4.3 Символьный тип
- 2.4.4 Тип символа
- 2.4.5 Типы последовательностей
- 2.4.6 Типы конс-ячеек и списков
- 2.4.7 Тип массива
- 2.4.8 Тип строки
- 2.4.9 Тип вектора
- 2.4.10 Тип таблицы символов
- 2.4.11 Тип булева вектора
- 2.4.12 Тип хеш-таблицы
- 2.4.13 Тип функции
- 2.4.14 Тип макроса
- 2.4.15 Тип примитивной функции
- 2.4.16 Тип функции-замыкания
- 2.4.17 Тип записи
- 2.4.18 Дескрипторы типов
- 2.4.19 Спецификаторы типов
- 2.4.20 Тип автозагрузки
- 2.4.21 Тип финализатора
-
2.5 Типы редактирования
- 2.5.1 Тип буфера
- 2.5.2 Тип маркера
- 2.5.3 Тип окна
- 2.5.4 Тип фрейма
- 2.5.5 Тип терминала
- 2.5.6 Тип конфигурации окон
- 2.5.7 Тип конфигурации фреймов
- 2.5.8 Тип процесса
- 2.5.9 Тип потока
- 2.5.10 Тип мьютекса
- 2.5.11 Тип условной переменной
- 2.5.12 Тип потока данных
- 2.5.13 Тип карты клавиш
- 2.5.14 Тип наложения
- 2.5.15 Тип шрифта
- 2.5.16 Тип Xwidget
- 2.6 Синтаксис чтения циклических объектов
- 2.7 Предикаты типов
- 2.8 Предикаты равенства
- 2.9 Изменяемость
- 2.10 Иерархия типов объектов Emacs Lisp
- 3 Числа
- 4 Строки и символы
- 5 Списки
- 6 Последовательности, массивы и векторы
- 7 Записи
- 8 Хеш-таблицы
- 9 Символы
- 10 Вычисление
- 11 Управляющие конструкции
-
12 Переменные
- 12.1 Глобальные переменные
- 12.2 Неизменяемые переменные
- 12.3 Локальные переменные
- 12.4 Когда переменная не имеет значения
- 12.5 Определение глобальных переменных
- 12.6 Рекомендации по надежному определению переменных
- 12.7 Доступ к значениям переменных
- 12.8 Установка значений переменных
- 12.9 Запуск функции при изменении переменной.
- 12.10 Правила области видимости привязок переменных
- 12.11 Локальные переменные буфера
- 12.12 Локальные переменные файла
- 12.13 Локальные переменные каталога
- 12.14 Локальные переменные соединения
- 12.15 Псевдонимы переменных
- 12.16 Переменные с ограниченными значениями
- 12.17 Обобщенные переменные
- 12.18 Многосеансовые переменные
-
13 Функции
- 13.1 Что такое функция?
- 13.2 Лямбда-выражения
- 13.3 Присвоение имени функции
- 13.4 Определение функций
- 13.5 Вызов функций
- 13.6 Применение функций к элементам
- 13.7 Анонимные функции
- 13.8 Обобщенные функции
- 13.9 Доступ к содержимому ячеек функций
- 13.10 Замыкания
- 13.11 Открытые замыкания
- 13.12 Добавление советов к функциям Emacs Lisp
- 13.13 Объявление функций устаревшими
- 13.14 Встраиваемые функции
- 13.15 Форма
declare - 13.16 Сообщение компилятору об определении функции
- 13.17 Определение безопасности вызова функции
- 13.18 Другие темы, связанные с функциями
- 14 Макросы
- 15 Параметры настройки
- 16 Загрузка
- 17 Компиляция в байт-код
- 18 Компиляция Lisp в машинный код
-
19 Отладка программ на Lisp
-
19.1 Отладчик Lisp
- 19.1.1 Вход в отладчик при ошибке
- 19.1.2 Отладка ошибок перерисовки
- 19.1.3 Отладка бесконечных циклов
- 19.1.4 Вход в отладчик при вызове функции
- 19.1.5 Вход в отладчик при изменении переменной
- 19.1.6 Явный вход в отладчик
- 19.1.7 Использование отладчика
- 19.1.8 Трассировки стека
- 19.1.9 Команды отладчика
- 19.1.10 Вызов отладчика
- 19.1.11 Внутреннее устройство отладчика
-
19.2 Edebug
- 19.2.1 Использование Edebug
- 19.2.2 Инструментирование для Edebug
- 19.2.3 Режимы выполнения Edebug
- 19.2.4 Переходы
- 19.2.5 Различные команды Edebug
- 19.2.6 Остановы
- 19.2.7 Перехват ошибок
- 19.2.8 Представления Edebug
- 19.2.9 Вычисление
- 19.2.10 Буфер списка вычислений
- 19.2.11 Печать в Edebug
- 19.2.12 Буфер трассировки
- 19.2.13 Тестирование покрытия
- 19.2.14 Внешний контекст
- 19.2.15 Edebug и макросы
- 19.2.16 Параметры Edebug
- 19.3 Отладка некорректного синтаксиса Lisp
- 19.4 Покрытие тестами
- 19.5 Профилирование
-
19.1 Отладчик Lisp
- 20 Чтение и печать объектов Lisp
-
21 Минибуферы
- 21.1 Введение в минибуферы
- 21.2 Чтение текстовых строк с помощью минибуфера
- 21.3 Чтение объектов Lisp с помощью минибуфера
- 21.4 История минибуфера
- 21.5 Начальный ввод
- 21.6 Дополнение
- 21.7 Запросы с ответом «да» или «нет»
- 21.8 Запросы с несколькими вариантами ответа
- 21.9 Чтение пароля
- 21.10 Команды минибуфера
- 21.11 Окна минибуфера
- 21.12 Содержимое минибуфера
- 21.13 Рекурсивные минибуферы
- 21.14 Подавление взаимодействия
- 21.15 Разное о минибуфере
-
22 Цикл команд
- 22.1 Обзор цикла команд
- 22.2 Определение команд
- 22.3 Интерактивный вызов
- 22.4 Различение интерактивных вызовов
- 22.5 Информация из цикла команд
- 22.6 Корректировка позиции после команд
-
22.7 События ввода
- 22.7.1 События клавиатуры
- 22.7.2 Функциональные клавиши
- 22.7.3 События мыши
- 22.7.4 События щелчка
- 22.7.5 События перетаскивания
- 22.7.6 События нажатия кнопки
- 22.7.7 События повтора
- 22.7.8 События движения
- 22.7.9 События сенсорного экрана
- 22.7.10 События фокуса
- 22.7.11 События Xwidget
- 22.7.12 Различные системные события
- 22.7.13 Примеры событий
- 22.7.14 Классификация событий
- 22.7.15 Доступ к событиям мыши
- 22.7.16 Доступ к событиям полосы прокрутки
- 22.7.17 Представление событий клавиатуры в строках
- 22.8 Чтение ввода
- 22.9 Специальные события
- 22.10 Ожидание истечения времени или ввода
- 22.11 Прерывание
- 22.12 Аргументы префиксной команды
- 22.13 Рекурсивное редактирование
- 22.14 Отключение команд
- 22.15 История команд
- 22.16 Макросы клавиатуры
-
23 Карты клавиш
- 23.1 Основы карт клавиш
- 23.2 Изменение привязок клавиш
- 23.3 Формат карт клавиш
- 23.4 Создание карт клавиш
- 23.5 Наследование и карты клавиш
- 23.6 Префиксные клавиши
- 23.7 Активные карты клавиш
- 23.8 Поиск в активных картах клавиш
- 23.9 Управление активными картами клавиш
- 23.10 Поиск клавиши
- 23.11 Функции поиска клавиш
- 23.12 Последовательности клавиш
- 23.13 Низкоуровневая привязка клавиш
- 23.14 Переназначение команд
- 23.15 Карты клавиш для преобразования последовательностей событий
- 23.16 Команды для привязки клавиш
- 23.17 Просмотр карт клавиш
- 23.18 Карты клавиш меню
-
24 Основные и второстепенные режимы
- 24.1 Хуки
-
24.2 Основные режимы
- 24.2.1 Соглашения для основных режимов
- 24.2.2 Как Emacs выбирает основной режим
- 24.2.3 Справка по основному режиму
- 24.2.4 Определение производных режимов
- 24.2.5 Основные режимы общего назначения
- 24.2.6 Хуки режимов
- 24.2.7 Режим табличного списка
- 24.2.8 Универсальные режимы
- 24.2.9 Примеры основных режимов
- 24.3 Второстепенные режимы
-
24.4 Формат строки режима
- 24.4.1 Основы строки режима
- 24.4.2 Структура данных строки режима
- 24.4.3 Верхний уровень управления строкой режима
- 24.4.4 Переменные, используемые в строке режима
- 24.4.5 Конструкции
%в строке режима - 24.4.6 Свойства в строке режима
- 24.4.7 Строки заголовка окон
- 24.4.8 Строки вкладок окон
- 24.4.9 Эмуляция форматирования строки режима
- 24.5 Imenu
- 24.6 Второстепенный режим структуры
-
24.7 Режим Font Lock
- 24.7.1 Основы Font Lock
- 24.7.2 Подсветка на основе поиска
- 24.7.3 Настройка подсветки на основе поиска
- 24.7.4 Другие переменные Font Lock
- 24.7.5 Уровни Font Lock
- 24.7.6 Предварительно вычисленная подсветка
- 24.7.7 Лица для Font Lock
- 24.7.8 Синтаксический Font Lock
- 24.7.9 Многострочные конструкции Font Lock
- 24.7.10 Font Lock на основе синтаксического анализатора
-
24.8 Автоматический отступ кода
-
24.8.1 Простой механизм отступов
- 24.8.1.1 Настройка и возможности SMIE
- 24.8.1.2 Грамматики с приоритетом операторов
- 24.8.1.3 Определение грамматики языка
- 24.8.1.4 Определение токенов
- 24.8.1.5 Работа со слабым синтаксическим анализатором
- 24.8.1.6 Задание правил отступов
- 24.8.1.7 Вспомогательные функции для правил отступов
- 24.8.1.8 Примеры правил отступов
- 24.8.1.9 Настройка отступов
- 24.8.2 Отступы на основе синтаксического анализатора
-
24.8.1 Простой механизм отступов
- 24.9 Режим сохранения рабочего стола
- 25 Документация
-
26 Файлы
- 26.1 Открытие файлов
- 26.2 Сохранение буферов
- 26.3 Чтение из файлов
- 26.4 Запись в файлы
- 26.5 Блокировки файлов
- 26.6 Информация о файлах
- 26.7 Изменение имён и атрибутов файлов
- 26.8 Файлы и вторичное хранилище
- 26.9 Имена файлов
- 26.10 Содержимое каталогов
- 26.11 Создание, копирование и удаление каталогов
- 26.12 Придание некоторым именам файлов «магических» свойств
- 26.13 Преобразование форматов файлов
- 27 Резервные копии и автосохранение
-
28 Буферы
- 28.1 Основы буферов
- 28.2 Текущий буфер
- 28.3 Имена буферов
- 28.4 Имя файла буфера
- 28.5 Изменение буфера
- 28.6 Время изменения буфера
- 28.7 Буферы только для чтения
- 28.8 Список буферов
- 28.9 Создание буферов
- 28.10 Уничтожение буферов
- 28.11 Косвенные буферы
- 28.12 Обмен текстом между двумя буферами
- 28.13 Разрыв буфера
-
29 Окна
- 29.1 Основные понятия окон Emacs
- 29.2 Окна и кадры
- 29.3 Выбор окон
- 29.4 Размеры окон
- 29.5 Изменение размеров окон
- 29.6 Сохранение размеров окон
- 29.7 Разделение окон
- 29.8 Удаление окон
- 29.9 Объединение окон
- 29.10 Восстановление окон
- 29.11 Изменение расположения окон
- 29.12 Циклический порядок окон
- 29.13 Буферы и окна
- 29.14 Переключение на буфер в окне
- 29.15 Отображение буфера в подходящем окне
- 29.16 История окон
- 29.17 Выделенные окна
- 29.18 Завершение работы с окнами
- 29.19 Боковые окна
- 29.20 Атомарные окна
- 29.21 Окна и точка
- 29.22 Начальная и конечная позиции окна
- 29.23 Прокрутка текста
- 29.24 Дробная вертикальная прокрутка
- 29.25 Горизонтальная прокрутка
- 29.26 Координаты и окна
- 29.27 Автоматический выбор окна мышью
- 29.28 Конфигурации окон
- 29.29 Параметры окон
- 29.30 Перехватчики прокрутки и изменений окон
-
30 Кадры
- 30.1 Создание кадров
- 30.2 Несколько терминалов
- 30.3 Геометрия кадра
-
30.4 Параметры кадра
- 30.4.1 Доступ к параметрам кадра
- 30.4.2 Начальные параметры кадра
-
30.4.3 Параметры окна кадра
- 30.4.3.1 Основные параметры
- 30.4.3.2 Параметры положения
- 30.4.3.3 Параметры размера
- 30.4.3.4 Параметры расположения
- 30.4.3.5 Параметры буфера
- 30.4.3.6 Параметры взаимодействия с кадром
- 30.4.3.7 Параметры перетаскивания мышью
- 30.4.3.8 Параметры управления окнами
- 30.4.3.9 Параметры курсора
- 30.4.3.10 Параметры шрифта и цвета
- 30.4.4 Геометрия
- 30.5 Параметры терминала
- 30.6 Заголовки кадров
- 30.7 Удаление кадров
- 30.8 Поиск всех кадров
- 30.9 Разделение и объединение кадров
- 30.10 Минибуферы и кадры
- 30.11 Фокус ввода
- 30.12 Видимость кадров
- 30.13 Поднятие, опускание и изменение порядка кадров
- 30.14 Конфигурации кадров
- 30.15 Дочерние кадры
- 30.16 Отслеживание мыши
- 30.17 Положение мыши
- 30.18 Всплывающие меню
- 30.19 Экранные клавиатуры
- 30.20 Диалоговые окна
- 30.21 Форма указателя
- 30.22 Выделения оконной системы
- 30.23 Доступ к выделениям
- 30.24 Вставка мультимедийных данных
- 30.25 Перетаскивание
- 30.26 Названия цветов
- 30.27 Цвета текстового терминала
- 30.28 Ресурсы X
- 30.29 Проверка возможностей отображения
- 31 Позиции
- 32 Маркеры
-
33 Текст
- 33.1 Изучение текста рядом с точкой
- 33.2 Изучение содержимого буфера
- 33.3 Сравнение текста
- 33.4 Вставка текста
- 33.5 Команды вставки пользовательского уровня
- 33.6 Удаление текста
- 33.7 Команды удаления пользовательского уровня
- 33.8 Кольцо вырезания
- 33.9 Отмена
- 33.10 Ведение списков отмены
- 33.11 Переформатирование
- 33.12 Поля при переформатировании
- 33.13 Режим адаптивного переформатирования
- 33.14 Автоматическое переформатирование
- 33.15 Сортировка текста
- 33.16 Подсчёт столбцов
- 33.17 Отступы
- 33.18 Изменение регистра
-
33.19 Свойства текста
- 33.19.1 Изучение свойств текста
- 33.19.2 Изменение свойств текста
- 33.19.3 Функции поиска свойств текста
- 33.19.4 Свойства с особым значением
- 33.19.5 Свойства форматированного текста
- 33.19.6 Наследование свойств текста
- 33.19.7 Отложенное вычисление свойств текста
- 33.19.8 Определение текста, доступного для щелчка
- 33.19.9 Определение и использование полей
- 33.19.10 Почему свойства текста не являются интервалами
- 33.20 Замена кода символа
- 33.21 Регистры
- 33.22 Перестановка текста
- 33.23 Замена текста буфера
- 33.24 Работа со сжатыми данными
- 33.25 Кодирование Base 64
- 33.26 Контрольная сумма/хеш
- 33.27 Подозрительный текст
- 33.28 Криптография GnuTLS
- 33.29 База данных
- 33.30 Разбор HTML и XML
- 33.31 Разбор и генерация значений JSON
- 33.32 Обмен данными JSONRPC
- 33.33 Атомарные группы изменений
- 33.34 Перехватчики изменений
-
34 Символы не-ASCII
- 34.1 Представления текста
- 34.2 Отключение многобайтовых символов
- 34.3 Преобразование представлений текста
- 34.4 Выбор представления
- 34.5 Коды символов
- 34.6 Свойства символов
- 34.7 Наборы символов
- 34.8 Поиск наборов символов
- 34.9 Преобразование символов
-
34.10 Системы кодирования
- 34.10.1 Основные понятия систем кодирования
- 34.10.2 Кодирование и ввод-вывод
- 34.10.3 Системы кодирования в Lisp
- 34.10.4 Системы кодирования, выбранные пользователем
- 34.10.5 Системы кодирования по умолчанию
- 34.10.6 Указание системы кодирования для одной операции
- 34.10.7 Явное кодирование и декодирование
- 34.10.8 Кодирование ввода-вывода терминала
- 34.11 Методы ввода
- 34.12 Локали
-
35 Поиск и сопоставление
- 35.1 Поиск строк
- 35.2 Поиск и регистр
- 35.3 Регулярные выражения
- 35.4 Поиск с помощью регулярных выражений
- 35.5 Поиск совпадений регулярных выражений по самому длинному совпадению
- 35.6 Данные о совпадении
- 35.7 Поиск и замена
- 35.8 Стандартные регулярные выражения, используемые при редактировании
- 35.9 Регулярные выражения Emacs и POSIX
- 36 Таблицы синтаксиса
- 37 Грамматики выражений разбора
-
38 Разбор исходного кода программы
- 38.1 Грамматика языка Tree-sitter
- 38.2 Использование анализатора Tree-sitter
- 38.3 Получение узлов
- 38.4 Доступ к информации об узлах
- 38.5 Сопоставление с образцом узлов Tree-sitter
- 38.6 Определяемые пользователем «объекты» и навигация
- 38.7 Разбор текста на нескольких языках
- 38.8 Разработка основных режимов с помощью tree-sitter
- 38.9 Соответствия API C Tree-sitter
- 39 Сокращения и раскрытие сокращений
- 40 Потоки
-
41 Процессы
- 41.1 Функции создания подпроцессов
- 41.2 Аргументы оболочки
- 41.3 Создание синхронного процесса
- 41.4 Создание асинхронного процесса
- 41.5 Удаление процессов
- 41.6 Информация о процессах
- 41.7 Отправка ввода процессам
- 41.8 Отправка сигналов процессам
- 41.9 Получение вывода процессов
- 41.10 Сентинелы: обнаружение изменений состояния процесса
- 41.11 Запрос перед выходом
- 41.12 Доступ к другим процессам
- 41.13 Очереди транзакций
- 41.14 Сетевые соединения
- 41.15 Сетевые серверы
- 41.16 Датаграммы
- 41.17 Низкоуровневый доступ к сети
- 41.18 Различные сетевые средства
- 41.19 Обмен данными с последовательными портами
- 41.20 Упаковка и распаковка массивов байтов
-
42 Отображение в Emacs
- 42.1 Обновление экрана
- 42.2 Принудительное обновление экрана
- 42.3 Усечение
- 42.4 Область эха
- 42.5 Выдача предупреждений
- 42.6 Невидимый текст
- 42.7 Выборочное отображение
- 42.8 Временные отображения
- 42.9 Оверлеи
- 42.10 Размер отображаемого текста
- 42.11 Высота строки
-
42.12 Лица
- 42.12.1 Атрибуты лица
- 42.12.2 Определение лиц
- 42.12.3 Функции атрибутов лиц
- 42.12.4 Отображение лиц
- 42.12.5 Переназначение лиц
- 42.12.6 Функции для работы с лицами
- 42.12.7 Автоматическое назначение лиц
- 42.12.8 Основные лица
- 42.12.9 Выбор шрифта
- 42.12.10 Поиск шрифтов
- 42.12.11 Наборы шрифтов
- 42.12.12 Низкоуровневое представление шрифта
- 42.13 Поля
- 42.14 Полосы прокрутки
- 42.15 Разделители окон
-
42.16 Свойство
display -
42.17 Изображения
- 42.17.1 Форматы изображений
- 42.17.2 Дескрипторы изображений
- 42.17.3 Изображения XBM
- 42.17.4 Изображения XPM
- 42.17.5 Изображения ImageMagick
- 42.17.6 Изображения SVG
- 42.17.7 Другие типы изображений
- 42.17.8 Определение изображений
- 42.17.9 Отображение изображений
- 42.17.10 Многостраничные изображения
- 42.17.11 Кэш изображений
- 42.18 Значки
- 42.19 Встроенные нативные виджеты
- 42.20 Кнопки
- 42.21 Абстрактное отображение
- 42.22 Мигание скобок
- 42.23 Отображение символов
- 42.24 Звуковые сигналы
- 42.25 Оконные системы
- 42.26 Всплывающие подсказки
- 42.27 Двунаправленное отображение
-
43 Интерфейс операционной системы
- 43.1 Запуск Emacs
- 43.2 Завершение работы Emacs
- 43.3 Среда операционной системы
- 43.4 Идентификация пользователя
- 43.5 Время суток
- 43.6 Правила часовых поясов
- 43.7 Преобразование времени
- 43.8 Разбор и форматирование времени
- 43.9 Процессорное время выполнения
- 43.10 Вычисления времени
- 43.11 Таймеры отложенного выполнения
- 43.12 Таймеры простоя
- 43.13 Ввод с терминала
- 43.14 Вывод в терминал
- 43.15 Звуковой вывод
- 43.16 Работа с KeySym в X11
- 43.17 Пакетный режим
- 43.18 Управление сеансами
- 43.19 Уведомления рабочего стола
- 43.20 Управление функциями системной панели задач графического интерфейса
- 43.21 Блокировка сна системы и событий приостановки процессов
- 43.22 Уведомления об изменениях файлов
- 43.23 Динамически загружаемые библиотеки
- 43.24 Вопросы безопасности
- 44 Подготовка кода Lisp к распространению
- Приложение A. Антиновости Emacs 30
- Приложение B. Лицензия GNU на свободную документацию
- Приложение C. Универсальная общественная лицензия GNU
-
Приложение D. Советы и соглашения
- D.1 Соглашения о кодировании на Emacs Lisp
- D.2 Соглашения о привязке клавиш
- D.3 Советы по программированию в Emacs
- D.4 Советы по ускорению скомпилированного кода
- D.5 Советы по предотвращению предупреждений компилятора
- D.6 Советы по строкам документации
- D.7 Советы по группам документации
- D.8 Советы по написанию комментариев
- D.9 Стандартные заголовки библиотек Emacs
- Приложение E. Внутреннее устройство GNU Emacs
- Приложение F. Стандартные ошибки
- Приложение G. Стандартные карты клавиш
- Приложение H. Стандартные хуки
- Указатель
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/index.html