119: How do I handle C-s and C-q being used for flow control?

  C-s and C-q are used in the XON/XOFF flow control protocol.  This messes
  things up when you're using Emacs, because Emacs binds these keys to
  commands by default.  Because Emacs won't honor them as flow control
  characters, too many of these characters are not passed on and overwhelm
  output buffers.  Sometimes, intermediate software using XON/XOFF flow
  control will prevent Emacs from ever seeing C-s and C-q.

  Possible solutions:

  * Disable the use of C-s and C-q for flow control.

    You need to determine the cause of the flow control.

    * your terminal

      Your terminal may use XON/XOFF flow control to have time to display
      all the characters it receives.  For example, VT series terminals do
      this.  It may be possible to turn this off from a setup menu.  For
      example, on a VT220 you may select "No XOFF" in the setup menu.  This
      is also true for some terminal emulation programs on PCs.

      When you turn off flow control at the terminal, you will also need to
      turn it off at the other end, which might be at the computer you are
      logged in to or at some terminal server in between.

      If you turn off flow control, characters may be lost; using a printer
      connected to the terminal may fail.  You may be able to get around
      this problem by modifying the "termcap" entry for your terminal to
      include extra NUL padding characters.

    * a modem

      If you are using a dialup connection, the modems may be using
      XON/XOFF flow control.  It's not clear how to get around this.

    * a router or terminal server

      Some network box between the terminal and your computer may be using
      XON/XOFF flow control.  It may be possible to make it use some other
      kind of flow control.  You will probably have to ask your local
      network experts for help with this.

    * tty and/or pty devices

      If your connection to Emacs goes through multiple tty and/or pty
      devices, they may be using XON/XOFF flow control even when it is not
      necessary.

      Eirik Fuller <eirik@theory.tn.cornell.edu> writes:

        Some versions of "rlogin" (and possibly telnet) do not pass flow
        control characters to the remote system to which they connect.  On
        such systems, Emacs on the remote system cannot disable flow
        control on the local system.  Sometimes "rlogin -8" will avoid this
        problem.

        One way to cure this is to disable flow control on the local host
        (the one running rlogin, not the one running rlogind) using the
        stty command, before starting the rlogin process.  On many systems,
        "stty start u stop u" will do this.

        Some versions of "tcsh" will prevent even this from working.  One
        way around this is to start another shell before starting rlogin,
        and issue the stty command to disable flow control from that shell.

      Use "stty -ixon" instead of "stty start u stop u" on some systems.

  * Make Emacs speak the XON/XOFF flow control protocol.

    You can make Emacs treat C-s and C-q as flow control characters by
    evaluating the form

      (enable-flow-control)

    to unconditionally enable flow control or

      (enable-flow-control-on "vt100" "h19")

    (using your terminal names instead of "vt100" or "h19") to enable
    selectively.  These commands will automatically swap `C-s' and `C-q' to
    `C-\' and `C-^'.  Variables can be used to change the default swap keys
    ("flow-control-c-s-replacement" and "flow-control-c-q-replacement").

    If you are fixing this for yourself, simply put the form in your .emacs
    file.  If you are fixing this for your entire site, the best place to
    put it is in the lisp/site-start.el file.  Putting this form in
    lisp/default.el has the problem that if the user's .emacs file has an
    error, this will prevent lisp/default.el from being loaded and Emacs
    may be unusable for the user, even for correcting their .emacs file
    (unless they're smart enough to move it to another name).

    For further discussion of this issue, read the file PROBLEMS (in the
    top-level directory when you unpack the Emacs source).