anchor.diff:  handle_info(#wx{event = #wxClose{}}, #state{win = #main_window{window = Window}} = State) ->
   	wxWindow:destroy(Window),
   	{stop, normal, State};
  -handle_info(#wx{event = #wxKey{} = KeyEvent}, State) ->
  -	{noreply, handle_key(KeyEvent, State)};
  +handle_info(#wx{event = #wxKey{} = KeyEvent}, #state{blink_caret = BlinkCaret0} = State) ->
  +	BlinkCaret1 = blink_caret_reset(BlinkCaret0),
  +	{noreply, handle_key(KeyEvent, State#state{blink_caret = BlinkCaret1})};
   handle_info(#ee_pubsub_message{message = {document_inserted, DocPid}}, #state{win = #main_window{window = Window}, doc_set = DocSet0} = State) ->
   	{ok, DocSet1} = ee_doc_set:add_focus_document_view(DocSet0, DocPid),
   	ee_buffer_server:add_subscriber(DocPid, self()),
  
positive.code: 	{ok, DocSet1} = ee_doc_set:update_document_view_buffer(DocSet0, DocPid, Buffer),
  	wxFrame:refresh(Window),
  	{noreply, State#state{doc_set = DocSet1}};
  handle_info(timeout, State) ->
  	wx:new(),
  	ee_document_sup:open_document("readme"),
  	{noreply, State#state{win = create_window()}};
  handle_info(Msg, _State) ->
  	erlang:error({bad_info, Msg}).
  
  
negative.code: -include("ee_pubsub.hrl").
  
  -record(main_window, {window, status_bar}).
  -record(blink_caret, {state = on, timer}).
  -record(state, {win = #main_window{}, doc_set = #ee_doc_set{}, blink_caret = #blink_caret{}}).
  
  -define(BLINK_INTERVAL, 300).
  
  %% ===================================================================
  %% API
  