eintr: append-to-buffer body

 
 4.4.2 The Body of ‘append-to-buffer’
 ------------------------------------
 
 The body of the ‘append-to-buffer’ function begins with ‘let’.
 
    As we have seen before (See‘let’ let.), the purpose of a ‘let’
 expression is to create and give initial values to one or more variables
 that will only be used within the body of the ‘let’.  This means that
 such a variable will not be confused with any variable of the same name
 outside the ‘let’ expression.
 
    We can see how the ‘let’ expression fits into the function as a whole
 by showing a template for ‘append-to-buffer’ with the ‘let’ expression
 in outline:
 
      (defun append-to-buffer (buffer start end)
        "DOCUMENTATION..."
        (interactive ...)
        (let ((VARIABLE VALUE))
              BODY...)
 
    The ‘let’ expression has three elements:
 
   1. The symbol ‘let’;
 
   2. A varlist containing, in this case, a single two-element list,
      ‘(VARIABLE VALUE)’;
 
   3. The body of the ‘let’ expression.
 
    In the ‘append-to-buffer’ function, the varlist looks like this:
 
      (oldbuf (current-buffer))
 
 In this part of the ‘let’ expression, the one variable, ‘oldbuf’, is
 bound to the value returned by the ‘(current-buffer)’ expression.  The
 variable, ‘oldbuf’, is used to keep track of the buffer in which you are
 working and from which you will copy.
 
    The element or elements of a varlist are surrounded by a set of
 parentheses so the Lisp interpreter can distinguish the varlist from the
 body of the ‘let’.  As a consequence, the two-element list within the
 varlist is surrounded by a circumscribing set of parentheses.  The line
 looks like this:
 
      (let ((oldbuf (current-buffer)))
        ... )
 
 The two parentheses before ‘oldbuf’ might surprise you if you did not
 realize that the first parenthesis before ‘oldbuf’ marks the boundary of
 the varlist and the second parenthesis marks the beginning of the
 two-element list, ‘(oldbuf (current-buffer))’.