eintr: Complete zap-to-char

 
 The Complete ‘zap-to-char’ Implementation
 -----------------------------------------
 
 The ‘zap-to-char’ function removes the text in the region between the
 location of the cursor (i.e., of point) up to and including the next
 occurrence of a specified character.  The text that ‘zap-to-char’
 removes is put in the kill ring; and it can be retrieved from the kill
 ring by typing ‘C-y’ (‘yank’).  If the command is given an argument, it
 removes text through that number of occurrences.  Thus, if the cursor
 were at the beginning of this sentence and the character were ‘s’,
 ‘Thus’ would be removed.  If the argument were two, ‘Thus, if the curs’
 would be removed, up to and including the ‘s’ in ‘cursor’.
 
    If the specified character is not found, ‘zap-to-char’ will say
 “Search failed”, tell you the character you typed, and not remove any
 text.
 
    In order to determine how much text to remove, ‘zap-to-char’ uses a
 search function.  Searches are used extensively in code that manipulates
 text, and we will focus attention on them as well as on the deletion
 command.
 
    Here is the complete text of the version 22 implementation of the
 function:
 
      (defun zap-to-char (arg char)
        "Kill up to and including ARG'th occurrence of CHAR.
      Case is ignored if `case-fold-search' is non-nil in the current buffer.
      Goes backward if ARG is negative; error if CHAR not found."
        (interactive "p\ncZap to char: ")
        (if (char-table-p translation-table-for-input)
            (setq char (or (aref translation-table-for-input char) char)))
        (kill-region (point) (progn
                               (search-forward (char-to-string char)
                                               nil nil arg)
                               (point))))
 
    The documentation is thorough.  You do need to know the jargon
 meaning of the word “kill”.
 
    The version 22 documentation string for ‘zap-to-char’ uses ASCII
 grave accent and apostrophe to quote a symbol, so it appears as
 `case-fold-search'.  This quoting style was inspired by 1970s-era
 displays in which grave accent and apostrophe were often mirror images
 suitable for use as quotes.  On most modern displays this is no longer
 true, and when these two ASCII characters appear in documentation
 strings or diagnostic message formats, Emacs typically transliterates
 them to “curved quotes” (left and right single quotation marks), so that
 the abovequoted symbol appears as ‘case-fold-search’.  Source-code
 strings can also simply use curved quotes directly.