[Top] [Contents] [Index] [ ? ]

Table of Contents

Preface
Why Study Emacs Lisp?
On Reading this Text
For Whom This is Written
Lisp History
A Note for Novices
Thank You
1. List Processing
1.1 Lisp Lists
Numbers, Lists inside of Lists
1.1.1 Lisp Atoms
1.1.2 Whitespace in Lists
1.1.3 GNU Emacs Helps You Type Lists
1.2 Run a Program
1.3 Generate an Error Message
1.4 Symbol Names and Function Definitions
1.5 The Lisp Interpreter
Complications
1.5.1 Byte Compiling
1.6 Evaluation
1.6.1 Evaluating Inner Lists
1.7 Variables
fill-column, an Example Variable
1.7.1 Error Message for a Symbol Without a Function
1.7.2 Error Message for a Symbol Without a Value
1.8 Arguments
1.8.1 Arguments' Data Types
1.8.2 An Argument as the Value of a Variable or List
1.8.3 Variable Number of Arguments
1.8.4 Using the Wrong Type Object as an Argument
1.8.5 The message Function
1.9 Setting the Value of a Variable
1.9.1 Using set
1.9.2 Using setq
1.9.3 Counting
1.10 Summary
1.11 Exercises
2. Practicing Evaluation
How to Evaluate
2.1 Buffer Names
2.2 Getting Buffers
2.3 Switching Buffers
2.4 Buffer Size and the Location of Point
2.5 Exercise
3. How To Write Function Definitions
An Aside about Primitive Functions
3.1 The defun Special Form
3.2 Install a Function Definition
The effect of installation
3.2.1 Change a Function Definition
3.3 Make a Function Interactive
An Interactive multiply-by-seven, An Overview
3.3.1 An Interactive multiply-by-seven
3.4 Different Options for interactive
3.5 Install Code Permanently
3.6 let
let Prevents Confusion
3.6.1 The Parts of a let Expression
3.6.2 Sample let Expression
3.6.3 Uninitialized Variables in a let Statement
3.7 The if Special Form
if in more detail
3.7.1 The type-of-animal Function in Detail
3.8 If--then--else Expressions
3.9 Truth and Falsehood in Emacs Lisp
An explanation of nil
3.10 save-excursion
Point and Mark
3.10.1 Template for a save-excursion Expression
3.11 Review
3.12 Exercises
4. A Few Buffer--Related Functions
4.1 Finding More Information
4.2 A Simplified beginning-of-buffer Definition
4.3 The Definition of mark-whole-buffer
An overview of mark-whole-buffer
4.3.1 Body of mark-whole-buffer
4.4 The Definition of append-to-buffer
An Overview of append-to-buffer
4.4.1 The append-to-buffer Interactive Expression
4.4.2 The Body of append-to-buffer
4.4.3 save-excursion in append-to-buffer
4.5 Review
4.6 Exercises
5. A Few More Complex Functions
5.1 The Definition of copy-to-buffer
5.2 The Definition of insert-buffer
The Code for insert-buffer
5.2.1 The Interactive Expression in insert-buffer
A Read-only Buffer
`b' in an Interactive Expression
5.2.2 The Body of the insert-buffer Function
5.2.3 insert-buffer With an if Instead of an or
5.2.4 The or in the Body
5.2.5 The let Expression in insert-buffer
5.3 Complete Definition of beginning-of-buffer
5.3.1 Optional Arguments
5.3.2 beginning-of-buffer with an Argument
Disentangle beginning-of-buffer
What happens in a large buffer
What happens in a small buffer
5.3.3 The Complete beginning-of-buffer
5.4 Review
5.5 optional Argument Exercise
6. Narrowing and Widening
The Advantages of Narrowing
6.1 The save-restriction Special Form
6.2 what-line
6.3 Exercise with Narrowing
7. car, cdr, cons: Fundamental Functions
Strange Names
7.1 car and cdr
7.2 cons
Build a list
7.2.1 Find the Length of a List: length
7.3 nthcdr
7.4 nth
7.5 setcar
7.6 setcdr
7.7 Exercise
8. Cutting and Storing Text
Storing Text in a List
8.1 zap-to-char
The Complete zap-to-char Implementation
8.1.1 The interactive Expression
8.1.2 The Body of zap-to-char
8.1.3 The search-forward Function
8.1.4 The progn Special Form
8.1.5 Summing up zap-to-char
8.2 kill-region
The Complete kill-region Definition
8.2.1 condition-case
8.2.2 delete-and-extract-region
8.3 delete-and-extract-region: Digressing into C
8.4 Initializing a Variable with defvar
Seeing the Current Value of a Variable
8.4.1 defvar and an asterisk
8.5 copy-region-as-kill
The complete copy-region-as-kill function definition
8.5.1 The Body of copy-region-as-kill
last-command and this-command
The kill-append function
The kill-new function
8.6 Review
8.7 Searching Exercises
9. How Lists are Implemented
Lists diagrammed
9.1 Symbols as a Chest of Drawers
9.2 Exercise
10. Yanking Text Back
10.1 Kill Ring Overview
10.2 The kill-ring-yank-pointer Variable
10.3 Exercises with yank and nthcdr
11. Loops and Recursion
11.1 while
Looping with while
11.1.1 A while Loop and a List
11.1.2 An Example: print-elements-of-list
11.1.3 A Loop with an Incrementing Counter
Example with incrementing counter
The parts of the function definition
Putting the function definition together
11.1.4 Loop with a Decrementing Counter
Example with decrementing counter
The parts of the function definition
Putting the function definition together
11.2 Save your time: dolist and dotimes
The dolist Macro
The dotimes Macro
11.3 Recursion
11.3.1 Building Robots: Extending the Metaphor
11.3.2 The Parts of a Recursive Definition
11.3.3 Recursion with a List
11.3.4 Recursion in Place of a Counter
An argument of 1 or 2
An argument of 3 or 4
11.3.5 Recursion Example Using cond
11.3.6 Recursive Patterns
Recursive Pattern: every
Recursive Pattern: accumulate
Recursive Pattern: keep
11.3.7 Recursion without Deferments
11.3.8 No Deferment Solution
11.4 Looping Exercise
12. Regular Expression Searches
12.1 The Regular Expression for sentence-end
12.2 The re-search-forward Function
12.3 forward-sentence
Complete forward-sentence function definition
The while loops
The regular expression search
12.4 forward-paragraph: a Goldmine of Functions
Shortened forward-paragraph function definition
The let* expression
The forward motion while loop
Between paragraphs
Within paragraphs
No fill prefix
With a fill prefix
Summary
12.5 Create Your Own `TAGS' File
12.6 Review
12.7 Exercises with re-search-forward
13. Counting: Repetition and Regexps
Counting words
13.1 The count-words-region Function
Designing count-words-region
13.1.1 The Whitespace Bug in count-words-region
13.2 Count Words Recursively
13.3 Exercise: Counting Punctuation
14. Counting Words in a defun
Divide and Conquer
14.1 What to Count?
14.2 What Constitutes a Word or Symbol?
14.3 The count-words-in-defun Function
14.4 Count Several defuns Within a File
14.5 Find a File
14.6 lengths-list-file in Detail
14.7 Count Words in defuns in Different Files
Determine the lengths of defuns
14.7.1 The append Function
14.8 Recursively Count Words in Different Files
14.9 Prepare the Data for Display in a Graph
14.9.1 Sorting Lists
14.9.2 Making a List of Files
14.9.3 Counting function definitions
15. Readying a Graph
Printing the Columns of a Graph
15.1 The graph-body-print Function
15.2 The recursive-graph-body-print Function
15.3 Need for Printed Axes
15.4 Exercise
16. Your `.emacs' File
Emacs' Default Configuration
16.1 Site-wide Initialization Files
16.2 Specifying Variables using defcustom
16.3 Beginning a `.emacs' File
16.4 Text and Auto Fill Mode
16.5 Mail Aliases
16.6 Indent Tabs Mode
16.7 Some Keybindings
16.8 Keymaps
16.9 Loading Files
16.10 Autoloading
16.11 A Simple Extension: line-to-top-of-window
16.12 X11 Colors
16.13 Miscellaneous Settings for a `.emacs' File
16.14 A Modified Mode Line
17. Debugging
17.1 debug
17.2 debug-on-entry
17.3 debug-on-quit and (debug)
17.4 The edebug Source Level Debugger
17.5 Debugging Exercises
18. Conclusion
A. The the-the Function
B. Handling the Kill Ring
B.1 The rotate-yank-pointer Function
rotate-yank-pointer in Outline
B.1.1 The Body of rotate-yank-pointer
Digression about the word `error'
The else-part of the if expression
The % remainder function
Using % in rotate-yank-pointer
Pointing to the last element
B.2 yank
Passing the argument
Passing a negative argument
B.3 yank-pop
C. A Graph with Labelled Axes
Labelled Example Graph
C.1 The print-graph Varlist
C.2 The print-Y-axis Function
What height should the label be?
C.2.1 Side Trip: Compute a Remainder
C.2.2 Construct a Y Axis Element
C.2.3 Create a Y Axis Column
C.2.4 The Not Quite Final Version of print-Y-axis
C.3 The print-X-axis Function
Similarities and differences
C.3.1 X Axis Tic Marks
C.4 Printing the Whole Graph
Changes for the Final Version
C.4.1 Testing print-graph
C.4.2 Graphing Numbers of Words and Symbols
C.4.3 A lambda Expression: Useful Anonymity
C.4.4 The mapcar Function
C.4.5 Another Bug ... Most Insidious
C.4.6 The Printed Graph
D. GNU Free Documentation License
Index
About the Author


This document was generated by Dohn Arms on March, 6 2005 using texi2html