[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. Заключение A. Функция the-the
Приложение: поиск удвоенных слов. B. Обработка списка удалений 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 Выражения If--then--else. 3.9 Истина и ложь в Lisp Что в Лиспе считается истиной?. 3.10 save-excursion
Как запомнить точку, метку и текущий буфер. 3.11 Обзор 3.12 Упражнения
Установка определения функции
3.2.1 Изменяем определение функции
Делаем функцию интерактивной
3.3.1 Интерактивная multiply-by-seven
.Интерактивная версия.
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
Only three lines of code.
Определениеappend-to-buffer
4.4.1 Интерактивное выражение в append-to-buffer
Две части выражения interactive
.4.4.2 Тело append-to-buffer
Включает выражение let
.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
В теле есть or
иlet
.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
полностью.
Подсчеты: Повторения и Регулярные выражения
Считаем слова В Emacs нет команды для подсчета слов. 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'
Отладка
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
C.2.1 Обходной путь: Вычисление остатка Остаток, функция %
.Использование %
вrotate-yank-pointer
Указатель на последний элемент
yank
Передача аргумента Передаем аргумент rotate-yank-pointer
.Передаем отрицательный аргумент
A Graph with Labelled Axes
Пример графика с пометками How a finished graph should look. C.2 The print-Y-axis
FunctionPrint a label for the vertical axis. C.3 The print-X-axis
FunctionPrint a horizontal label. C.4 Printing the Whole Graph The function to print a complete graph.
Theprint-Y-axis
Function
C.2.3 Создание колонки оси Y Generate a list of Y axis labels.
Theprint-X-axis
Function
C.3.1 X Axis Tic Marks Create tic marks for the horizontal axis.
Printing the Whole Graph
C.4.1 Testing print-graph
Run a short test. C.4.2 Graphing Numbers of Words and Symbols Executing the final code. C.4.3 The Printed Graph The graph itself!
Graphing Numbers of Words and Symbols
A lambda
ExpressionHow to write an anonymous function. The mapcar
FunctionApply a function to elements of a list. Another Bug ... Most Insidious Yet another ... of a most insidious type.