DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(readline.info.gz) A Readline Example

Info Catalog (readline.info.gz) Alternate Interface (readline.info.gz) Readline Convenience Functions
 
 2.4.13 A Readline Example
 -------------------------
 
 Here is a function which changes lowercase characters to their uppercase
 equivalents, and uppercase characters to lowercase.  If this function
 was bound to `M-c', then typing `M-c' would change the case of the
 character under point.  Typing `M-1 0 M-c' would change the case of the
 following 10 characters, leaving the cursor on the last character
 changed.
 
      /* Invert the case of the COUNT following characters. */
      int
      invert_case_line (count, key)
           int count, key;
      {
        register int start, end, i;
 
        start = rl_point;
 
        if (rl_point >= rl_end)
          return (0);
 
        if (count < 0)
          {
            direction = -1;
            count = -count;
          }
        else
          direction = 1;
 
        /* Find the end of the range to modify. */
        end = start + (count * direction);
 
        /* Force it to be within range. */
        if (end > rl_end)
          end = rl_end;
        else if (end < 0)
          end = 0;
 
        if (start == end)
          return (0);
 
        if (start > end)
          {
            int temp = start;
            start = end;
            end = temp;
          }
 
        /* Tell readline that we are modifying the line,
           so it will save the undo information. */
        rl_modifying (start, end);
 
        for (i = start; i != end; i++)
          {
            if (_rl_uppercase_p (rl_line_buffer[i]))
              rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
            else if (_rl_lowercase_p (rl_line_buffer[i]))
              rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
          }
        /* Move point to on top of the last character changed. */
        rl_point = (direction == 1) ? end - 1 : start;
        return (0);
      }
 
Info Catalog (readline.info.gz) Alternate Interface (readline.info.gz) Readline Convenience Functions
automatically generated byinfo2html