GNU Info

Info Node: (emacs-lisp-intro.info)Complete copy-region-as-kill

(emacs-lisp-intro.info)Complete copy-region-as-kill


Next: copy-region-as-kill body Prev: copy-region-as-kill Up: copy-region-as-kill
Enter node , (file) or (file)node

The complete `copy-region-as-kill' function definition
------------------------------------------------------

   Here is the complete text of the version 21 `copy-region-as-kill'
function:

     (defun copy-region-as-kill (beg end)
       "Save the region as if killed, but don't kill it.
     In Transient Mark mode, deactivate the mark.
     If `interprogram-cut-function' is non-nil, also save
     the text for a window system cut and paste."
       (interactive "r")
       (if (eq last-command 'kill-region)
           (kill-append (buffer-substring beg end) (< end beg))
         (kill-new (buffer-substring beg end)))
       (if transient-mark-mode
           (setq deactivate-mark t))
       nil)

   As usual, this function can be divided into its component parts:

     (defun copy-region-as-kill (ARGUMENT-LIST)
       "DOCUMENTATION..."
       (interactive "r")
       BODY...)

   The arguments are `beg' and `end' and the function is interactive
with `"r"', so the two arguments must refer to the beginning and end of
the region.  If you have been reading though this document from the
beginning, understanding these parts of a function is almost becoming
routine.

   The documentation is somewhat confusing unless you remember that the
word `kill' has a meaning different from its usual meaning.  The
`Transient Mark' and `interprogram-cut-function' comments explain
certain side-effects.

   After you once set a mark, a buffer always contains a region.  If you
wish, you can use Transient Mark mode to highlight the region
temporarily.  (No one wants to highlight the region all the time, so
Transient Mark mode highlights it only at appropriate times.  Many
people turn off Transient Mark mode, so the region is never
highlighted.)

   Also, a windowing system allows you to copy, cut, and paste among
different programs.  In the X windowing system, for example, the
`interprogram-cut-function' function is `x-select-text', which works
with the windowing system's equivalent of the Emacs kill ring.

   The body of the `copy-region-as-kill' function starts with an `if'
clause.  What this clause does is distinguish between two different
situations: whether or not this command is executed immediately after a
previous `kill-region' command.  In the first case, the new region is
appended to the previously copied text.  Otherwise, it is inserted into
the beginning of the kill ring as a separate piece of text from the
previous piece.

   The last two lines of the function prevent the region from lighting
up if Transient Mark mode is turned on.

   The body of `copy-region-as-kill' merits discussion in detail.


automatically generated by info2www version 1.2.2.9