Spec-Zone.ru › Elisp

Emacs Lisp

  • 1 Введение
    • 1.1 Предостережения
    • 1.2 История Lisp
    • 1.3 Соглашения
      • 1.3.1 Некоторые термины
      • 1.3.2 nil и t
      • 1.3.3 Обозначения для вычисления
      • 1.3.4 Обозначения для печати
      • 1.3.5 Сообщения об ошибках
      • 1.3.6 Обозначения для текста буфера
      • 1.3.7 Формат описаний
        • 1.3.7.1 Пример описания функции
        • 1.3.7.2 Пример описания переменной
    • 1.4 Информация о версии
    • 1.5 Благодарности
  • 2 Типы данных Lisp
    • 2.1 Печатное представление и синтаксис чтения
    • 2.2 Специальный синтаксис чтения
    • 2.3 Комментарии
    • 2.4 Типы данных программирования
      • 2.4.1 Целочисленный тип
      • 2.4.2 Тип с плавающей точкой
      • 2.4.3 Символьный тип
        • 2.4.3.1 Основной синтаксис символов
        • 2.4.3.2 Общий синтаксис экранирования
        • 2.4.3.3 Синтаксис управляющих символов
        • 2.4.3.4 Синтаксис метасимволов
        • 2.4.3.5 Другие биты-модификаторы символов
      • 2.4.4 Тип символа
      • 2.4.5 Типы последовательностей
      • 2.4.6 Типы конс-ячеек и списков
        • 2.4.6.1 Изображение списков в виде диаграмм из блоков
        • 2.4.6.2 Обозначение точечной пары
        • 2.4.6.3 Тип ассоциативного списка
      • 2.4.7 Тип массива
      • 2.4.8 Тип строки
        • 2.4.8.1 Синтаксис строк
        • 2.4.8.2 Символы, не входящие в ASCII, в строках
        • 2.4.8.3 Непечатаемые символы в строках
        • 2.4.8.4 Свойства текста в строках
      • 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 Числа
    • 3.1 Основы целых чисел
    • 3.2 Основы чисел с плавающей точкой
    • 3.3 Предикаты типов для чисел
    • 3.4 Сравнение чисел
    • 3.5 Преобразования чисел
    • 3.6 Арифметические операции
    • 3.7 Операции округления
    • 3.8 Побитовые операции над целыми числами
    • 3.9 Стандартные математические функции
    • 3.10 Случайные числа
  • 4 Строки и символы
    • 4.1 Основы строк и символов
    • 4.2 Предикаты для строк
    • 4.3 Создание строк
    • 4.4 Изменение строк
    • 4.5 Сравнение символов и строк
    • 4.6 Преобразование символов и строк
    • 4.7 Форматирование строк
    • 4.8 Пользовательские строки формата
    • 4.9 Преобразование регистра в Lisp
    • 4.10 Таблица регистра
  • 5 Списки
    • 5.1 Списки и конс-ячейки
    • 5.2 Предикаты для списков
    • 5.3 Доступ к элементам списков
    • 5.4 Создание конс-ячеек и списков
    • 5.5 Изменение переменных-списков
    • 5.6 Изменение существующей структуры списка
      • 5.6.1 Изменение элементов списка с помощью setcar
      • 5.6.2 Изменение CDR списка
      • 5.6.3 Функции для перестановки элементов списков
    • 5.7 Использование списков в качестве множеств
    • 5.8 Ассоциативные списки
    • 5.9 Списки свойств
      • 5.9.1 Списки свойств и ассоциативные списки
      • 5.9.2 Списки свойств вне символов
  • 6 Последовательности, массивы и векторы
    • 6.1 Последовательности
    • 6.2 Массивы
    • 6.3 Функции для работы с массивами
    • 6.4 Векторы
    • 6.5 Функции для работы с векторами
    • 6.6 Таблицы символов
    • 6.7 Булевы векторы
    • 6.8 Управление кольцевым буфером объектов фиксированного размера
  • 7 Записи
    • 7.1 Функции для работы с записями
    • 7.2 Обратная совместимость
  • 8 Хеш-таблицы
    • 8.1 Создание хеш-таблиц
    • 8.2 Доступ к хеш-таблице
    • 8.3 Определение сравнений для хеширования
    • 8.4 Другие функции для работы с хеш-таблицами
  • 9 Символы
    • 9.1 Компоненты символа
    • 9.2 Определение символов
    • 9.3 Создание и интернирование символов
    • 9.4 Свойства символов
      • 9.4.1 Доступ к свойствам символов
      • 9.4.2 Стандартные свойства символов
    • 9.5 Сокращения
      • 9.5.1 Исключения
    • 9.6 Символы с позицией
  • 10 Вычисление
    • 10.1 Введение в вычисление
    • 10.2 Виды форм
      • 10.2.1 Самовычисляемые формы
      • 10.2.2 Формы-символы
      • 10.2.3 Классификация списковых форм
      • 10.2.4 Косвенная ссылка на функцию символа
      • 10.2.5 Вычисление функциональных форм
      • 10.2.6 Вычисление макросов Lisp
      • 10.2.7 Специальные формы
      • 10.2.8 Автозагрузка
    • 10.3 Заключение в кавычки
    • 10.4 Обратная кавычка
    • 10.5 Eval
    • 10.6 Отложенное и ленивое вычисление
  • 11 Управляющие конструкции
    • 11.1 Последовательное выполнение
    • 11.2 Условные конструкции
    • 11.3 Конструкции для объединения условий
    • 11.4 Условная конструкция сопоставления с образцом
      • 11.4.1 Макрос pcase
      • 11.4.2 Расширение pcase
      • 11.4.3 Образцы в стиле обратной кавычки
      • 11.4.4 Деструктуризация с помощью образцов pcase
      • 11.4.5 Макрос cond*
    • 11.5 Итерация
    • 11.6 Генераторы
    • 11.7 Нелокальные выходы
      • 11.7.1 Явные нелокальные выходы: catch и throw
      • 11.7.2 Примеры catch и throw
      • 11.7.3 Ошибки
        • 11.7.3.1 Как сигнализировать об ошибке
        • 11.7.3.2 Как Emacs обрабатывает ошибки
        • 11.7.3.3 Написание кода для обработки ошибок
        • 11.7.3.4 Символы ошибок и имена условий
      • 11.7.4 Очистка после нелокальных выходов
    • 11.8 Условная компиляция
  • 12 Переменные
    • 12.1 Глобальные переменные
    • 12.2 Неизменяемые переменные
    • 12.3 Локальные переменные
    • 12.4 Когда переменная не имеет значения
    • 12.5 Определение глобальных переменных
    • 12.6 Рекомендации по надежному определению переменных
    • 12.7 Доступ к значениям переменных
    • 12.8 Установка значений переменных
    • 12.9 Запуск функции при изменении переменной.
      • 12.9.1 Ограничения
    • 12.10 Правила области видимости привязок переменных
      • 12.10.1 Лексическая привязка
      • 12.10.2 Динамическая привязка
      • 12.10.3 Правильное использование динамической привязки
      • 12.10.4 Выбор диалекта Lisp
      • 12.10.5 Переход на лексическую привязку
    • 12.11 Локальные переменные буфера
      • 12.11.1 Введение в локальные переменные буфера
      • 12.11.2 Создание и удаление привязок локальных переменных буфера
      • 12.11.3 Значение по умолчанию локальной переменной буфера
    • 12.12 Локальные переменные файла
    • 12.13 Локальные переменные каталога
    • 12.14 Локальные переменные соединения
      • 12.14.1 Локальные профили соединения
      • 12.14.2 Применение локальных переменных соединения
    • 12.15 Псевдонимы переменных
    • 12.16 Переменные с ограниченными значениями
    • 12.17 Обобщенные переменные
      • 12.17.1 Макрос setf
      • 12.17.2 Определение новых форм setf
    • 12.18 Многосеансовые переменные
  • 13 Функции
    • 13.1 Что такое функция?
    • 13.2 Лямбда-выражения
      • 13.2.1 Компоненты лямбда-выражения
      • 13.2.2 Пример простого лямбда-выражения
      • 13.2.3 Особенности списков аргументов
      • 13.2.4 Строки документации функций
    • 13.3 Присвоение имени функции
    • 13.4 Определение функций
      • 13.4.1 Поиск определений
    • 13.5 Вызов функций
    • 13.6 Применение функций к элементам
    • 13.7 Анонимные функции
    • 13.8 Обобщенные функции
    • 13.9 Доступ к содержимому ячеек функций
    • 13.10 Замыкания
    • 13.11 Открытые замыкания
    • 13.12 Добавление советов к функциям Emacs Lisp
      • 13.12.1 Примитивы для управления советами
      • 13.12.2 Добавление советов к именованным функциям
      • 13.12.3 Способы комбинирования советов
      • 13.12.4 Адаптация кода, использующего старый defadvice
      • 13.12.5 Советы и байт-код
    • 13.13 Объявление функций устаревшими
    • 13.14 Встраиваемые функции
    • 13.15 Форма declare
    • 13.16 Сообщение компилятору об определении функции
    • 13.17 Определение безопасности вызова функции
    • 13.18 Другие темы, связанные с функциями
  • 14 Макросы
    • 14.1 Простой пример макроса
    • 14.2 Раскрытие вызова макроса
    • 14.3 Макросы и компиляция в байт-код
    • 14.4 Определение макросов
    • 14.5 Распространенные проблемы при использовании макросов
      • 14.5.1 Неподходящий момент
      • 14.5.2 Повторное вычисление аргументов макроса
      • 14.5.3 Локальные переменные в раскрытии макросов
      • 14.5.4 Вычисление аргументов макроса при раскрытии
      • 14.5.5 Сколько раз раскрывается макрос?
    • 14.6 Отступы в макросах
  • 15 Параметры настройки
    • 15.1 Общие ключевые слова элементов
    • 15.2 Определение групп настройки
    • 15.3 Определение переменных настройки
    • 15.4 Типы настройки
      • 15.4.1 Простые типы
      • 15.4.2 Составные типы
      • 15.4.3 Вставка в списки
      • 15.4.4 Ключевые слова типов
      • 15.4.5 Определение новых типов
    • 15.5 Применение настроек
    • 15.6 Пользовательские темы
  • 16 Загрузка
    • 16.1 Как программы выполняют загрузку
    • 16.2 Суффиксы загрузки
    • 16.3 Поиск библиотек
    • 16.4 Загрузка символов, не входящих в ASCII
    • 16.5 Автозагрузка
      • 16.5.1 Автозагрузка по префиксу
      • 16.5.2 Когда использовать автозагрузку
    • 16.6 Повторная загрузка
    • 16.7 Возможности
    • 16.8 В каком файле определен символ
    • 16.9 Выгрузка
    • 16.10 Перехватчики загрузки
    • 16.11 Динамические модули Emacs
  • 17 Компиляция в байт-код
    • 17.1 Производительность скомпилированного в байт-код кода
    • 17.2 Функции компиляции в байт-код
    • 17.3 Строки документации и компиляция
    • 17.4 Вычисление во время компиляции
    • 17.5 Ошибки компилятора
    • 17.6 Объекты функций-замыканий
    • 17.7 Дизассемблированный байт-код
  • 18 Компиляция Lisp в машинный код
    • 18.1 Функции компиляции в машинный код
    • 18.2 Переменные компиляции в машинный код
  • 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.6.1 Точки останова Edebug
        • 19.2.6.2 Глобальное условие останова
        • 19.2.6.3 Точки останова в исходном коде
      • 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.14.1 Проверка необходимости остановки
        • 19.2.14.2 Обновление отображения Edebug
        • 19.2.14.3 Рекурсивное редактирование Edebug
      • 19.2.15 Edebug и макросы
        • 19.2.15.1 Инструментирование вызовов макросов
        • 19.2.15.2 Список спецификаций
        • 19.2.15.3 Возврат назад в спецификациях
        • 19.2.15.4 Примеры спецификаций
      • 19.2.16 Параметры Edebug
    • 19.3 Отладка некорректного синтаксиса Lisp
      • 19.3.1 Лишние открывающие скобки
      • 19.3.2 Лишние закрывающие скобки
    • 19.4 Покрытие тестами
    • 19.5 Профилирование
  • 20 Чтение и печать объектов Lisp
    • 20.1 Введение в чтение и печать
    • 20.2 Входные потоки
    • 20.3 Функции ввода
    • 20.4 Выходные потоки
    • 20.5 Функции вывода
    • 20.6 Переменные, влияющие на вывод
    • 20.7 Переопределение переменных вывода
  • 21 Минибуферы
    • 21.1 Введение в минибуферы
    • 21.2 Чтение текстовых строк с помощью минибуфера
    • 21.3 Чтение объектов Lisp с помощью минибуфера
    • 21.4 История минибуфера
    • 21.5 Начальный ввод
    • 21.6 Дополнение
      • 21.6.1 Основные функции дополнения
      • 21.6.2 Дополнение и минибуфер
      • 21.6.3 Команды минибуфера, выполняющие дополнение
      • 21.6.4 Функции дополнения высокого уровня
      • 21.6.5 Чтение имён файлов
      • 21.6.6 Переменные дополнения
      • 21.6.7 Программируемое дополнение
      • 21.6.8 Дополнение в обычных буферах
    • 21.7 Запросы с ответом «да» или «нет»
    • 21.8 Запросы с несколькими вариантами ответа
    • 21.9 Чтение пароля
    • 21.10 Команды минибуфера
    • 21.11 Окна минибуфера
    • 21.12 Содержимое минибуфера
    • 21.13 Рекурсивные минибуферы
    • 21.14 Подавление взаимодействия
    • 21.15 Разное о минибуфере
  • 22 Цикл команд
    • 22.1 Обзор цикла команд
    • 22.2 Определение команд
      • 22.2.1 Использование interactive
      • 22.2.2 Кодовые символы для interactive
      • 22.2.3 Примеры использования interactive
      • 22.2.4 Указание режимов для команд
      • 22.2.5 Выбор одной из альтернативных команд
    • 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.8.1 Ввод последовательности клавиш
      • 22.8.2 Чтение одного события
      • 22.8.3 Изменение и преобразование событий ввода
      • 22.8.4 Вызов метода ввода
      • 22.8.5 Ввод символов с экранированием
      • 22.8.6 Различные особенности ввода событий
    • 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.15.1 Взаимодействие с обычными картами клавиш
    • 23.16 Команды для привязки клавиш
    • 23.17 Просмотр карт клавиш
    • 23.18 Карты клавиш меню
      • 23.18.1 Определение меню
        • 23.18.1.1 Простые элементы меню
        • 23.18.1.2 Расширенные элементы меню
        • 23.18.1.3 Разделители меню
        • 23.18.1.4 Элементы меню-псевдонимы
      • 23.18.2 Меню и мышь
      • 23.18.3 Меню и клавиатура
      • 23.18.4 Пример меню
      • 23.18.5 Строка меню
      • 23.18.6 Панели инструментов
      • 23.18.7 Изменение меню
      • 23.18.8 Простое меню
  • 24 Основные и второстепенные режимы
    • 24.1 Хуки
      • 24.1.1 Запуск хуков
      • 24.1.2 Настройка хуков
    • 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.3.1 Соглашения по написанию второстепенных режимов
      • 24.3.2 Карты клавиш и второстепенные режимы
      • 24.3.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.9.1 Многострочный Font Lock
        • 24.7.9.2 Область для повторной подсветки после изменения буфера
      • 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.9 Режим сохранения рабочего стола
  • 25 Документация
    • 25.1 Основы документации
    • 25.2 Доступ к строкам документации
    • 25.3 Подстановка привязок клавиш в документации
    • 25.4 Стиль кавычек в тексте
    • 25.5 Описание символов в сообщениях справки
    • 25.6 Функции справки
    • 25.7 Группы документации
  • 26 Файлы
    • 26.1 Открытие файлов
      • 26.1.1 Функции для открытия файлов
      • 26.1.2 Подпрограммы открытия файлов
    • 26.2 Сохранение буферов
    • 26.3 Чтение из файлов
    • 26.4 Запись в файлы
    • 26.5 Блокировки файлов
    • 26.6 Информация о файлах
      • 26.6.1 Проверка доступности
      • 26.6.2 Различение типов файлов
      • 26.6.3 Истинные имена
      • 26.6.4 Атрибуты файлов
      • 26.6.5 Расширенные атрибуты файлов
      • 26.6.6 Поиск файлов в стандартных местах
    • 26.7 Изменение имён и атрибутов файлов
    • 26.8 Файлы и вторичное хранилище
    • 26.9 Имена файлов
      • 26.9.1 Компоненты имени файла
      • 26.9.2 Абсолютные и относительные имена файлов
      • 26.9.3 Имена каталогов
      • 26.9.4 Функции раскрытия имён файлов
      • 26.9.5 Генерация уникальных имён файлов
      • 26.9.6 Дополнение имён файлов
      • 26.9.7 Стандартные имена файлов
    • 26.10 Содержимое каталогов
    • 26.11 Создание, копирование и удаление каталогов
    • 26.12 Придание некоторым именам файлов «магических» свойств
    • 26.13 Преобразование форматов файлов
      • 26.13.1 Обзор
      • 26.13.2 Спецификация преобразования туда и обратно
      • 26.13.3 Поэтапная спецификация
  • 27 Резервные копии и автосохранение
    • 27.1 Резервные копии файлов
      • 27.1.1 Создание резервных копий файлов
      • 27.1.2 Резервное копирование переименованием или копированием?
      • 27.1.3 Создание и удаление нумерованных резервных копий
      • 27.1.4 Именование резервных копий файлов
    • 27.2 Автосохранение
    • 27.3 Возврат к исходному состоянию
  • 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.15.1 Выбор окна для отображения буфера
      • 29.15.2 Функции действий для отображения буфера
      • 29.15.3 Списки действий для отображения буфера
      • 29.15.4 Дополнительные параметры отображения буферов
      • 29.15.5 Приоритет функций действий
      • 29.15.6 Дзен отображения буфера
    • 29.16 История окон
    • 29.17 Выделенные окна
    • 29.18 Завершение работы с окнами
    • 29.19 Боковые окна
      • 29.19.1 Отображение буферов в боковых окнах
      • 29.19.2 Параметры и функции боковых окон
      • 29.19.3 Расположение кадра с боковыми окнами
    • 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.3.1 Расположение кадра
      • 30.3.2 Шрифт кадра
      • 30.3.3 Положение кадра
      • 30.3.4 Размер кадра
      • 30.3.5 Неявное изменение размера кадра
    • 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.15.1 Операции с дочерними кадрами
      • 30.15.2 Свойства дочерних кадров
      • 30.15.3 Особенности дочерних кадров
    • 30.16 Отслеживание мыши
    • 30.17 Положение мыши
    • 30.18 Всплывающие меню
    • 30.19 Экранные клавиатуры
    • 30.20 Диалоговые окна
    • 30.21 Форма указателя
    • 30.22 Выделения оконной системы
    • 30.23 Доступ к выделениям
      • 30.23.1 Выделения X
      • 30.23.2 Другие выделения
    • 30.24 Вставка мультимедийных данных
    • 30.25 Перетаскивание
    • 30.26 Названия цветов
    • 30.27 Цвета текстового терминала
    • 30.28 Ресурсы X
    • 30.29 Проверка возможностей отображения
  • 31 Позиции
    • 31.1 Точка
    • 31.2 Перемещение
      • 31.2.1 Перемещение по символам
      • 31.2.2 Перемещение по словам
      • 31.2.3 Перемещение к концу буфера
      • 31.2.4 Перемещение по строкам текста
      • 31.2.5 Перемещение по экранным строкам
      • 31.2.6 Перемещение по сбалансированным выражениям
      • 31.2.7 Пропуск символов
    • 31.3 Экскурсии
    • 31.4 Сужение
  • 32 Маркеры
    • 32.1 Обзор маркеров
    • 32.2 Предикаты для маркеров
    • 32.3 Функции создания маркеров
    • 32.4 Информация о маркерах
    • 32.5 Типы вставки маркеров
    • 32.6 Перемещение маркеров
    • 32.7 Метка
    • 32.8 Область
  • 33 Текст
    • 33.1 Изучение текста рядом с точкой
    • 33.2 Изучение содержимого буфера
    • 33.3 Сравнение текста
    • 33.4 Вставка текста
    • 33.5 Команды вставки пользовательского уровня
    • 33.6 Удаление текста
    • 33.7 Команды удаления пользовательского уровня
    • 33.8 Кольцо вырезания
      • 33.8.1 Понятия кольца вырезания
      • 33.8.2 Функции вырезания
      • 33.8.3 Вставка
      • 33.8.4 Функции вставки
      • 33.8.5 Низкоуровневое кольцо вырезания
      • 33.8.6 Внутреннее устройство кольца вырезания
    • 33.9 Отмена
    • 33.10 Ведение списков отмены
    • 33.11 Переформатирование
    • 33.12 Поля при переформатировании
    • 33.13 Режим адаптивного переформатирования
    • 33.14 Автоматическое переформатирование
    • 33.15 Сортировка текста
    • 33.16 Подсчёт столбцов
    • 33.17 Отступы
      • 33.17.1 Примитивы отступов
      • 33.17.2 Отступы, управляемые основным режимом
      • 33.17.3 Отступ для всей области
      • 33.17.4 Отступ относительно предыдущих строк
      • 33.17.5 Настраиваемые позиции табуляции
      • 33.17.6 Команды перемещения на основе отступов
    • 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.28.1 Формат входных данных криптографии GnuTLS
      • 33.28.2 Криптографические функции GnuTLS
    • 33.29 База данных
    • 33.30 Разбор HTML и XML
      • 33.30.1 Объектная модель документа
    • 33.31 Разбор и генерация значений JSON
    • 33.32 Обмен данными JSONRPC
      • 33.32.1 Обзор
      • 33.32.2 Соединения JSONRPC на основе процессов
      • 33.32.3 Формат объектов JSON JSONRPC
      • 33.32.4 Отложенные запросы JSONRPC
    • 33.33 Атомарные группы изменений
    • 33.34 Перехватчики изменений
      • 33.34.1 Отслеживание изменений буфера
  • 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.3.1 Синтаксис регулярных выражений
        • 35.3.1.1 Специальные символы в регулярных выражениях
        • 35.3.1.2 Классы символов
        • 35.3.1.3 Конструкции с обратной косой чертой в регулярных выражениях
      • 35.3.2 Пример сложного регулярного выражения
      • 35.3.3 Структурированная нотация регулярных выражений rx
        • 35.3.3.1 Конструкции в регулярных выражениях rx
        • 35.3.3.2 Функции и макросы, использующие регулярные выражения rx
        • 35.3.3.3 Определение новых форм rx
      • 35.3.4 Функции регулярных выражений
      • 35.3.5 Проблемы с регулярными выражениями
    • 35.4 Поиск с помощью регулярных выражений
    • 35.5 Поиск совпадений регулярных выражений по самому длинному совпадению
    • 35.6 Данные о совпадении
      • 35.6.1 Замена совпавшего текста
      • 35.6.2 Простой доступ к данным о совпадении
      • 35.6.3 Доступ ко всем данным о совпадении
      • 35.6.4 Сохранение и восстановление данных о совпадении
    • 35.7 Поиск и замена
    • 35.8 Стандартные регулярные выражения, используемые при редактировании
    • 35.9 Регулярные выражения Emacs и POSIX
  • 36 Таблицы синтаксиса
    • 36.1 Понятия таблиц синтаксиса
    • 36.2 Дескрипторы синтаксиса
      • 36.2.1 Таблица классов синтаксиса
      • 36.2.2 Флаги синтаксиса
    • 36.3 Функции таблиц синтаксиса
    • 36.4 Свойства синтаксиса
    • 36.5 Перемещение и синтаксис
    • 36.6 Разбор выражений
      • 36.6.1 Команды перемещения на основе разбора
      • 36.6.2 Определение состояния разбора в заданной позиции
      • 36.6.3 Состояние анализатора
      • 36.6.4 Низкоуровневый разбор
      • 36.6.5 Параметры управления разбором
    • 36.7 Внутреннее устройство таблиц синтаксиса
    • 36.8 Категории
  • 37 Грамматики выражений разбора
    • 37.1 Определения PEX
    • 37.2 Действия разбора
    • 37.3 Написание правил PEG
  • 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 Сокращения и раскрытие сокращений
    • 39.1 Таблицы сокращений
    • 39.2 Определение сокращений
    • 39.3 Сохранение сокращений в файлах
    • 39.4 Поиск и раскрытие сокращений
    • 39.5 Стандартные таблицы сокращений
    • 39.6 Свойства сокращений
    • 39.7 Свойства таблиц сокращений
  • 40 Потоки
    • 40.1 Основные функции потоков
    • 40.2 Мьютексы
    • 40.3 Условные переменные
    • 40.4 Список потоков
  • 41 Процессы
    • 41.1 Функции создания подпроцессов
    • 41.2 Аргументы оболочки
    • 41.3 Создание синхронного процесса
    • 41.4 Создание асинхронного процесса
    • 41.5 Удаление процессов
    • 41.6 Информация о процессах
    • 41.7 Отправка ввода процессам
    • 41.8 Отправка сигналов процессам
    • 41.9 Получение вывода процессов
      • 41.9.1 Буферы процессов
      • 41.9.2 Функции-фильтры процессов
      • 41.9.3 Декодирование вывода процесса
      • 41.9.4 Приём вывода процессов
      • 41.9.5 Процессы и потоки
    • 41.10 Сентинелы: обнаружение изменений состояния процесса
    • 41.11 Запрос перед выходом
    • 41.12 Доступ к другим процессам
    • 41.13 Очереди транзакций
    • 41.14 Сетевые соединения
    • 41.15 Сетевые серверы
    • 41.16 Датаграммы
    • 41.17 Низкоуровневый доступ к сети
      • 41.17.1 make-network-process
      • 41.17.2 Параметры сети
      • 41.17.3 Проверка доступности сетевых функций
    • 41.18 Различные сетевые средства
    • 41.19 Обмен данными с последовательными портами
    • 41.20 Упаковка и распаковка массивов байтов
      • 41.20.1 Описание структуры данных
      • 41.20.2 Функции распаковки и упаковки байтов
      • 41.20.3 Расширенные спецификации структуры данных
  • 42 Отображение в Emacs
    • 42.1 Обновление экрана
    • 42.2 Принудительное обновление экрана
    • 42.3 Усечение
    • 42.4 Область эха
      • 42.4.1 Отображение сообщений в области эха
      • 42.4.2 Отображение хода выполнения операции
      • 42.4.3 Запись сообщений в *Messages*
      • 42.4.4 Настройка области эха
    • 42.5 Выдача предупреждений
      • 42.5.1 Основы предупреждений
      • 42.5.2 Переменные предупреждений
      • 42.5.3 Параметры предупреждений
      • 42.5.4 Отложенные предупреждения
    • 42.6 Невидимый текст
    • 42.7 Выборочное отображение
    • 42.8 Временные отображения
    • 42.9 Оверлеи
      • 42.9.1 Управление оверлеями
      • 42.9.2 Свойства оверлеев
      • 42.9.3 Поиск оверлеев
    • 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.13.1 Размер и положение полей
      • 42.13.2 Индикаторы полей
      • 42.13.3 Курсоры полей
      • 42.13.4 Растровые изображения полей
      • 42.13.5 Настройка растровых изображений полей
      • 42.13.6 Стрелка оверлея
    • 42.14 Полосы прокрутки
    • 42.15 Разделители окон
    • 42.16 Свойство display
      • 42.16.1 Спецификации отображения, заменяющие текст
      • 42.16.2 Заданные пробелы
      • 42.16.3 Задание пробелов в пикселях
      • 42.16.4 Другие спецификации отображения
      • 42.16.5 Отображение на полях
    • 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.20.1 Свойства кнопок
      • 42.20.2 Типы кнопок
      • 42.20.3 Создание кнопок
      • 42.20.4 Манипулирование кнопками
      • 42.20.5 Команды буфера кнопок
    • 42.21 Абстрактное отображение
      • 42.21.1 Функции абстрактного отображения
      • 42.21.2 Пример абстрактного отображения
    • 42.22 Мигание скобок
    • 42.23 Отображение символов
      • 42.23.1 Обычные соглашения об отображении
      • 42.23.2 Таблицы отображения
      • 42.23.3 Активная таблица отображения
      • 42.23.4 Глифы
      • 42.23.5 Отображение символов без глифов
    • 42.24 Звуковые сигналы
    • 42.25 Оконные системы
    • 42.26 Всплывающие подсказки
    • 42.27 Двунаправленное отображение
  • 43 Интерфейс операционной системы
    • 43.1 Запуск Emacs
      • 43.1.1 Краткое описание: последовательность действий при запуске
      • 43.1.2 Файл инициализации
      • 43.1.3 Инициализация для конкретного терминала
      • 43.1.4 Аргументы командной строки
    • 43.2 Завершение работы Emacs
      • 43.2.1 Завершение работы Emacs
      • 43.2.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.13.1 Режимы ввода
      • 43.13.2 Запись ввода
    • 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 к распространению
    • 44.1 Основы создания пакетов
    • 44.2 Простые пакеты
    • 44.3 Многофайловые пакеты
    • 44.4 Создание и сопровождение архивов пакетов
    • 44.5 Взаимодействие с веб-сервером архива
    • 44.6 Поддержка более старых версий Emacs
    • 44.7 Получение сведений о встроенных пакетах и версиях
  • Приложение 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
    • E.1 Сборка Emacs
    • E.2 Сборка мусора
    • E.3 Объекты, размещаемые в стеке
    • E.4 Использование памяти
    • E.5 Диалект C
    • E.6 Написание примитивов Emacs
    • E.7 Написание динамически загружаемых модулей
      • E.7.1 Код инициализации модуля
      • E.7.2 Написание функций модуля
      • E.7.3 Преобразование значений между Lisp и модулем
      • E.7.4 Различные вспомогательные функции для модулей
      • E.7.5 Нелокальные выходы в модулях
    • E.8 Внутреннее устройство объектов
      • E.8.1 Внутреннее устройство буфера
      • E.8.2 Внутреннее устройство окна
      • E.8.3 Внутреннее устройство процесса
    • E.9 Целочисленные типы C
  • Приложение 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API