car, cdr, cons: Fundamental Functionsdefunthe-the Functiondefun Macrointeractivelet
if Special Form
save-excursion
copy-to-bufferinsert-buffer
beginning-of-buffer
optional Argument Exercisecar, cdr, cons: Fundamental Functions
while
dolist and dotimes
defun
count-words-in-defun Functiondefuns Within a Filelengths-list-file in Detaildefuns in Different Files
defcustomline-to-top-of-windowthe-the Functionこれはプログラマー以外の人を対象としたEmacs Lispプログラミング入門です。
Distributed with Emacs version 27.2.50.
Copyright © 1990–1995, 1997, 2001–2022 Free Software Foundation, Inc.
Printed copies available from https://shop.fsf.org/. Published by:
GNU Press, https://www.fsf.org/licensing/gnu-press/ a division of the email: sales@fsf.org Free Software Foundation, Inc. Tel: +1 (617) 542-5942 51 Franklin Street, Fifth Floor Fax: +1 (617) 542-2652 Boston, MA 02110-1301 USA
ISBN 1-882114-43-4
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; there being no Invariant Section, with the Front-Cover Texts being “A GNU Manual”, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License”.
(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom.”
このマスターメニューではまず各チャプターとインデックス、その後に各チャプターのノードをリストしてあります。
| • Preface | What to look for. | |
| • List Processing | What is Lisp? | |
| • Practicing Evaluation | Running several programs. | |
| • Writing Defuns | How to write function definitions. | |
| • Buffer Walk Through | Exploring a few buffer-related functions. | |
| • More Complex | A few, even more complex functions. | |
| • Narrowing & Widening | Restricting your and Emacs attention to a region. | |
| • car cdr & cons | Fundamental functions in Lisp. | |
| • Cutting & Storing Text | Removing text and saving it. | |
| • List Implementation | How lists are implemented in the computer. | |
| • Yanking | Pasting stored text. | |
| • Loops & Recursion | How to repeat a process. | |
| • Regexp Search | Regular expression searches. | |
| • Counting Words | A review of repetition and regexps. | |
| • Words in a defun | Counting words in a defun.
| |
| • Readying a Graph | A prototype graph printing function. | |
| • Emacs Initialization | How to write a .emacs file. | |
| • Debugging | How to run the Emacs Lisp debuggers. | |
| • Conclusion | Now you have the basics. | |
| • the-the | An appendix: how to find reduplicated words. | |
| • Kill Ring | An appendix: how the kill ring works. | |
| • Full Graph | How to create a graph with labeled axes. | |
| • Free Software and Free Manuals | ||
| • GNU Free Documentation License | ||
| • Index | ||
| • About the Author | ||
— The Detailed Node Listing — Preface | ||
|---|---|---|
| • Why | Why learn Emacs Lisp? | |
| • On Reading this Text | Read, gain familiarity, pick up habits.... | |
| • Who You Are | For whom this is written. | |
| • Lisp History | ||
| • Note for Novices | You can read this as a novice. | |
| • Thank You | ||
List Processing | ||
| • Lisp Lists | What are lists? | |
| • Run a Program | Any list in Lisp is a program ready to run. | |
| • Making Errors | Generating an error message. | |
| • Names & Definitions | Names of symbols and function definitions. | |
| • Lisp Interpreter | What the Lisp interpreter does. | |
| • Evaluation | Running a program. | |
| • Variables | Returning a value from a variable. | |
| • Arguments | Passing information to a function. | |
| • set & setq | Setting the value of a variable. | |
| • Summary | The major points. | |
| • Error Message Exercises | ||
Lisp Lists | ||
| • Numbers Lists | List have numbers, other lists, in them. | |
| • Lisp Atoms | Elemental entities. | |
| • Whitespace in Lists | Formatting lists to be readable. | |
| • Typing Lists | How GNU Emacs helps you type lists. | |
The Lisp Interpreter | ||
| • Complications | Variables, Special forms, Lists within. | |
| • Byte Compiling | Specially processing code for speed. | |
Evaluation | ||
| • How the Interpreter Acts | Returns and Side Effects... | |
| • Evaluating Inner Lists | Lists within lists... | |
Variables | ||
| • fill-column Example | ||
| • Void Function | The error message for a symbol without a function. | |
| • Void Variable | The error message for a symbol without a value. | |
Arguments | ||
| • Data types | Types of data passed to a function. | |
| • Args as Variable or List | An argument can be the value of a variable or list. | |
| • Variable Number of Arguments | Some functions may take a variable number of arguments. | |
| • Wrong Type of Argument | Passing an argument of the wrong type to a function. | |
| • message | A useful function for sending messages. | |
Setting the Value of a Variable | ||
| • Using set | Setting values. | |
| • Using setq | Setting a quoted value. | |
| • Counting | Using setq to count.
| |
Practicing Evaluation | ||
| • How to Evaluate | Typing editing commands or C-x C-e causes evaluation. | |
| • Buffer Names | Buffers and files are different. | |
| • Getting Buffers | Getting a buffer itself, not merely its name. | |
| • Switching Buffers | How to change to another buffer. | |
| • Buffer Size & Locations | Where point is located and the size of the buffer. | |
| • Evaluation Exercise | ||
How To Write Function Definitions | ||
| • Primitive Functions | ||
| • defun | The defun macro.
| |
| • Install | Install a function definition. | |
| • Interactive | Making a function interactive. | |
| • Interactive Options | Different options for interactive.
| |
| • Permanent Installation | Installing code permanently. | |
| • let | Creating and initializing local variables. | |
| • if | What if? | |
| • else | If–then–else expressions. | |
| • Truth & Falsehood | What Lisp considers false and true. | |
| • save-excursion | Keeping track of point and buffer. | |
| • Review | ||
| • defun Exercises | ||
Install a Function Definition | ||
| • Effect of installation | ||
| • Change a defun | How to change a function definition. | |
Make a Function Interactive | ||
| • Interactive multiply-by-seven | An overview. | |
| • multiply-by-seven in detail | The interactive version. | |
| ||
| • Prevent confusion | ||
| • Parts of let Expression | ||
| • Sample let Expression | ||
| • Uninitialized let Variables | ||
The | ||
| • if in more detail | ||
| • type-of-animal in detail | An example of an if expression.
| |
Truth and Falsehood in Emacs Lisp | ||
| • nil explained | nil has two meanings.
| |
| ||
| • Point and mark | A review of various locations. | |
| • Template for save-excursion | ||
A Few Buffer-Related Functions | ||
| • Finding More | How to find more information. | |
| • simplified-beginning-of-buffer | Shows goto-char,
point-min, and push-mark.
| |
| • mark-whole-buffer | Almost the same as beginning-of-buffer.
| |
| • append-to-buffer | Uses save-excursion and
insert-buffer-substring.
| |
| • Buffer Related Review | Review. | |
| • Buffer Exercises | ||
The Definition of | ||
| • mark-whole-buffer overview | ||
| • Body of mark-whole-buffer | Only three lines of code. | |
The Definition of | ||
| • append-to-buffer overview | ||
| • append interactive | A two part interactive expression. | |
| • append-to-buffer body | Incorporates a let expression.
| |
| • append save-excursion | How the save-excursion works.
| |
A Few More Complex Functions | ||
| • copy-to-buffer | With set-buffer,
get-buffer-create.
| |
| • insert-buffer | Read-only, and with or.
| |
| • beginning-of-buffer | Shows goto-char, point-min, and
push-mark.
| |
| • Second Buffer Related Review | ||
| • optional Exercise | ||
The Definition of | ||
| • insert-buffer code | ||
| • insert-buffer interactive | When you can read, but not write. | |
| • insert-buffer body | The body has an or and a let.
| |
| • if & or | Using an if instead of an or.
| |
| • Insert or | How the or expression works.
| |
| • Insert let | Two save-excursion expressions.
| |
| • New insert-buffer | ||
The Interactive Expression in | ||
| • Read-only buffer | When a buffer cannot be modified. | |
| • b for interactive | An existing buffer or else its name. | |
Complete Definition of | ||
| • Optional Arguments | ||
| • beginning-of-buffer opt arg | Example with optional argument. | |
| • beginning-of-buffer complete | ||
| ||
| • Disentangle beginning-of-buffer | ||
| • Large buffer case | ||
| • Small buffer case | ||
Narrowing and Widening | ||
| • Narrowing advantages | The advantages of narrowing | |
| • save-restriction | The save-restriction special form.
| |
| • what-line | The number of the line that point is on. | |
| • narrow Exercise | ||
| ||
| • Strange Names | A historical aside: why the strange names? | |
| • car & cdr | Functions for extracting part of a list. | |
| • cons | Constructing a list. | |
| • nthcdr | Calling cdr repeatedly.
| |
| • nth | ||
| • setcar | Changing the first element of a list. | |
| • setcdr | Changing the rest of a list. | |
| • cons Exercise | ||
| ||
| • Build a list | ||
| • length | How to find the length of a list. | |
Cutting and Storing Text | ||
| • Storing Text | Text is stored in a list. | |
| • zap-to-char | Cutting out text up to a character. | |
| • kill-region | Cutting text out of a region. | |
| • copy-region-as-kill | A definition for copying text. | |
| • Digression into C | Minor note on C programming language macros. | |
| • defvar | How to give a variable an initial value. | |
| • cons & search-fwd Review | ||
| • search Exercises | ||
| ||
| • Complete zap-to-char | The complete implementation. | |
| • zap-to-char interactive | A three part interactive expression. | |
| • zap-to-char body | A short overview. | |
| • search-forward | How to search for a string. | |
| • progn | The progn special form.
| |
| • Summing up zap-to-char | Using point and search-forward.
| |
| ||
| • Complete kill-region | The function definition. | |
| • condition-case | Dealing with a problem. | |
| • Lisp macro | ||
| ||
| • Complete copy-region-as-kill | The complete function definition. | |
| • copy-region-as-kill body | The body of copy-region-as-kill.
| |
The Body of | ||
| • last-command & this-command | ||
| • kill-append function | ||
| • kill-new function | ||
Initializing a Variable with | ||
| • See variable current value | ||
| • defvar and asterisk | ||
How Lists are Implemented | ||
| • Lists diagrammed | ||
| • Symbols as Chest | Exploring a powerful metaphor. | |
| • List Exercise | ||
Yanking Text Back | ||
| • Kill Ring Overview | ||
| • kill-ring-yank-pointer | The kill ring is a list. | |
| • yank nthcdr Exercises | The kill-ring-yank-pointer variable.
| |
Loops and Recursion | ||
| • while | Causing a stretch of code to repeat. | |
| • dolist dotimes | ||
| • Recursion | Causing a function to call itself. | |
| • Looping exercise | ||
| ||
| • Looping with while | Repeat so long as test returns true. | |
| • Loop Example | A while loop that uses a list.
| |
| • print-elements-of-list | Uses while, car, cdr.
| |
| • Incrementing Loop | A loop with an incrementing counter. | |
| • Incrementing Loop Details | ||
| • Decrementing Loop | A loop with a decrementing counter. | |
Details of an Incrementing Loop | ||
| • Incrementing Example | Counting pebbles in a triangle. | |
| • Inc Example parts | The parts of the function definition. | |
| • Inc Example altogether | Putting the function definition together. | |
Loop with a Decrementing Counter | ||
| • Decrementing Example | More pebbles on the beach. | |
| • Dec Example parts | The parts of the function definition. | |
| • Dec Example altogether | Putting the function definition together. | |
Save your time: | ||
| • dolist | ||
| • dotimes | ||
Recursion | ||
| • Building Robots | Same model, different serial number ... | |
| • Recursive Definition Parts | Walk until you stop ... | |
| • Recursion with list | Using a list as the test whether to recurse. | |
| • Recursive triangle function | ||
| • Recursion with cond | ||
| • Recursive Patterns | Often used templates. | |
| • No Deferment | Don’t store up work ... | |
| • No deferment solution | ||
Recursion in Place of a Counter | ||
| • Recursive Example arg of 1 or 2 | ||
| • Recursive Example arg of 3 or 4 | ||
Recursive Patterns | ||
| • Every | ||
| • Accumulate | ||
| • Keep | ||
Regular Expression Searches | ||
| • sentence-end | The regular expression for sentence-end.
| |
| • re-search-forward | Very similar to search-forward.
| |
| • forward-sentence | A straightforward example of regexp search. | |
| • forward-paragraph | A somewhat complex example. | |
| • Regexp Review | ||
| • re-search Exercises | ||
| ||
| • Complete forward-sentence | ||
| • fwd-sentence while loops | Two while loops.
| |
| • fwd-sentence re-search | A regular expression search. | |
| ||
| • forward-paragraph in brief | Key parts of the function definition. | |
| • fwd-para let | The let* expression.
| |
| • fwd-para while | The forward motion while loop.
| |
Counting: Repetition and Regexps | ||
| • Why Count Words | ||
| • count-words-example | Use a regexp, but find a problem. | |
| • recursive-count-words | Start with case of no words in region. | |
| • Counting Exercise | ||
The | ||
| • Design count-words-example | The definition using a while loop.
| |
| • Whitespace Bug | The Whitespace Bug in
count-words-example.
| |
Counting Words in a | ||
| • Divide and Conquer | ||
| • Words and Symbols | What to count? | |
| • Syntax | What constitutes a word or symbol? | |
| • count-words-in-defun | Very like count-words-example.
| |
| • Several defuns | Counting several defuns in a file. | |
| • Find a File | Do you want to look at a file? | |
| • lengths-list-file | A list of the lengths of many definitions. | |
| • Several files | Counting in definitions in different files. | |
| • Several files recursively | Recursively counting in different files. | |
| • Prepare the data | Prepare the data for display in a graph. | |
Count Words in | ||
| • lengths-list-many-files | Return a list of the lengths of defuns. | |
| • append | Attach one list to another. | |
Prepare the Data for Display in a Graph | ||
| • Data for Display in Detail | ||
| • Sorting | Sorting lists. | |
| • Files List | Making a list of files. | |
| • Counting function definitions | ||
Readying a Graph | ||
| • Columns of a graph | ||
| • graph-body-print | How to print the body of a graph. | |
| • recursive-graph-body-print | ||
| • Printed Axes | ||
| • Line Graph Exercise | ||
Your .emacs File | ||
| • Default Configuration | ||
| • Site-wide Init | You can write site-wide init files. | |
| • defcustom | Emacs will write code for you. | |
| • Beginning init File | How to write a .emacs init file. | |
| • Text and Auto-fill | Automatically wrap lines. | |
| • Mail Aliases | Use abbreviations for email addresses. | |
| • Indent Tabs Mode | Don’t use tabs with TeX | |
| • Keybindings | Create some personal keybindings. | |
| • Keymaps | More about key binding. | |
| • Loading Files | Load (i.e., evaluate) files automatically. | |
| • Autoload | Make functions available. | |
| • Simple Extension | Define a function; bind it to a key. | |
| • X11 Colors | Colors in X. | |
| • Miscellaneous | ||
| • Mode Line | How to customize your mode line. | |
Debugging | ||
| • debug | How to use the built-in debugger. | |
| • debug-on-entry | Start debugging when you call a function. | |
| • debug-on-quit | Start debugging when you quit with C-g. | |
| • edebug | How to use Edebug, a source level debugger. | |
| • Debugging Exercises | ||
Handling the Kill Ring | ||
| • What the Kill Ring Does | ||
| • current-kill | ||
| • yank | Paste a copy of a clipped element. | |
| • yank-pop | Insert element pointed to. | |
| • ring file | ||
The | ||
| • Code for current-kill | ||
| • Understanding current-kill | ||
| ||
| • Body of current-kill | ||
| • Digression concerning error | How to mislead humans, but not computers. | |
| • Determining the Element | ||
A Graph with Labeled Axes | ||
| • Labeled Example | ||
| • print-graph Varlist | let expression in print-graph.
| |
| • print-Y-axis | Print a label for the vertical axis. | |
| • print-X-axis | Print a horizontal label. | |
| • Print Whole Graph | The function to print a complete graph. | |
The | ||
| • print-Y-axis in Detail | ||
| • Height of label | What height for the Y axis? | |
| • Compute a Remainder | How to compute the remainder of a division. | |
| • Y Axis Element | Construct a line for the Y axis. | |
| • Y-axis-column | Generate a list of Y axis labels. | |
| • print-Y-axis Penultimate | A not quite final version. | |
The | ||
| • Similarities differences | Much like print-Y-axis, but not
exactly.
| |
| • X Axis Tic Marks | Create tic marks for the horizontal axis. | |
Printing the Whole Graph | ||
| • The final version | A few changes. | |
| • Test print-graph | Run a short test. | |
| • Graphing words in defuns | Executing the final code. | |
| • lambda | How to write an anonymous function. | |
| • mapcar | Apply a function to elements of a list. | |
| • Another Bug | Yet another bug … most insidious. | |
| • Final printed graph | The graph itself! | |