[Top] | [Contents] | [Index] | [ ? ] |
Это главное меню, где вначале идет краткое содержание; затем полное, где перечислены все подразделы книги.
определенной области.
Предисловие переводчиков Предисловие 1. Обработка списков 2. Практика вычислений 3. Написание функций 4. Что такое буфер 5. Первые трудности 6. Сужение и расширение Ограничения своего и Emacs внимания к
7. car
,cdr
,cons
: основные функцииОсновные функции в Лиспе. 8. Вырезание и сохранение текста 9. Как реализованы списки 10. Вставка текста обратно 11. Циклы и рекурсия 12. Поиск с использованием регулярных выражений 13. Подсчеты: Повторения и Регулярные выражения 14. Считаем слова в defun
Считаем кол-во слов в функции. 15. Изготовляем график 16. Ваш файл `.emacs' 17. Отладка Использование отладчиков для Emacs Lisp. 18. Заключение Как изучать Emacs Lisp дальше? A. Функция the-the
Поиск удвоенных слов. B. Обработка списка удалений Реализация списка удалений (kill ring) C. График с координатными осями Index Об Авторе
-- The Detailed Node Listing ---
Предисловие
Как читать этот текст Для кого это написано Происхождение Emacs Lisp Немного истории. Замечание для новичков Благодарности
Обработка списков
Списки в Лисп
1.1.1 Атомы Лиспа 1.1.2 Пробелы в списках 1.1.3 GNU Emacs помогает вам программировать
Интерпретатор Лиспа
1.5.1 Байт-компиляция
Вычисление
1.6.1 Вычисление внутренних списков
Переменные
1.7.1 Сообщение об ошибке для пустого символа
Аргументы
или списка.
1.8.1 Типы Данных аргументов 1.8.2 Аргумент как значение переменной или списка
число аргументов.
1.8.3 Аргументов может быть много
1.8.4 А если аргумент неправильного типа 1.8.5 Функция message
Очень полезная функция.
Присваиваем переменной значение
1.9.1 Используя set
Присваиваем значение.. 1.9.2 Используя setq
Тоже самое, но удобнее. 1.9.3 Счетчик Считаем с помощью setq
.
Практика вычислений
C-x C-e вы заставляете интерпретатор
Как вычислить
работать.
буфера.
2.1 Имя буфера 2.2 Как вернуть буфер 2.3 Смена буфера 2.4 Размер буфера и местоположение точки
2.5 Упражнения
Написание функций
Немного о примитивных функциях 3.1 Особая форма defun
3.2 Установка определения функции 3.3 Делаем функцию интерактивной 3.4 Различные опции для interactive
3.5 Устанавливаем код надолго 3.6 let
Создание и инициализация локальных переменных. 3.7 Особая форма if
Что есть if? 3.8 Выражения if--then--else 3.9 Истина и ложь в Lisp Что в Лиспе считается истиной?. 3.10 save-excursion
Как запомнить точку, метку и текущий буфер. 3.11 Обзор 3.12 Упражнения
Установка определения функции
3.2.1 Изменяем определение функции
Делаем функцию интерактивной
3.3.1 Интерактивная умножить-на-семь
.Интерактивная версия.
let
3.6.1 Части выражения let
3.6.2 Пример выражения let
3.6.3 Неинициализированные переменные в операторе let
Особая формаif
3.7.1 Подробное рассмотрение функции type-of-animal
Пример выражения if
.
save-excursion
3.10.1 Шаблон для выражения save-excursion
Что такое буфер
4.1 Поиск дополнительной информации 4.2 Упрощенное определение beginning-of-buffer
Объяснение goto-char
,point-min
, иpush-mark
.
4.3 Определение mark-whole-buffer
Почти тоже самое как и beginning-of-buffer
.
4.4 Определение append-to-buffer
Использует save-excursion
insert-buffer-substring
.
4.5 Обзор 4.6 Упражнения
Определениеmark-whole-buffer
4.3.1 Тело mark-whole-buffer
Только три строчки.
Определениеappend-to-buffer
4.4.1 Интерактивное выражение в append-to-buffer
Две части выражения interactive
.4.4.2 Тело append-to-buffer
4.4.3 save-excursion
вappend-to-buffer
Как работает the save-excursion
.
Первые трудности
5.1 Определение copy-to-buffer
С set-buffer
,get-buffer-create
.5.2 Определение insert-buffer
Только-чтение, и функция or
.5.3 Полное определение beginning-of-buffer
Использование goto-char
,point-min
, иpush-mark
.
5.4 Обзор 5.5 Упражнения с &optional
аргументом
Определениеinsert-buffer
5.2.1 Интерактивное выражение в insert-buffer
Когда буфер только-для-чтения. 5.2.2 Тело функции insert-buffer
5.2.3 insert-buffer
сif
вместоor
Используем if
вместоor
.5.2.4 or
в теле функции5.2.5 Выражение let
вinsert-buffer
Два выражения save-excursion
.
Интерактивное выражение вinsert-buffer
Буфер только-для-чтения `b' в интерактивном выражении
Полное определениеbeginning-of-buffer
5.3.1 Необязательные аргументы 5.3.2 beginning-of-buffer
с аргументомПример с необязательным аргументом. 5.3.3 Полный текст beginning-of-buffer
beginning-of-buffer
с аргументом
Что происходит в больших буферах Что происходит в маленьких буферах
Сужение и расширение
Преимущества сужения 6.1 Особая форма save-restriction
6.2 what-line
Номер строки на которой находиться курсор. 6.3 Упражнения на сужение
car
,cdr
,cons
: основные функции
Необычные имена 7.1 car
иcdr
Функции для извлечения частей списка. 7.2 cons
Создание списка. 7.3 nthcdr
Повторный вызов cdr
.7.4 setcar
Изменяем первый элемент списка. 7.5 setcdr
Изменяем остаток списка. 7.6 Упражнения
cons
7.2.1 Найти длину списка: length
Как найти длину списка.
Вырезание и сохранение текста
значение.
Сохранение текста в списке 8.1 zap-to-char
Как вырезать текст до символа. 8.2 kill-region
8.3 delete-region
: Погружение в язык СиПогружение в Си. 8.4 Инициализация переменной с defvar
Как переменной присвоить первоначальное
8.5 copy-region-as-kill
Определение для копирования текста. 8.6 Обзор 8.7 Упражнения с поиском
zap-to-char
8.1.1 Выражение interactive
8.1.2 Тело zap-to-char
Краткий обзор. 8.1.3 Функция search-forward
Как найти строку. 8.1.4 Функция progn
8.1.5 Резюме zap-to-char
Используем point
,search-forward
.8.1.6 Реализация для 18 Версии Emacs Реализация для 18 версии.
Реализация для 18 Версии Emacs
Тело выражения progn
copy-region-as-kill
8.5.1 Тело copy-region-as-kill
Телоcopy-region-as-kill
Функция kill-append
Else-часть copy-region-as-kill
Как реализованы списки
9.1 Упражнения
Вставка текста обратно
10.1 Обзор списка уничтожений 10.2 Переменная kill-ring-yank-pointer
10.3 Упражнения с yank
иnthcdr
Циклы и рекурсия
11.1 while
Заставляем код повторяться. 11.2 Рекурсия 11.3 Упражнения с циклами
while
11.1.1 Цикл while
и список11.1.2 Пример: print-elements-of-list
Uses while
,car
,cdr
.11.1.3 Цикл с увеличивающимся счетчиком 11.1.4 Цикл с уменьшающимся счетчиком
Цикл с увеличивающимся счетчиком
Пример с увеличивающимся счетчиком Части определения функции Составляем определение функции
Цикл с уменьшающимся счетчиком
Пример с уменьшением счетчика Части определения функции Составляем определение функции
Рекурсия
11.2.1 Рекурсия на списке 11.2.2 Рекурсия на месте счетчика Меняем цикл while
на рекурсию.11.2.3 Пример рекурсии с использованием cond
Пример рекурсии с другим условием.
Рекурсия на месте счетчика
Аргумент 3
Поиск с использованием регулярных выражений
12.1 Регулярное выражение для sentence-end
12.2 Функция re-search-forward
Похожа на search-forward
.12.3 forward-sentence
Простой пример поиска regexp. 12.4 forward-paragraph
: сокровищница функцийДавайте усложним задачу. 12.5 Создание своего собственного файла `TAGS' 12.6 Заключение 12.7 Упражнения с re-search-forward
forward-sentence
Циклы while
Поиск по регулярному выражению
forward-paragraph
: сокровищница функций
Выражение let*
Цикл while
движения впередМежду параграфами Внутри параграфа Без префикса заполнения С префиксом заполнения Итог forward-paragraph
полностью.
Подсчеты: Повторения и Регулярные выражения
Считаем слова 13.1 Функция count-words-region
Используем regexp, но появляется проблема. 13.2 Рекурсивный подсчет слов 13.3 Упражнения: Сколько знаков пунктуации
Функцияcount-words-region
13.1.1 Ошибка в count-words-region
Считаем слова вdefun
Считаем слова в функциях из нескольких файлов
14.7.1 Функция append
Добавление одного списка к другому.
Подготовка данных для вывода в виде графика
14.9.1 Сортировка списков 14.9.2 Создание списка файлов
Изготовляем график
Отображение колонок графика 15.1 Функция graph-body-print
How to print the body of a graph. 15.2 Функция recursive-graph-body-print
15.3 Need for Printed Axes 15.4 Упражнения
Ваш файл `.emacs'
Настройка Emacs по умолчанию 16.1 Общесистемные файлы инициализации 16.2 Установка переменных для одной сессии 16.3 Начало файла `.emacs' 16.4 Режимы Text и Auto Fill 16.5 Почтовые алиасы 16.6 Режим отступа по табуляции (Indent Tabs) 16.7 Некоторые привязки клавиш 16.8 Загрузка файлов 16.9 Автозагрузка 16.10 Простое расширение: line-to-top-of-window
Создаем функции; связываем ее с клавишей. 16.11 Таблицы ключей 16.12 Цвета X11 Цвета в версии 19 для системы X Window. 16.13 Разное для версии 19 Автоматически изменяем размер минибуфера... 16.14 Измененная строка режима
Отладка
17.1 debug
Использование встроенного отладчика. 17.2 debug-on-entry
Запуск отладчика при вызове функции. 17.3 debug-on-quit
и(debug)
Запуск отладчика при аварийном выходе C-g. 17.4 Отладчик на уровне исходного кода edebug
Использование Edebug, более сложного отладчика. 17.5 Упражнения по отладке
Обработка списка удалений
B.1 Функция rotate-yank-pointer
Перемещает указатель по списку. B.2 yank
B.3 yank-pop
Функцияrotate-yank-pointer
B.1.1 Тело функции rotate-yank-pointer
Тело функцииrotate-yank-pointer
else-часть выражения if
Функция вычисления остатка %
Использование %
вrotate-yank-pointer
Указатель на последний элемент
yank
Передача аргумента Передаем аргумент в rotate-yank-pointer
.Передаем отрицательный аргумент
График с координатными осями
Пример графика с координатными осями C.1 Список переменных print-graph
C.2 Функция print-Y-axis
Градуируем вертикальную ось. C.3 Функция print-X-axis
Печатаем горизонтальную ось. C.4 Печать полного графика
Функцияprint-Y-axis
C.2.1 Обходной путь: Вычисление остатка C.2.2 Создание элементов оси Y C.2.3 Создание колонки оси Y C.2.4 Окончательная версия print-Y-axis
Печать веритикальной оси.
Функцияprint-X-axis
C.3.1 Маркеры оси X Создаем метки для горизонтальной оси.
Печать полного графика
C.4.1 Проверка функции print-graph
Быстрая проверка. C.4.2 График количества слов в функциях C.4.3 Окончательная печать графика
График количества слов в функциях
Выражение lambda
Создание безымянной функции. Функция mapcar
Запуск функции для каждого элемента списка. Последняя ошибка ... самая коварная Последняя ошибка обычно самая коварная.