| [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 Особая форма defun3.2 Установка определения функции 3.3 Делаем функцию интерактивной 3.4 Различные опции для interactive3.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 Части выражения 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-bufferТолько три строчки.
Определениеappend-to-buffer
4.4.1 Интерактивное выражение в append-to-bufferДве части выражения interactive.4.4.2 Тело append-to-buffer4.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-buffer5.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-region8.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полностью.
Подсчеты: Повторения и Регулярные выражения
Считаем слова 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'
Настройка 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 yankB.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-graphC.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Запуск функции для каждого элемента списка. Последняя ошибка ... самая коварная Последняя ошибка обычно самая коварная.