docs: def cmdloop(self, intro=None):
          ''' Override the command loop to handle Ctrl-C. '''
          self.preloop()
  
          # Set up completion with readline.
          if self.use_rawinput and self.completekey:
              try:
                  import readline
                  self.old_completer = readline.get_completer()
                  readline.set_completer(self.complete)
                  readline.parse_and_bind(self.completekey + ': complete')
              except ImportError:
                  pass
  
          try:
              if intro is not None:
                  self.intro = intro
              if self.intro:
                  self.stdout.write(str(self.intro)+"\n")
              stop = None
              while not stop:
                  if self.cmdqueue:
                      line = self.cmdqueue.pop(0)
                  else:
                      if self.use_rawinput:
                          try:
                              if sys.version_info[0] == 2:
                                  line = raw_input(self.prompt)
                              else:
                                  line = input(self.prompt)
                          except EOFError:
                              line = 'EOF'
                          except KeyboardInterrupt:
                              line = 'ctrlc'
                      else:
                          self.stdout.write(self.prompt)
                          self.stdout.flush()
                          line = self.stdin.readline()
                          if not len(line):
                              line = 'EOF'
                          else:
                              line = line.rstrip('\r\n')
                  line = self.precmd(line)
                  stop = self.onecmd(line)
                  stop = self.postcmd(stop, line)
              self.postloop()
          finally:
              if self.use_rawinput and self.completekey:
                  try:
                      import readline
                      readline.set_completer(self.old_completer)
                  except ImportError:
                      pass