| [Top] | [Contents] | [Index] | [ ? ] |
Это главное меню, где вначале идет краткое содержание; затем полное, где перечислены все подразделы книги.
определенной области.
Предисловие 1. Обработка списков 2. Практика вычислений 3. Написание функций 4. Что такое буфер 5. Первые трудности 6. Сужение и расширение Ограничения своего и Emacs внимания к
7. car,cdr,cons: основные функцииОсновные функции в Лиспе. 8. Вырезание и сохранение текста 9. Как реализованы списки 10. Вставка текста обратно 11. Циклы и рекурсия 12. Поиск с использованием регулярных выражений 13. Подсчеты: Повторения и Регулярные выражения 14. Считаем слова в defun15. Изготовляем график 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 Особая форма defun3.2 Установка определения функции 3.3 Делаем функцию интерактивной 3.4 Различные опции для interactive3.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 Части выражения let3.6.2 Пример выражения let3.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-excursioninsert-buffer-substring.
4.5 Обзор 4.6 Упражнения
Определениеmark-whole-buffer
4.3.1 Тело mark-whole-bufferOnly 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-restriction6.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 Выражение interactive8.1.2 Тело zap-to-charКраткий обзор. 8.1.3 Функция search-forwardКак найти строку. 8.1.4 Функция progn8.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-appendElse-часть copy-region-as-kill
Как реализованы списки
9.1 Упражнения
Вставка текста обратно
10.1 Обзор списка уничтожений 10.2 Переменная kill-ring-yank-pointer10.3 Упражнения с yankиnthcdr
Циклы и рекурсия
11.1 whileЗаставляем код повторяться. 11.2 Рекурсия 11.3 Упражнения с циклами
while
11.1.1 Цикл whileи список11.1.2 Пример: print-elements-of-listUses while,car,cdr.11.1.3 Цикл с увеличивающимся счетчиком 11.1.4 Цикл с уменьшающимся счетчиком
Цикл с увеличивающимся счетчиком
Пример с увеличивающимся счетчиком Части определения функции Составляем определение функции
Цикл с уменьшающимся счетчиком
Пример с уменьшением счетчика Части определения функции Составляем определение функции
Рекурсия
11.2.1 Рекурсия на списке 11.2.2 Рекурсия на месте счетчика Меняем цикл whileна рекурсию.11.2.3 Пример рекурсии с использованием condПример рекурсии с другим условием.
Рекурсия на месте счетчика
Аргумент 3
Поиск с использованием регулярных выражений
12.1 Регулярное выражение для sentence-end12.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-printHow to print the body of a graph. 15.2 Функция recursive-graph-body-print15.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-часть выражения ifC.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-axisFunctionPrint a label for the vertical axis. C.3 The print-X-axisFunctionPrint a horizontal label. C.4 Printing the Whole Graph The function to print a complete graph.
Theprint-Y-axisFunction
C.2.3 Создание колонки оси Y Generate a list of Y axis labels.
Theprint-X-axisFunction
C.3.1 X Axis Tic Marks Create tic marks for the horizontal axis.
Printing the Whole Graph
C.4.1 Testing print-graphRun 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 lambdaExpressionHow to write an anonymous function. The mapcarFunctionApply a function to elements of a list. Another Bug ... Most Insidious Yet another ... of a most insidious type.