code: def _handle_input_request(self, msg):
          
          if self._hidden:
              raise RuntimeError('Request for raw input during hidden execution.')
  
          # Make sure that all output from the SUB channel has been processed
          # before entering readline mode.
          self.kernel_client.iopub_channel.flush()
  
          def callback(line):
              # Save history to browse it later
              if not (len(self._control.history) > 0
                      and self._control.history[-1] == line):
                  # do not save pdb commands
                  cmd = line.split(" ")[0]
                  if "do_" + cmd not in dir(pdb.Pdb):
                      self._control.history.append(line)
  
              # This is the Spyder addition: add a %plot magic to display
              # plots while debugging
              if line.startswith('%plot '):
                  line = line.split()[-1]
                  code = "__spy_code__ = get_ipython().run_cell('%s')" % line
                  self.kernel_client.input(code)
              else:
                  self.kernel_client.input(line)
          if self._reading:
              self._reading = False
          self._readline(msg['content']['prompt'], callback=callback,
                         password=msg['content']['password'])
docs: Save history and add a %plot magic.