    
    prompt: -> @readline.prompt()
    
-   
    start: ->
-      #process.title = 'paws.js: interact'
+      process.title = 'paws.js (interact)'
       @here.start()
       
       shortcircuit = undefined # ???
       @readline.on 'line', (line)=>
          return shortcircuit = false if shortcircuit # ???
          return @readline.prompt() unless line.length
+         @readline.write @readline.clear_style
          
          # FIXME: Input during the processing is currently all processed immediately after a prompt
          #        is next shown. This is rather icky when the user ^C's a ton, and then externally

      SIGTERM = =>
         @here.stop()
         @readline.write "\x1b[2K\x1b[0G" # Zero cursor.
         process.stdin.destroy()
      @readline.on 'close', SIGTERM
      process.on 'SIGTERM', SIGTERM
      
      t = Paws.debugging.tput
      Paws.alert "Successive lines will be evaluated as executions, with shared `locals`."
      Paws.alert "   (#{t.bold '⌃d'} to close the input-stream; "+
                     "#{t.bold '⌃c'} to synchronously force new prompt)"
      @prompt()
   
   

      @prompt()
   .rename '<interact: resume prompt>'
   
   
   # --- ---- --- /!\ --- ---- --- #
   
   # This is all a huge, fragile, horrible, monkey-patching hack.
   hackReadline: ->
      exportz = readline
      
      _refreshLine = @readline._refreshLine
      @readline._refreshLine = =>
         [clearScreenDown, exportz.clearScreenDown] = [exportz.clearScreenDown, haxClearScreenDown]
         _refreshLine.apply @readline
         exportz.clearScreenDown = clearScreenDown
      
      # This ensures our custom line-styles get applied every time the line is refreshed
      haxClearScreenDown = (stream)=>
         stream.write '\x1b[0J'
         stream.write T.column_address(0)
         stream.write T.sgr(7)+(new Array(T.columns+1).join ' ')
         stream.write T.column_address(0)
         stream.write @readline.line_style
      
      _ttyWrite = @readline._ttyWrite
      # These replace the usual behavior of pausing the input-stream (which means all input while
      # paused is buffered, and will eventually be dumped back out), and simply *ignores* all input
      # until unpaused. No buffering.
      @readline.pause = ->
         return if @paused
         @_ttyWrite = haxTtyWrite
         @paused = true
         @emit 'pause'
         return this
      
      @readline.resume = ->
         return unless @paused
         @_ttyWrite = _ttyWrite
         @paused = false
         @emit 'resume'
         return this
      
      haxTtyWrite = (s, key)->
         if key.ctrl
            switch key.name
               when 'c' then @emit 'SIGINT'     # ^c (interrupt)
               when 'd' then @close             # ^d (EOF)
               when 'z'                         # ^z (process backgrounding)
                  return if process.platform == 'win32'
                  @emit 'SIGTSTP'
