\unnumbchapentry{GNU GENERAL PUBLIC LICENSE}{1}
\unnumbsecentry{Preamble}{1}
\unnumbsecentry{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}{2}
\unnumbsecentry{How to Apply These Terms to Your New Programs}{7}
\chapentry{Introduction}{1}{9}
\secentry{Caveats}{1}{1}{9}
\secentry{Lisp History}{1}{2}{10}
\secentry{Conventions}{1}{3}{10}
\subsecentry{Some Terms}{1}{3}{1}{11}
\subsecentry{\code {nil} and \code {t}}{1}{3}{2}{11}
\subsecentry{Evaluation Notation}{1}{3}{3}{11}
\subsecentry{Printing Notation}{1}{3}{4}{12}
\subsecentry{Error Messages}{1}{3}{5}{12}
\subsecentry{Buffer Text Notation}{1}{3}{6}{12}
\subsecentry{Format of Descriptions}{1}{3}{7}{13}
\subsubsecentry{A Sample Function Description}{1}{3}{7}{1}{13}
\subsubsecentry{A Sample Variable Description}{1}{3}{7}{2}{15}
\secentry{Version Information}{1}{4}{15}
\secentry{Acknowledgements}{1}{5}{16}
\chapentry{Lisp Data Types}{2}{17}
\secentry{Printed Representation and Read Syntax}{2}{1}{17}
\secentry{Comments}{2}{2}{18}
\secentry{Programming Types}{2}{3}{18}
\subsecentry{Integer Type}{2}{3}{1}{18}
\subsecentry{Floating Point Type}{2}{3}{2}{19}
\subsecentry{Character Type}{2}{3}{3}{19}
\subsecentry{Symbol Type}{2}{3}{4}{22}
\subsecentry{Sequence Types}{2}{3}{5}{23}
\subsecentry{Cons Cell and List Types}{2}{3}{6}{23}
\subsubsecentry{Dotted Pair Notation}{2}{3}{6}{1}{25}
\subsubsecentry{Association List Type}{2}{3}{6}{2}{26}
\subsecentry{Array Type}{2}{3}{7}{26}
\subsecentry{String Type}{2}{3}{8}{27}
\subsubsecentry{Syntax for Strings}{2}{3}{8}{1}{27}
\subsubsecentry{Non-ASCII Characters in Strings}{2}{3}{8}{2}{28}
\subsubsecentry{Nonprinting Characters in Strings}{2}{3}{8}{3}{28}
\subsubsecentry{Text Properties in Strings}{2}{3}{8}{4}{29}
\subsecentry{Vector Type}{2}{3}{9}{29}
\subsecentry{Char-Table Type}{2}{3}{10}{30}
\subsecentry{Bool-Vector Type}{2}{3}{11}{30}
\subsecentry{Function Type}{2}{3}{12}{30}
\subsecentry{Macro Type}{2}{3}{13}{31}
\subsecentry{Primitive Function Type}{2}{3}{14}{31}
\subsecentry{Byte-Code Function Type}{2}{3}{15}{32}
\subsecentry{Autoload Type}{2}{3}{16}{32}
\secentry{Editing Types}{2}{4}{32}
\subsecentry{Buffer Type}{2}{4}{1}{32}
\subsecentry{Marker Type}{2}{4}{2}{33}
\subsecentry{Window Type}{2}{4}{3}{34}
\subsecentry{Frame Type}{2}{4}{4}{34}
\subsecentry{Window Configuration Type}{2}{4}{5}{34}
\subsecentry{Frame Configuration Type}{2}{4}{6}{35}
\subsecentry{Process Type}{2}{4}{7}{35}
\subsecentry{Stream Type}{2}{4}{8}{35}
\subsecentry{Keymap Type}{2}{4}{9}{36}
\subsecentry{Overlay Type}{2}{4}{10}{36}
\secentry{Type Predicates}{2}{5}{36}
\secentry{Equality Predicates}{2}{6}{39}
\chapentry{Numbers}{3}{43}
\secentry{Integer Basics}{3}{1}{43}
\secentry{Floating Point Basics}{3}{2}{44}
\secentry{Type Predicates for Numbers}{3}{3}{45}
\secentry{Comparison of Numbers}{3}{4}{46}
\secentry{Numeric Conversions}{3}{5}{47}
\secentry{Arithmetic Operations}{3}{6}{48}
\secentry{Rounding Operations}{3}{7}{51}
\secentry{Bitwise Operations on Integers}{3}{8}{52}
\secentry{Standard Mathematical Functions}{3}{9}{56}
\secentry{Random Numbers}{3}{10}{57}
\chapentry{Strings and Characters}{4}{59}
\secentry{String and Character Basics}{4}{1}{59}
\secentry{The Predicates for Strings}{4}{2}{60}
\secentry{Creating Strings}{4}{3}{60}
\secentry{Modifying Strings}{4}{4}{63}
\secentry{Comparison of Characters and Strings}{4}{5}{63}
\secentry{Conversion of Characters and Strings}{4}{6}{66}
\secentry{Formatting Strings}{4}{7}{67}
\secentry{Case Conversion in Lisp}{4}{8}{70}
\secentry{The Case Table}{4}{9}{72}
\chapentry{Lists}{5}{75}
\secentry{Lists and Cons Cells}{5}{1}{75}
\secentry{Lists as Linked Pairs of Boxes}{5}{2}{75}
\secentry{Predicates on Lists}{5}{3}{77}
\secentry{Accessing Elements of Lists}{5}{4}{78}
\secentry{Building Cons Cells and Lists}{5}{5}{80}
\secentry{Modifying Existing List Structure}{5}{6}{83}
\subsecentry{Altering List Elements with \code {setcar}}{5}{6}{1}{83}
\subsecentry{Altering the CDR of a List}{5}{6}{2}{85}
\subsecentry{Functions that Rearrange Lists}{5}{6}{3}{86}
\secentry{Using Lists as Sets}{5}{7}{89}
\secentry{Association Lists}{5}{8}{91}
\chapentry{Sequences, Arrays, and Vectors}{6}{97}
\secentry{Sequences}{6}{1}{97}
\secentry{Arrays}{6}{2}{99}
\secentry{Functions that Operate on Arrays}{6}{3}{100}
\secentry{Vectors}{6}{4}{102}
\secentry{Functions for Vectors}{6}{5}{103}
\secentry{Char-Tables}{6}{6}{104}
\secentry{Bool-vectors}{6}{7}{107}
\chapentry{Symbols}{7}{109}
\secentry{Symbol Components}{7}{1}{109}
\secentry{Defining Symbols}{7}{2}{111}
\secentry{Creating and Interning Symbols}{7}{3}{111}
\secentry{Property Lists}{7}{4}{114}
\subsecentry{Property Lists and Association Lists}{7}{4}{1}{115}
\subsecentry{Property List Functions for Symbols}{7}{4}{2}{115}
\subsecentry{Property Lists Outside Symbols}{7}{4}{3}{116}
\chapentry{Evaluation}{8}{119}
\secentry{Kinds of Forms}{8}{1}{120}
\subsecentry{Self-Evaluating Forms}{8}{1}{1}{120}
\subsecentry{Symbol Forms}{8}{1}{2}{121}
\subsecentry{Classification of List Forms}{8}{1}{3}{121}
\subsecentry{Symbol Function Indirection}{8}{1}{4}{121}
\subsecentry{Evaluation of Function Forms}{8}{1}{5}{123}
\subsecentry{Lisp Macro Evaluation}{8}{1}{6}{123}
\subsecentry{Special Forms}{8}{1}{7}{124}
\subsecentry{Autoloading}{8}{1}{8}{125}
\secentry{Quoting}{8}{2}{125}
\secentry{Eval}{8}{3}{126}
\chapentry{Control Structures}{9}{129}
\secentry{Sequencing}{9}{1}{129}
\secentry{Conditionals}{9}{2}{130}
\secentry{Constructs for Combining Conditions}{9}{3}{132}
\secentry{Iteration}{9}{4}{134}
\secentry{Nonlocal Exits}{9}{5}{135}
\subsecentry{Explicit Nonlocal Exits: \code {catch} and \code {throw}}{9}{5}{1}{135}
\subsecentry{Examples of \code {catch} and \code {throw}}{9}{5}{2}{136}
\subsecentry{Errors}{9}{5}{3}{138}
\subsubsecentry{How to Signal an Error}{9}{5}{3}{1}{138}
\subsubsecentry{How Emacs Processes Errors}{9}{5}{3}{2}{139}
\subsubsecentry{Writing Code to Handle Errors}{9}{5}{3}{3}{140}
\subsubsecentry{Error Symbols and Condition Names}{9}{5}{3}{4}{143}
\subsecentry{Cleaning Up from Nonlocal Exits}{9}{5}{4}{144}
\chapentry{Variables}{10}{147}
\secentry{Global Variables}{10}{1}{147}
\secentry{Variables That Never Change}{10}{2}{148}
\secentry{Local Variables}{10}{3}{148}
\secentry{When a Variable is ``Void''}{10}{4}{150}
\secentry{Defining Global Variables}{10}{5}{152}
\secentry{Tips for Defining Variables Robustly}{10}{6}{154}
\secentry{Accessing Variable Values}{10}{7}{155}
\secentry{How to Alter a Variable Value}{10}{8}{156}
\secentry{Scoping Rules for Variable Bindings}{10}{9}{158}
\subsecentry{Scope}{10}{9}{1}{159}
\subsecentry{Extent}{10}{9}{2}{160}
\subsecentry{Implementation of Dynamic Scoping}{10}{9}{3}{160}
\subsecentry{Proper Use of Dynamic Scoping}{10}{9}{4}{161}
\secentry{Buffer-Local Variables}{10}{10}{161}
\subsecentry{Introduction to Buffer-Local Variables}{10}{10}{1}{162}
\subsecentry{Creating and Deleting Buffer-Local Bindings}{10}{10}{2}{163}
\subsecentry{The Default Value of a Buffer-Local Variable}{10}{10}{3}{166}
\secentry{Frame-Local Variables}{10}{11}{168}
\secentry{Possible Future Local Variables}{10}{12}{169}
\chapentry{Functions}{11}{171}
\secentry{What Is a Function?}{11}{1}{171}
\secentry{Lambda Expressions}{11}{2}{172}
\subsecentry{Components of a Lambda Expression}{11}{2}{1}{173}
\subsecentry{A Simple Lambda-Expression Example}{11}{2}{2}{173}
\subsecentry{Other Features of Argument Lists}{11}{2}{3}{174}
\subsecentry{Documentation Strings of Functions}{11}{2}{4}{175}
\secentry{Naming a Function}{11}{3}{176}
\secentry{Defining Functions}{11}{4}{177}
\secentry{Calling Functions}{11}{5}{179}
\secentry{Mapping Functions}{11}{6}{180}
\secentry{Anonymous Functions}{11}{7}{182}
\secentry{Accessing Function Cell Contents}{11}{8}{183}
\secentry{Inline Functions}{11}{9}{186}
\secentry{Other Topics Related to Functions}{11}{10}{186}
\chapentry{Macros}{12}{189}
\secentry{A Simple Example of a Macro}{12}{1}{189}
\secentry{Expansion of a Macro Call}{12}{2}{189}
\secentry{Macros and Byte Compilation}{12}{3}{190}
\secentry{Defining Macros}{12}{4}{191}
\secentry{Backquote}{12}{5}{192}
\secentry{Common Problems Using Macros}{12}{6}{193}
\subsecentry{Evaluating Macro Arguments Repeatedly}{12}{6}{1}{193}
\subsecentry{Local Variables in Macro Expansions}{12}{6}{2}{195}
\subsecentry{Evaluating Macro Arguments in Expansion}{12}{6}{3}{195}
\subsecentry{How Many Times is the Macro Expanded?}{12}{6}{4}{196}
\chapentry{Writing Customization Definitions}{13}{199}
\secentry{Common Keywords for All Kinds of Items}{13}{1}{199}
\secentry{Defining Custom Groups}{13}{2}{200}
\secentry{Defining Customization Variables}{13}{3}{201}
\secentry{Customization Types}{13}{4}{203}
\subsecentry{Simple Types}{13}{4}{1}{204}
\subsecentry{Composite Types}{13}{4}{2}{205}
\subsecentry{Splicing into Lists}{13}{4}{3}{207}
\subsecentry{Type Keywords}{13}{4}{4}{208}
\chapentry{Loading}{14}{211}
\secentry{How Programs Do Loading}{14}{1}{211}
\secentry{Library Search}{14}{2}{213}
\secentry{Loading Non-ASCII Characters}{14}{3}{215}
\secentry{Autoload}{14}{4}{215}
\secentry{Repeated Loading}{14}{5}{218}
\secentry{Features}{14}{6}{219}
\secentry{Unloading}{14}{7}{221}
\secentry{Hooks for Loading}{14}{8}{222}
\chapentry{Byte Compilation}{15}{223}
\secentry{Performance of Byte-Compiled Code}{15}{1}{223}
\secentry{The Compilation Functions}{15}{2}{224}
\secentry{Documentation Strings and Compilation}{15}{3}{226}
\secentry{Dynamic Loading of Individual Functions}{15}{4}{227}
\secentry{Evaluation During Compilation}{15}{5}{228}
\secentry{Byte-Code Function Objects}{15}{6}{229}
\secentry{Disassembled Byte-Code}{15}{7}{230}
\chapentry{Advising Emacs Lisp Functions}{16}{235}
\secentry{A Simple Advice Example}{16}{1}{235}
\secentry{Defining Advice}{16}{2}{236}
\secentry{Around-Advice}{16}{3}{238}
\secentry{Computed Advice}{16}{4}{239}
\secentry{Activation of Advice}{16}{5}{239}
\secentry{Enabling and Disabling Advice}{16}{6}{241}
\secentry{Preactivation}{16}{7}{242}
\secentry{Argument Access in Advice}{16}{8}{242}
\secentry{Definition of Subr Argument Lists}{16}{9}{244}
\secentry{The Combined Definition}{16}{10}{244}
\chapentry{Debugging Lisp Programs}{17}{247}
\secentry{The Lisp Debugger}{17}{1}{247}
\subsecentry{Entering the Debugger on an Error}{17}{1}{1}{247}
\subsecentry{Debugging Infinite Loops}{17}{1}{2}{249}
\subsecentry{Entering the Debugger on a Function Call}{17}{1}{3}{249}
\subsecentry{Explicit Entry to the Debugger}{17}{1}{4}{250}
\subsecentry{Using the Debugger}{17}{1}{5}{251}
\subsecentry{Debugger Commands}{17}{1}{6}{252}
\subsecentry{Invoking the Debugger}{17}{1}{7}{253}
\subsecentry{Internals of the Debugger}{17}{1}{8}{254}
\secentry{Edebug}{17}{2}{256}
\subsecentry{Using Edebug}{17}{2}{1}{257}
\subsecentry{Instrumenting for Edebug}{17}{2}{2}{258}
\subsecentry{Edebug Execution Modes}{17}{2}{3}{259}
\subsecentry{Jumping}{17}{2}{4}{260}
\subsecentry{Miscellaneous Edebug Commands}{17}{2}{5}{262}
\subsecentry{Breakpoints}{17}{2}{6}{262}
\subsubsecentry{Global Break Condition}{17}{2}{6}{1}{263}
\subsubsecentry{Source Breakpoints}{17}{2}{6}{2}{264}
\subsecentry{Trapping Errors}{17}{2}{7}{264}
\subsecentry{Edebug Views}{17}{2}{8}{264}
\subsecentry{Evaluation}{17}{2}{9}{265}
\subsecentry{Evaluation List Buffer}{17}{2}{10}{266}
\subsecentry{Printing in Edebug}{17}{2}{11}{267}
\subsecentry{Trace Buffer}{17}{2}{12}{268}
\subsecentry{Coverage Testing}{17}{2}{13}{269}
\subsecentry{The Outside Context}{17}{2}{14}{270}
\subsubsecentry{Checking Whether to Stop}{17}{2}{14}{1}{270}
\subsubsecentry{Edebug Display Update}{17}{2}{14}{2}{270}
\subsubsecentry{Edebug Recursive Edit}{17}{2}{14}{3}{271}
\subsecentry{Instrumenting Macro Calls}{17}{2}{15}{272}
\subsubsecentry{Specification List}{17}{2}{15}{1}{273}
\subsubsecentry{Backtracking in Specifications}{17}{2}{15}{2}{276}
\subsubsecentry{Specification Examples}{17}{2}{15}{3}{277}
\subsecentry{Edebug Options}{17}{2}{16}{278}
\secentry{Debugging Invalid Lisp Syntax}{17}{3}{280}
\subsecentry{Excess Open Parentheses}{17}{3}{1}{280}
\subsecentry{Excess Close Parentheses}{17}{3}{2}{281}
\secentry{Debugging Problems in Compilation}{17}{4}{281}
\chapentry{Reading and Printing Lisp Objects}{18}{283}
\secentry{Introduction to Reading and Printing}{18}{1}{283}
\secentry{Input Streams}{18}{2}{284}
\secentry{Input Functions}{18}{3}{286}
\secentry{Output Streams}{18}{4}{287}
\secentry{Output Functions}{18}{5}{289}
\secentry{Variables Affecting Output}{18}{6}{292}
\chapentry{Minibuffers}{19}{295}
\secentry{Introduction to Minibuffers}{19}{1}{295}
\secentry{Reading Text Strings with the Minibuffer}{19}{2}{296}
\secentry{Reading Lisp Objects with the Minibuffer}{19}{3}{298}
\secentry{Minibuffer History}{19}{4}{300}
\secentry{Completion}{19}{5}{301}
\subsecentry{Basic Completion Functions}{19}{5}{1}{302}
\subsecentry{Completion and the Minibuffer}{19}{5}{2}{304}
\subsecentry{Minibuffer Commands That Do Completion}{19}{5}{3}{305}
\subsecentry{High-Level Completion Functions}{19}{5}{4}{307}
\subsecentry{Reading File Names}{19}{5}{5}{309}
\subsecentry{Programmed Completion}{19}{5}{6}{311}
\secentry{Yes-or-No Queries}{19}{6}{312}
\secentry{Asking Multiple Y-or-N Questions}{19}{7}{314}
\secentry{Reading a Password}{19}{8}{315}
\secentry{Minibuffer Miscellany}{19}{9}{316}
\chapentry{Command Loop}{20}{319}
\secentry{Command Loop Overview}{20}{1}{319}
\secentry{Defining Commands}{20}{2}{320}
\subsecentry{Using \code {interactive}}{20}{2}{1}{320}
\subsecentry{Code Characters for \code {interactive}}{20}{2}{2}{322}
\subsecentry{Examples of Using \code {interactive}}{20}{2}{3}{325}
\secentry{Interactive Call}{20}{3}{325}
\secentry{Information from the Command Loop}{20}{4}{328}
\secentry{Input Events}{20}{5}{330}
\subsecentry{Keyboard Events}{20}{5}{1}{330}
\subsecentry{Function Keys}{20}{5}{2}{331}
\subsecentry{Mouse Events}{20}{5}{3}{333}
\subsecentry{Click Events}{20}{5}{4}{333}
\subsecentry{Drag Events}{20}{5}{5}{334}
\subsecentry{Button-Down Events}{20}{5}{6}{335}
\subsecentry{Repeat Events}{20}{5}{7}{335}
\subsecentry{Motion Events}{20}{5}{8}{337}
\subsecentry{Focus Events}{20}{5}{9}{337}
\subsecentry{Miscellaneous Window System Events}{20}{5}{10}{337}
\subsecentry{Event Examples}{20}{5}{11}{338}
\subsecentry{Classifying Events}{20}{5}{12}{339}
\subsecentry{Accessing Events}{20}{5}{13}{341}
\subsecentry{Putting Keyboard Events in Strings}{20}{5}{14}{342}
\secentry{Reading Input}{20}{6}{343}
\subsecentry{Key Sequence Input}{20}{6}{1}{344}
\subsecentry{Reading One Event}{20}{6}{2}{345}
\subsecentry{Quoted Character Input}{20}{6}{3}{347}
\subsecentry{Miscellaneous Event Input Features}{20}{6}{4}{348}
\secentry{Special Events}{20}{7}{349}
\secentry{Waiting for Elapsed Time or Input}{20}{8}{350}
\secentry{Quitting}{20}{9}{351}
\secentry{Prefix Command Arguments}{20}{10}{353}
\secentry{Recursive Editing}{20}{11}{355}
\secentry{Disabling Commands}{20}{12}{357}
\secentry{Command History}{20}{13}{358}
\secentry{Keyboard Macros}{20}{14}{358}
\chapentry{Keymaps}{21}{361}
\secentry{Keymap Terminology}{21}{1}{361}
\secentry{Format of Keymaps}{21}{2}{362}
\secentry{Creating Keymaps}{21}{3}{363}
\secentry{Inheritance and Keymaps}{21}{4}{364}
\secentry{Prefix Keys}{21}{5}{365}
\secentry{Active Keymaps}{21}{6}{367}
\secentry{Key Lookup}{21}{7}{370}
\secentry{Functions for Key Lookup}{21}{8}{372}
\secentry{Changing Key Bindings}{21}{9}{374}
\secentry{Commands for Binding Keys}{21}{10}{378}
\secentry{Scanning Keymaps}{21}{11}{379}
\secentry{Menu Keymaps}{21}{12}{381}
\subsecentry{Defining Menus}{21}{12}{1}{381}
\subsubsecentry{Simple Menu Items}{21}{12}{1}{1}{381}
\subsubsecentry{Extended Menu Items}{21}{12}{1}{2}{382}
\subsubsecentry{Alias Menu Items}{21}{12}{1}{3}{384}
\subsecentry{Menus and the Mouse}{21}{12}{2}{385}
\subsecentry{Menus and the Keyboard}{21}{12}{3}{385}
\subsecentry{Menu Example}{21}{12}{4}{386}
\subsecentry{The Menu Bar}{21}{12}{5}{387}
\subsecentry{Modifying Menus}{21}{12}{6}{388}
\chapentry{Major and Minor Modes}{22}{391}
\secentry{Major Modes}{22}{1}{391}
\subsecentry{Major Mode Conventions}{22}{1}{1}{392}
\subsecentry{Major Mode Examples}{22}{1}{2}{394}
\subsecentry{How Emacs Chooses a Major Mode}{22}{1}{3}{398}
\subsecentry{Getting Help about a Major Mode}{22}{1}{4}{401}
\subsecentry{Defining Derived Modes}{22}{1}{5}{401}
\secentry{Minor Modes}{22}{2}{402}
\subsecentry{Conventions for Writing Minor Modes}{22}{2}{1}{402}
\subsecentry{Keymaps and Minor Modes}{22}{2}{2}{404}
\subsecentry{Easy-Mmode}{22}{2}{3}{404}
\secentry{Mode Line Format}{22}{3}{405}
\subsecentry{The Data Structure of the Mode Line}{22}{3}{1}{406}
\subsecentry{Variables Used in the Mode Line}{22}{3}{2}{408}
\subsecentry{\code {%}-Constructs in the Mode Line}{22}{3}{3}{410}
\secentry{Imenu}{22}{4}{412}
\secentry{Font Lock Mode}{22}{5}{414}
\subsecentry{Font Lock Basics}{22}{5}{1}{414}
\subsecentry{Search-based Fontification}{22}{5}{2}{415}
\subsecentry{Other Font Lock Variables}{22}{5}{3}{417}
\subsecentry{Levels of Font Lock}{22}{5}{4}{418}
\subsecentry{Faces for Font Lock}{22}{5}{5}{419}
\subsecentry{Syntactic Font Lock}{22}{5}{6}{419}
\secentry{Hooks}{22}{6}{420}
\chapentry{Documentation}{23}{423}
\secentry{Documentation Basics}{23}{1}{423}
\secentry{Access to Documentation Strings}{23}{2}{424}
\secentry{Substituting Key Bindings in Documentation}{23}{3}{427}
\secentry{Describing Characters for Help Messages}{23}{4}{428}
\secentry{Help Functions}{23}{5}{429}
\chapentry{Files}{24}{433}
\secentry{Visiting Files}{24}{1}{433}
\subsecentry{Functions for Visiting Files}{24}{1}{1}{433}
\subsecentry{Subroutines of Visiting}{24}{1}{2}{435}
\secentry{Saving Buffers}{24}{2}{436}
\secentry{Reading from Files}{24}{3}{439}
\secentry{Writing to Files}{24}{4}{440}
\secentry{File Locks}{24}{5}{441}
\secentry{Information about Files}{24}{6}{442}
\subsecentry{Testing Accessibility}{24}{6}{1}{443}
\subsecentry{Distinguishing Kinds of Files}{24}{6}{2}{444}
\subsecentry{Truenames}{24}{6}{3}{445}
\subsecentry{Other Information about Files}{24}{6}{4}{446}
\secentry{Changing File Names and Attributes}{24}{7}{448}
\secentry{File Names}{24}{8}{451}
\subsecentry{File Name Components}{24}{8}{1}{451}
\subsecentry{Directory Names}{24}{8}{2}{452}
\subsecentry{Absolute and Relative File Names}{24}{8}{3}{454}
\subsecentry{Functions that Expand Filenames}{24}{8}{4}{454}
\subsecentry{Generating Unique File Names}{24}{8}{5}{456}
\subsecentry{File Name Completion}{24}{8}{6}{457}
\subsecentry{Standard File Names}{24}{8}{7}{458}
\secentry{Contents of Directories}{24}{9}{459}
\secentry{Creating and Deleting Directories}{24}{10}{460}
\secentry{Making Certain File Names ``Magic''}{24}{11}{460}
\secentry{File Format Conversion}{24}{12}{463}
\chapentry{Backups and Auto-Saving}{25}{467}
\secentry{Backup Files}{25}{1}{467}
\subsecentry{Making Backup Files}{25}{1}{1}{467}
\subsecentry{Backup by Renaming or by Copying?}{25}{1}{2}{468}
\subsecentry{Making and Deleting Numbered Backup Files}{25}{1}{3}{469}
\subsecentry{Naming Backup Files}{25}{1}{4}{470}
\secentry{Auto-Saving}{25}{2}{472}
\secentry{Reverting}{25}{3}{475}
\chapentry{Buffers}{26}{479}
\secentry{Buffer Basics}{26}{1}{479}
\secentry{The Current Buffer}{26}{2}{479}
\secentry{Buffer Names}{26}{3}{482}
\secentry{Buffer File Name}{26}{4}{483}
\secentry{Buffer Modification}{26}{5}{485}
\secentry{Comparison of Modification Time}{26}{6}{486}
\secentry{Read-Only Buffers}{26}{7}{487}
\secentry{The Buffer List}{26}{8}{488}
\secentry{Creating Buffers}{26}{9}{490}
\secentry{Killing Buffers}{26}{10}{491}
\secentry{Indirect Buffers}{26}{11}{493}
\chapentry{Windows}{27}{495}
\secentry{Basic Concepts of Emacs Windows}{27}{1}{495}
\secentry{Splitting Windows}{27}{2}{496}
\secentry{Deleting Windows}{27}{3}{499}
\secentry{Selecting Windows}{27}{4}{500}
\secentry{Cyclic Ordering of Windows}{27}{5}{501}
\secentry{Buffers and Windows}{27}{6}{503}
\secentry{Displaying Buffers in Windows}{27}{7}{504}
\secentry{Choosing a Window for Display}{27}{8}{506}
\secentry{Windows and Point}{27}{9}{509}
\secentry{The Window Start Position}{27}{10}{510}
\secentry{Vertical Scrolling}{27}{11}{512}
\secentry{Horizontal Scrolling}{27}{12}{515}
\secentry{The Size of a Window}{27}{13}{516}
\secentry{Changing the Size of a Window}{27}{14}{518}
\secentry{Coordinates and Windows}{27}{15}{520}
\secentry{Window Configurations}{27}{16}{521}
\secentry{Hooks for Window Scrolling and Changes}{27}{17}{523}
\chapentry{Frames}{28}{525}
\secentry{Creating Frames}{28}{1}{525}
\secentry{Multiple Displays}{28}{2}{526}
\secentry{Frame Parameters}{28}{3}{527}
\subsecentry{Access to Frame Parameters}{28}{3}{1}{527}
\subsecentry{Initial Frame Parameters}{28}{3}{2}{527}
\subsecentry{Window Frame Parameters}{28}{3}{3}{528}
\subsecentry{Frame Size And Position}{28}{3}{4}{532}
\secentry{Frame Titles}{28}{4}{534}
\secentry{Deleting Frames}{28}{5}{535}
\secentry{Finding All Frames}{28}{6}{536}
\secentry{Frames and Windows}{28}{7}{536}
\secentry{Minibuffers and Frames}{28}{8}{537}
\secentry{Input Focus}{28}{9}{538}
\secentry{Visibility of Frames}{28}{10}{539}
\secentry{Raising and Lowering Frames}{28}{11}{540}
\secentry{Frame Configurations}{28}{12}{541}
\secentry{Mouse Tracking}{28}{13}{541}
\secentry{Mouse Position}{28}{14}{541}
\secentry{Pop-Up Menus}{28}{15}{542}
\secentry{Dialog Boxes}{28}{16}{543}
\secentry{Pointer Shapes}{28}{17}{544}
\secentry{Window System Selections}{28}{18}{544}
\secentry{Looking up Font Names}{28}{19}{545}
\secentry{Fontsets}{28}{20}{546}
\secentry{Color Names}{28}{21}{547}
\secentry{X Resources}{28}{22}{548}
\secentry{Data about the X Server}{28}{23}{548}
\chapentry{Positions}{29}{551}
\secentry{Point}{29}{1}{551}
\secentry{Motion}{29}{2}{552}
\subsecentry{Motion by Characters}{29}{2}{1}{552}
\subsecentry{Motion by Words}{29}{2}{2}{553}
\subsecentry{Motion to an End of the Buffer}{29}{2}{3}{554}
\subsecentry{Motion by Text Lines}{29}{2}{4}{554}
\subsecentry{Motion by Screen Lines}{29}{2}{5}{556}
\subsecentry{Moving over Balanced Expressions}{29}{2}{6}{558}
\subsecentry{Skipping Characters}{29}{2}{7}{559}
\secentry{Excursions}{29}{3}{560}
\secentry{Narrowing}{29}{4}{561}
\chapentry{Markers}{30}{565}
\secentry{Overview of Markers}{30}{1}{565}
\secentry{Predicates on Markers}{30}{2}{566}
\secentry{Functions That Create Markers}{30}{3}{567}
\secentry{Information from Markers}{30}{4}{568}
\secentry{Marker Insertion Types}{30}{5}{569}
\secentry{Moving Marker Positions}{30}{6}{569}
\secentry{The Mark}{30}{7}{570}
\secentry{The Region}{30}{8}{573}
\chapentry{Text}{31}{575}
\secentry{Examining Text Near Point}{31}{1}{575}
\secentry{Examining Buffer Contents}{31}{2}{576}
\secentry{Comparing Text}{31}{3}{578}
\secentry{Inserting Text}{31}{4}{578}
\secentry{User-Level Insertion Commands}{31}{5}{580}
\secentry{Deleting Text}{31}{6}{582}
\secentry{User-Level Deletion Commands}{31}{7}{583}
\secentry{The Kill Ring}{31}{8}{585}
\subsecentry{Kill Ring Concepts}{31}{8}{1}{586}
\subsecentry{Functions for Killing}{31}{8}{2}{586}
\subsecentry{Functions for Yanking}{31}{8}{3}{587}
\subsecentry{Low-Level Kill Ring}{31}{8}{4}{588}
\subsecentry{Internals of the Kill Ring}{31}{8}{5}{589}
\secentry{Undo}{31}{9}{590}
\secentry{Maintaining Undo Lists}{31}{10}{592}
\secentry{Filling}{31}{11}{593}
\secentry{Margins for Filling}{31}{12}{596}
\secentry{Adaptive Fill Mode}{31}{13}{598}
\secentry{Auto Filling}{31}{14}{598}
\secentry{Sorting Text}{31}{15}{599}
\secentry{Counting Columns}{31}{16}{603}
\secentry{Indentation}{31}{17}{604}
\subsecentry{Indentation Primitives}{31}{17}{1}{604}
\subsecentry{Indentation Controlled by Major Mode}{31}{17}{2}{605}
\subsecentry{Indenting an Entire Region}{31}{17}{3}{606}
\subsecentry{Indentation Relative to Previous Lines}{31}{17}{4}{607}
\subsecentry{Adjustable ``Tab Stops''}{31}{17}{5}{608}
\subsecentry{Indentation-Based Motion Commands}{31}{17}{6}{608}
\secentry{Case Changes}{31}{18}{609}
\secentry{Text Properties}{31}{19}{610}
\subsecentry{Examining Text Properties}{31}{19}{1}{610}
\subsecentry{Changing Text Properties}{31}{19}{2}{611}
\subsecentry{Text Property Search Functions}{31}{19}{3}{613}
\subsecentry{Properties with Special Meanings}{31}{19}{4}{615}
\subsecentry{Formatted Text Properties}{31}{19}{5}{617}
\subsecentry{Stickiness of Text Properties}{31}{19}{6}{618}
\subsecentry{Saving Text Properties in Files}{31}{19}{7}{619}
\subsecentry{Lazy Computation of Text Properties}{31}{19}{8}{620}
\subsecentry{Defining Clickable Text}{31}{19}{9}{621}
\subsecentry{Why Text Properties are not Intervals}{31}{19}{10}{622}
\secentry{Substituting for a Character Code}{31}{20}{623}
\secentry{Registers}{31}{21}{624}
\secentry{Transposition of Text}{31}{22}{625}
\secentry{Change Hooks}{31}{23}{626}
\chapentry{Non-ASCII Characters}{32}{629}
\secentry{Text Representations}{32}{1}{629}
\secentry{Converting Text Representations}{32}{2}{630}
\secentry{Selecting a Representation}{32}{3}{631}
\secentry{Character Codes}{32}{4}{632}
\secentry{Character Sets}{32}{5}{632}
\secentry{Characters and Bytes}{32}{6}{633}
\secentry{Splitting Characters}{32}{7}{633}
\secentry{Scanning for Character Sets}{32}{8}{634}
\secentry{Translation of Characters}{32}{9}{635}
\secentry{Coding Systems}{32}{10}{636}
\subsecentry{Basic Concepts of Coding Systems}{32}{10}{1}{636}
\subsecentry{Encoding and I/O}{32}{10}{2}{637}
\subsecentry{Coding Systems in Lisp}{32}{10}{3}{638}
\subsecentry{User-Chosen Coding Systems}{32}{10}{4}{639}
\subsecentry{Default Coding Systems}{32}{10}{5}{640}
\subsecentry{Specifying a Coding System for One Operation}{32}{10}{6}{642}
\subsecentry{Explicit Encoding and Decoding}{32}{10}{7}{643}
\subsecentry{Terminal I/O Encoding}{32}{10}{8}{644}
\subsecentry{MS-DOS File Types}{32}{10}{9}{644}
\secentry{Input Methods}{32}{11}{645}
\chapentry{Searching and Matching}{33}{647}
\secentry{Searching for Strings}{33}{1}{647}
\secentry{Regular Expressions}{33}{2}{649}
\subsecentry{Syntax of Regular Expressions}{33}{2}{1}{649}
\subsecentry{Complex Regexp Example}{33}{2}{2}{655}
\secentry{Regular Expression Searching}{33}{3}{656}
\secentry{POSIX Regular Expression Searching}{33}{4}{658}
\secentry{Search and Replace}{33}{5}{659}
\secentry{The Match Data}{33}{6}{660}
\subsecentry{Replacing the Text That Matched}{33}{6}{1}{661}
\subsecentry{Simple Match Data Access}{33}{6}{2}{662}
\subsecentry{Accessing the Entire Match Data}{33}{6}{3}{664}
\subsecentry{Saving and Restoring the Match Data}{33}{6}{4}{664}
\secentry{Searching and Case}{33}{7}{665}
\secentry{Standard Regular Expressions Used in Editing}{33}{8}{666}
\chapentry{Syntax Tables}{34}{669}
\secentry{Syntax Table Concepts}{34}{1}{669}
\secentry{Syntax Descriptors}{34}{2}{669}
\subsecentry{Table of Syntax Classes}{34}{2}{1}{670}
\subsecentry{Syntax Flags}{34}{2}{2}{673}
\secentry{Syntax Table Functions}{34}{3}{674}
\secentry{Syntax Properties}{34}{4}{676}
\secentry{Motion and Syntax}{34}{5}{677}
\secentry{Parsing Balanced Expressions}{34}{6}{677}
\secentry{Some Standard Syntax Tables}{34}{7}{679}
\secentry{Syntax Table Internals}{34}{8}{680}
\secentry{Categories}{34}{9}{680}
\chapentry{Abbrevs And Abbrev Expansion}{35}{683}
\secentry{Setting Up Abbrev Mode}{35}{1}{683}
\secentry{Abbrev Tables}{35}{2}{683}
\secentry{Defining Abbrevs}{35}{3}{684}
\secentry{Saving Abbrevs in Files}{35}{4}{685}
\secentry{Looking Up and Expanding Abbreviations}{35}{5}{686}
\secentry{Standard Abbrev Tables}{35}{6}{688}
\chapentry{Processes}{36}{689}
\secentry{Functions that Create Subprocesses}{36}{1}{689}
\secentry{Shell Arguments}{36}{2}{690}
\secentry{Creating a Synchronous Process}{36}{3}{691}
\secentry{Creating an Asynchronous Process}{36}{4}{694}
\secentry{Deleting Processes}{36}{5}{696}
\secentry{Process Information}{36}{6}{697}
\secentry{Sending Input to Processes}{36}{7}{699}
\secentry{Sending Signals to Processes}{36}{8}{700}
\secentry{Receiving Output from Processes}{36}{9}{702}
\subsecentry{Process Buffers}{36}{9}{1}{702}
\subsecentry{Process Filter Functions}{36}{9}{2}{703}
\subsecentry{Accepting Output from Processes}{36}{9}{3}{705}
\secentry{Sentinels: Detecting Process Status Changes}{36}{10}{706}
\secentry{Transaction Queues}{36}{11}{708}
\secentry{Network Connections}{36}{12}{708}
\chapentry{Operating System Interface}{37}{711}
\secentry{Starting Up Emacs}{37}{1}{711}
\subsecentry{Summary: Sequence of Actions at Start Up}{37}{1}{1}{711}
\subsecentry{The Init File: \file {.emacs}}{37}{1}{2}{712}
\subsecentry{Terminal-Specific Initialization}{37}{1}{3}{713}
\subsecentry{Command Line Arguments}{37}{1}{4}{714}
\secentry{Getting Out of Emacs}{37}{2}{716}
\subsecentry{Killing Emacs}{37}{2}{1}{716}
\subsecentry{Suspending Emacs}{37}{2}{2}{717}
\secentry{Operating System Environment}{37}{3}{718}
\secentry{User Identification}{37}{4}{722}
\secentry{Time of Day}{37}{5}{723}
\secentry{Time Conversion}{37}{6}{724}
\secentry{Timers for Delayed Execution}{37}{7}{727}
\secentry{Terminal Input}{37}{8}{729}
\subsecentry{Input Modes}{37}{8}{1}{729}
\subsecentry{Translating Input Events}{37}{8}{2}{730}
\subsecentry{Recording Input}{37}{8}{3}{733}
\secentry{Terminal Output}{37}{9}{734}
\secentry{System-Specific X11 Keysyms}{37}{10}{735}
\secentry{Flow Control}{37}{11}{736}
\secentry{Batch Mode}{37}{12}{737}
\chapentry{Emacs Display}{38}{739}
\secentry{Refreshing the Screen}{38}{1}{739}
\secentry{Truncation}{38}{2}{739}
\secentry{The Echo Area}{38}{3}{740}
\secentry{Invisible Text}{38}{4}{742}
\secentry{Selective Display}{38}{5}{744}
\secentry{The Overlay Arrow}{38}{6}{746}
\secentry{Temporary Displays}{38}{7}{746}
\secentry{Overlays}{38}{8}{748}
\subsecentry{Overlay Properties}{38}{8}{1}{749}
\subsecentry{Managing Overlays}{38}{8}{2}{751}
\secentry{Width}{38}{9}{753}
\secentry{Faces}{38}{10}{753}
\subsecentry{Standard Faces}{38}{10}{1}{754}
\subsecentry{Defining Faces}{38}{10}{2}{754}
\subsecentry{Merging Faces for Display}{38}{10}{3}{756}
\subsecentry{Functions for Working with Faces}{38}{10}{4}{756}
\secentry{Blinking Parentheses}{38}{11}{759}
\secentry{Inverse Video}{38}{12}{760}
\secentry{Usual Display Conventions}{38}{13}{760}
\secentry{Display Tables}{38}{14}{762}
\subsecentry{Display Table Format}{38}{14}{1}{762}
\subsecentry{Active Display Table}{38}{14}{2}{763}
\subsecentry{Glyphs}{38}{14}{3}{764}
\secentry{Beeping}{38}{15}{764}
\secentry{Window Systems}{38}{16}{765}
\chapentry{Customizing the Calendar and Diary}{39}{767}
\secentry{Customizing the Calendar}{39}{1}{767}
\secentry{Customizing the Holidays}{39}{2}{768}
\secentry{Date Display Format}{39}{3}{770}
\secentry{Time Display Format}{39}{4}{771}
\secentry{Daylight Savings Time}{39}{5}{771}
\secentry{Customizing the Diary}{39}{6}{772}
\secentry{Hebrew- and Islamic-Date Diary Entries}{39}{7}{774}
\secentry{Fancy Diary Display}{39}{8}{775}
\secentry{Sexp Entries and the Fancy Diary Display}{39}{9}{776}
\secentry{Customizing Appointment Reminders}{39}{10}{779}
\chapentry{Tips and Conventions}{Appendix{} \char 65}{781}
\secentry{Emacs Lisp Coding Conventions}{\char 65}{1}{781}
\secentry{Tips for Making Compiled Code Fast}{\char 65}{2}{785}
\secentry{Tips for Documentation Strings}{\char 65}{3}{786}
\secentry{Tips on Writing Comments}{\char 65}{4}{788}
\secentry{Conventional Headers for Emacs Libraries}{\char 65}{5}{790}
\chapentry{GNU Emacs Internals}{Appendix{} \char 66}{793}
\secentry{Building Emacs}{\char 66}{1}{793}
\secentry{Pure Storage}{\char 66}{2}{794}
\secentry{Garbage Collection}{\char 66}{3}{795}
\secentry{Memory Usage}{\char 66}{4}{798}
\secentry{Writing Emacs Primitives}{\char 66}{5}{799}
\secentry{Object Internals}{\char 66}{6}{803}
\subsecentry{Buffer Internals}{\char 66}{6}{1}{804}
\subsecentry{Window Internals}{\char 66}{6}{2}{806}
\subsecentry{Process Internals}{\char 66}{6}{3}{807}
\chapentry{Standard Errors}{Appendix{} \char 67}{809}
\chapentry{Buffer-Local Variables}{Appendix{} \char 68}{813}
\chapentry{Standard Keymaps}{Appendix{} \char 69}{817}
\chapentry{Standard Hooks}{Appendix{} \char 70}{821}
\unnumbchapentry{New Symbols Since the Previous Edition}{825}
