Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)last-command & this-command`last-command' and `this-command' ................................. Normally, whenever a function is executed, Emacs sets the value of `this-command' to the function being executed (which in this case would be `copy-region-as-kill'). At the same time, Emacs sets the value of `last-command' to the previous value of `this-command'. In the first part of the body of the `copy-region-as-kill' function, an `if' expression determines whether the value of `last-command' is `kill-region'. If so, the then-part of the `if' expression is evaluated; it uses the `kill-append' function to concatenate the text copied at this call to the function with the text already in the first element (the CAR) of the kill ring. On the other hand, if the value of `last-command' is not `kill-region', then the `copy-region-as-kill' function attaches a new element to the kill ring using the `kill-new' function. The `if' expression reads as follows; it uses `eq', which is a function we have not yet seen: (if (eq last-command 'kill-region) ;; then-part (kill-append (buffer-substring beg end) (< end beg)) ;; else-part (kill-new (buffer-substring beg end))) The `eq' function tests whether its first argument is the same Lisp object as its second argument. The `eq' function is similar to the `equal' function in that it is used to test for equality, but differs in that it determines whether two representations are actually the same object inside the computer, but with different names. `equal' determines whether the structure and contents of two expressions are the same. If the previous command was `kill-region', then the Emacs Lisp interpreter calls the `kill-append' function automatically generated by info2www version 1.2.2.9 |