Skip to content

Instantly share code, notes, and snippets.

@Cogitri
Created June 5, 2019 21:39
Show Gist options
  • Save Cogitri/1c117455b09c33e3bd8ded8ce83733b9 to your computer and use it in GitHub Desktop.
Save Cogitri/1c117455b09c33e3bd8ded8ce83733b9 to your computer and use it in GitHub Desktop.
log
This file has been truncated, but you can view the full file.
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::builder] build; num-workers=8
[2019-06-05T21:37:16Z TRACE tokio_threadpool::builder] build; num-workers=8
[2019-06-05T21:37:16Z DEBUG gxi] Starting gxi
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=client_started, params={}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=client_started, params=Object({}))
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::sender] execute; count=1
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::sender] execute; count=1
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- spawn; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- spawn; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] shutdown; state=pool::State { lifecycle: Running, num_futures: 1 }
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> transitioned to shutdown
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] shutdown; state=pool::State { lifecycle: Running, num_futures: 1 }
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> transitioned to shutdown
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::builder] build; num-workers=8
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::sender] execute; count=1
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- spawn; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] shutdown; state=pool::State { lifecycle: Running, num_futures: 1 }
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> transitioned to shutdown
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z DEBUG tokio_reactor] adding I/O source: 0
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z DEBUG tokio_reactor] adding I/O source: 0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x561870594230
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- spawn; idx=6
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "client_started", params: Object({}) }
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "client_started", params: Object({}) })
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"client_started","params":{}}
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=40
[2019-06-05T21:37:16Z DEBUG tokio_reactor] adding I/O source: 4194305
[2019-06-05T21:37:16Z TRACE mio::poll] registering with poller
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Write for: 1
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- spawn; idx=6
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
xi-core stderr: [2019-06-05][23:37:16][xi_core][INFO] Logging with fern is set up
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
xi-core stderr: [2019-06-05][23:37:16][xi_core][INFO] Writing logs to: /home/rasmus/.local/share/xi-core/xi-core.log
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=40
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x56187076bf10
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> task complete
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] task complete; state=pool::State { lifecycle: ShutdownNow, num_futures: 0 }
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> shutting down workers
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] shutting down thread; idx=7
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=modify_user_config, params={"changes":{"autodetect_whitespace":true,"font_face":"Source Code Pro Medium","font_size":12.0,"line_ending":"\n","tab_size":4,"translate_tabs_to_spaces":false,"use_tab_stops":true,"word_wrap":false},"domain":"general"}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=modify_user_config, params=Object({"changes": Object({"autodetect_whitespace": Bool(true), "font_face": String("Source Code Pro Medium"), "font_size": Number(12.0), "line_ending": String("\n"), "tab_size": Number(4), "translate_tabs_to_spaces": Bool(false), "use_tab_stops": Bool(true), "word_wrap": Bool(false)}), "domain": String("general")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"available_languages","params":{"languages":[]}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "available_languages", params: Object({"languages": Array([])}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=available_languages, params={"languages":[]}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"available_themes","params":{"themes":["InspiredGitHub","Solarized (dark)","Solarized (light)","base16-eighties.dark","base16-mocha.dark","base16-ocean.dark","base16-ocean.light"]}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "available_themes", params: Object({"themes": Array([String("InspiredGitHub"), String("Solarized (dark)"), String("Solarized (light)"), String("base16-eighties.dark"), String("base16-mocha.dark"), String("base16-ocean.dark"), String("base16-ocean.light")])}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=available_themes, params={"themes":["InspiredGitHub","Solarized (dark)","Solarized (light)","base16-eighties.dark","base16-mocha.dark","base16-ocean.dark","base16-ocean.light"]}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "modify_user_config", params: Object({"changes": Object({"autodetect_whitespace": Bool(true), "font_face": String("Source Code Pro Medium"), "font_size": Number(12.0), "line_ending": String("\n"), "tab_size": Number(4), "translate_tabs_to_spaces": Bool(false), "use_tab_stops": Bool(true), "word_wrap": Bool(false)}), "domain": String("general")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "modify_user_config", params: Object({"changes": Object({"autodetect_whitespace": Bool(true), "font_face": String("Source Code Pro Medium"), "font_size": Number(12.0), "line_ending": String("\n"), "tab_size": Number(4), "translate_tabs_to_spaces": Bool(false), "use_tab_stops": Bool(true), "word_wrap": Bool(false)}), "domain": String("general")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"modify_user_config","params":{"changes":{"autodetect_whitespace":true,"font_face":"Source Code Pro Medium","font_size":12.0,"line_ending":"\n","tab_size":4,"translate_tabs_to_spaces":false,"use_tab_stops":true,"word_wrap":false},"domain":"general"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=261
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z DEBUG gxi::main_win] Theme name: InspiredGitHub
[2019-06-05T21:37:16Z DEBUG gxi::main_win] Showing main window
[2019-06-05T21:37:16Z DEBUG gxi] Opening new file
[2019-06-05T21:37:16Z INFO xrl::client] >>> request : method=new_view, params={"file_path":"/home/rasmus/Projects/gxi/src/editview/src/edit_view.rs"}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding request to endpoint (method=new_view, params=Object({"file_path": String("/home/rasmus/Projects/gxi/src/editview/src/edit_view.rs")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending request: Request { id: 0, method: "new_view", params: Object({"file_path": String("/home/rasmus/Projects/gxi/src/editview/src/edit_view.rs")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Request(Request { id: 1, method: "new_view", params: Object({"file_path": String("/home/rasmus/Projects/gxi/src/editview/src/edit_view.rs")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"id":1,"method":"new_view","params":{"file_path":"/home/rasmus/Projects/gxi/src/editview/src/edit_view.rs"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=110
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"id":1,"result":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Response(Response { id: 1, result: Ok(String("view-id-1")) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding response to the client.
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"available_plugins","params":{"plugins":[],"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE gxi::main_win] Creating new EditView
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z INFO gxi::main_win] Couldn't get current EditView. This may only mean that you don't have an editing tab open right now.
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "available_plugins", params: Object({"plugins": Array([]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z TRACE editview::edit_view] Creating new EditView, 'view-id-1'
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=available_plugins, params={"plugins":[],"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"config_changed","params":{"changes":{"auto_indent":true,"autodetect_whitespace":true,"font_face":"Source Code Pro Medium","font_size":12.0,"line_ending":"\n","plugin_search_path":[],"save_with_newline":true,"scroll_past_end":false,"surrounding_pairs":[["\"","\""],["'","'"],["{","}"],["[","]"]],"tab_size":4,"translate_tabs_to_spaces":true,"use_tab_stops":true,"word_wrap":false,"wrap_width":0},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "config_changed", params: Object({"changes": Object({"auto_indent": Bool(true), "autodetect_whitespace": Bool(true), "font_face": String("Source Code Pro Medium"), "font_size": Number(12.0), "line_ending": String("\n"), "plugin_search_path": Array([]), "save_with_newline": Bool(true), "scroll_past_end": Bool(false), "surrounding_pairs": Array([Array([String("\""), String("\"")]), Array([String("\'"), String("\'")]), Array([String("{"), String("}")]), Array([String("["), String("]")])]), "tab_size": Number(4), "translate_tabs_to_spaces": Bool(true), "use_tab_stops": Bool(true), "word_wrap": Bool(false), "wrap_width": Number(0)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=config_changed, params={"changes":{"auto_indent":true,"autodetect_whitespace":true,"font_face":"Source Code Pro Medium","font_size":12.0,"line_ending":"\n","plugin_search_path":[],"save_with_newline":true,"scroll_past_end":false,"surrounding_pairs":[["\"","\""],["'","'"],["{","}"],["[","]"]],"tab_size":4,"translate_tabs_to_spaces":true,"use_tab_stops":true,"word_wrap":false,"wrap_width":0},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"language_changed","params":{"language_id":"","view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "language_changed", params: Object({"language_id": String(""), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=language_changed, params={"language_id":"","view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"lines":[{"cursor":[0],"ln":1,"styles":[],"text":"use crate::fonts::Font;\n"},{"ln":2,"styles":[],"text":"use crate::main_state::{MainState, Settings};\n"},{"ln":3,"styles":[],"text":"use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n"},{"ln":4,"styles":[],"text":"use crate::view_item::*;\n"},{"ln":5,"styles":[],"text":"use cairo::Context;\n"},{"ln":6,"styles":[],"text":"use futures::future;\n"},{"ln":7,"styles":[],"text":"use gdk::enums::key;\n"},{"ln":8,"styles":[],"text":"use gdk::*;\n"},{"ln":9,"styles":[],"text":"use gettextrs::gettext;\n"},{"ln":10,"styles":[],"text":"use glib::source;\n"},{"ln":11,"styles":[],"text":"use gtk::{self, *};\n"},{"ln":12,"styles":[],"text":"use log::{debug, trace, warn};\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":217,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(1), "payloads": Null, "ranges": Array([Array([Number(0), Number(0), Number(0), Number(0)])]), "type": String("selection")})]), "ops": Array([Object({"lines": Array([Object({"cursor": Array([Number(0)]), "ln": Number(1), "styles": Array([]), "text": String("use crate::fonts::Font;\n")}), Object({"ln": Number(2), "styles": Array([]), "text": String("use crate::main_state::{MainState, Settings};\n")}), Object({"ln": Number(3), "styles": Array([]), "text": String("use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n")}), Object({"ln": Number(4), "styles": Array([]), "text": String("use crate::view_item::*;\n")}), Object({"ln": Number(5), "styles": Array([]), "text": String("use cairo::Context;\n")}), Object({"ln": Number(6), "styles": Array([]), "text": String("use futures::future;\n")}), Object({"ln": Number(7), "styles": Array([]), "text": String("use gdk::enums::key;\n")}), Object({"ln": Number(8), "styles": Array([]), "text": String("use gdk::*;\n")}), Object({"ln": Number(9), "styles": Array([]), "text": String("use gettextrs::gettext;\n")}), Object({"ln": Number(10), "styles": Array([]), "text": String("use glib::source;\n")}), Object({"ln": Number(11), "styles": Array([]), "text": String("use gtk::{self, *};\n")}), Object({"ln": Number(12), "styles": Array([]), "text": String("use log::{debug, trace, warn};\n")})]), "n": Number(12), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(217), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"lines":[{"cursor":[0],"ln":1,"styles":[],"text":"use crate::fonts::Font;\n"},{"ln":2,"styles":[],"text":"use crate::main_state::{MainState, Settings};\n"},{"ln":3,"styles":[],"text":"use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n"},{"ln":4,"styles":[],"text":"use crate::view_item::*;\n"},{"ln":5,"styles":[],"text":"use cairo::Context;\n"},{"ln":6,"styles":[],"text":"use futures::future;\n"},{"ln":7,"styles":[],"text":"use gdk::enums::key;\n"},{"ln":8,"styles":[],"text":"use gdk::*;\n"},{"ln":9,"styles":[],"text":"use gettextrs::gettext;\n"},{"ln":10,"styles":[],"text":"use glib::source;\n"},{"ln":11,"styles":[],"text":"use gtk::{self, *};\n"},{"ln":12,"styles":[],"text":"use log::{debug, trace, warn};\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":217,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z DEBUG editview::fonts] Pango font size: Rectangle { x: 0, y: 0, width: 8192, height: 19456 }
[2019-06-05T21:37:16Z DEBUG editview::fonts] Font metrics: 8 19 15 4
[2019-06-05T21:37:16Z DEBUG editview::fonts] Pango font size: Rectangle { x: 0, y: 0, width: 10240, height: 21504 }
[2019-06-05T21:37:16Z DEBUG editview::fonts] Font metrics: 10 21 16 5
[2019-06-05T21:37:16Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:16Z TRACE editview::view_item] view-id-1 'Connecting events of EditView'
[2019-06-05T21:37:16Z TRACE editview::view_item] Connecting FindReplace events for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: AvailableLanguages(AvailableLanguages { languages: [] })
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z DEBUG gxi::main_win] Handling 'available_languages' AvailableLanguages { languages: [] }
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"scroll_to","params":{"col":0,"line":0,"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: AvailableThemes(AvailableThemes { themes: ["InspiredGitHub", "Solarized (dark)", "Solarized (light)", "base16-eighties.dark", "base16-mocha.dark", "base16-ocean.dark", "base16-ocean.light"] })
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "scroll_to", params: Object({"col": Number(0), "line": Number(0), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=set_theme, params={"theme_name":"InspiredGitHub"}
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=scroll_to, params={"col":0,"line":0,"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=set_theme, params=Object({"theme_name": String("InspiredGitHub")}))
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: AvailablePlugins(AvailablePlugins { view_id: ViewId(1), plugins: [] })
[2019-06-05T21:37:16Z ERROR gxi::errors] Couldn't find syntect plugin, functionality will be limited! Only found the following plugins: []
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "set_theme", params: Object({"theme_name": String("InspiredGitHub")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "set_theme", params: Object({"theme_name": String("InspiredGitHub")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"set_theme","params":{"theme_name":"InspiredGitHub"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=64
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"theme_changed","params":{"name":"InspiredGitHub","theme":{"accent":null,"active_guide":{"a":255,"b":179,"g":179,"r":179},"background":{"a":255,"b":255,"g":255,"r":255},"bracket_contents_foreground":{"a":255,"b":92,"g":163,"r":99},"bracket_contents_options":"Underline","brackets_background":null,"brackets_foreground":{"a":255,"b":92,"g":163,"r":99},"brackets_options":"Underline","caret":{"a":255,"b":50,"g":50,"r":50},"find_highlight":{"a":255,"b":199,"g":238,"r":248},"find_highlight_foreground":{"a":255,"b":50,"g":50,"r":50},"foreground":{"a":255,"b":50,"g":50,"r":50},"guide":{"a":255,"b":232,"g":232,"r":232},"gutter":{"a":255,"b":255,"g":255,"r":255},"gutter_foreground":{"a":255,"b":179,"g":179,"r":179},"highlight":null,"highlight_foreground":null,"inactive_selection":null,"inactive_selection_foreground":null,"line_highlight":{"a":255,"b":245,"g":245,"r":245},"minimap_border":null,"misspelling":null,"phantom_css":null,"popup_css":null,"selection":{"a":255,"b":199,"g":238,"r":248},"selection_background":null,"selection_border":{"a":255,"b":255,"g":255,"r":255},"selection_foreground":null,"shadow":null,"stack_guide":{"a":255,"b":232,"g":232,"r":232},"tags_foreground":{"a":255,"b":92,"g":163,"r":99},"tags_options":"Underline"}}}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "theme_changed", params: Object({"name": String("InspiredGitHub"), "theme": Object({"accent": Null, "active_guide": Object({"a": Number(255), "b": Number(179), "g": Number(179), "r": Number(179)}), "background": Object({"a": Number(255), "b": Number(255), "g": Number(255), "r": Number(255)}), "bracket_contents_foreground": Object({"a": Number(255), "b": Number(92), "g": Number(163), "r": Number(99)}), "bracket_contents_options": String("Underline"), "brackets_background": Null, "brackets_foreground": Object({"a": Number(255), "b": Number(92), "g": Number(163), "r": Number(99)}), "brackets_options": String("Underline"), "caret": Object({"a": Number(255), "b": Number(50), "g": Number(50), "r": Number(50)}), "find_highlight": Object({"a": Number(255), "b": Number(199), "g": Number(238), "r": Number(248)}), "find_highlight_foreground": Object({"a": Number(255), "b": Number(50), "g": Number(50), "r": Number(50)}), "foreground": Object({"a": Number(255), "b": Number(50), "g": Number(50), "r": Number(50)}), "guide": Object({"a": Number(255), "b": Number(232), "g": Number(232), "r": Number(232)}), "gutter": Object({"a": Number(255), "b": Number(255), "g": Number(255), "r": Number(255)}), "gutter_foreground": Object({"a": Number(255), "b": Number(179), "g": Number(179), "r": Number(179)}), "highlight": Null, "highlight_foreground": Null, "inactive_selection": Null, "inactive_selection_foreground": Null, "line_highlight": Object({"a": Number(255), "b": Number(245), "g": Number(245), "r": Number(245)}), "minimap_border": Null, "misspelling": Null, "phantom_css": Null, "popup_css": Null, "selection": Object({"a": Number(255), "b": Number(199), "g": Number(238), "r": Number(248)}), "selection_background": Null, "selection_border": Object({"a": Number(255), "b": Number(255), "g": Number(255), "r": Number(255)}), "selection_foreground": Null, "shadow": Null, "stack_guide": Object({"a": Number(255), "b": Number(232), "g": Number(232), "r": Number(232)}), "tags_foreground": Object({"a": Number(255), "b": Number(92), "g": Number(163), "r": Number(99)}), "tags_options": String("Underline")})}) })
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: ConfigChanged(ConfigChanged { view_id: ViewId(1), changes: ConfigChanges { font_face: Some("Source Code Pro Medium"), font_size: Some(12.0), line_ending: Some("\n"), plugin_search_path: Some([]), tab_size: Some(4), translate_tabs_to_spaces: Some(true) } })
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'config_changed' for EditView 'view-id-1': ConfigChanges { font_face: Some("Source Code Pro Medium"), font_size: Some(12.0), line_ending: Some("\n"), plugin_search_path: Some([]), tab_size: Some(4), translate_tabs_to_spaces: Some(true) }
[2019-06-05T21:37:16Z DEBUG editview::fonts] Pango font size: Rectangle { x: 0, y: 0, width: 10240, height: 21504 }
[2019-06-05T21:37:16Z DEBUG editview::fonts] Font metrics: 10 21 16 5
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Setting edit font to: Source Code Pro Medium
[2019-06-05T21:37:16Z DEBUG editview::fonts] Pango font size: Rectangle { x: 0, y: 0, width: 10240, height: 21504 }
[2019-06-05T21:37:16Z DEBUG editview::fonts] Font metrics: 10 21 16 5
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=theme_changed, params={"name":"InspiredGitHub","theme":{"accent":null,"active_guide":{"a":255,"b":179,"g":179,"r":179},"background":{"a":255,"b":255,"g":255,"r":255},"bracket_contents_foreground":{"a":255,"b":92,"g":163,"r":99},"bracket_contents_options":"Underline","brackets_background":null,"brackets_foreground":{"a":255,"b":92,"g":163,"r":99},"brackets_options":"Underline","caret":{"a":255,"b":50,"g":50,"r":50},"find_highlight":{"a":255,"b":199,"g":238,"r":248},"find_highlight_foreground":{"a":255,"b":50,"g":50,"r":50},"foreground":{"a":255,"b":50,"g":50,"r":50},"guide":{"a":255,"b":232,"g":232,"r":232},"gutter":{"a":255,"b":255,"g":255,"r":255},"gutter_foreground":{"a":255,"b":179,"g":179,"r":179},"highlight":null,"highlight_foreground":null,"inactive_selection":null,"inactive_selection_foreground":null,"line_highlight":{"a":255,"b":245,"g":245,"r":245},"minimap_border":null,"misspelling":null,"phantom_css":null,"popup_css":null,"selection":{"a":255,"b":199,"g":238,"r":248},"selection_background":null,"selection_border":{"a":255,"b":255,"g":255,"r":255},"selection_foreground":null,"shadow":null,"stack_guide":{"a":255,"b":232,"g":232,"r":232},"tags_foreground":{"a":255,"b":92,"g":163,"r":99},"tags_options":"Underline"}}
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: LanguageChanged(LanguageChanged { view_id: ViewId(1), language_id: "" })
[2019-06-05T21:37:16Z DEBUG gxi::main_win] Handling 'language_changed' LanguageChanged { view_id: ViewId(1), language_id: "" }
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Language has been changed to '""'
[2019-06-05T21:37:16Z WARN editview::edit_view] Couldn't determine what position the following language is in: 'Plain Text'
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"lines":[{"cursor":[0],"ln":1,"styles":[],"text":"use crate::fonts::Font;\n"},{"ln":2,"styles":[],"text":"use crate::main_state::{MainState, Settings};\n"},{"ln":3,"styles":[],"text":"use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n"},{"ln":4,"styles":[],"text":"use crate::view_item::*;\n"},{"ln":5,"styles":[],"text":"use cairo::Context;\n"},{"ln":6,"styles":[],"text":"use futures::future;\n"},{"ln":7,"styles":[],"text":"use gdk::enums::key;\n"},{"ln":8,"styles":[],"text":"use gdk::*;\n"},{"ln":9,"styles":[],"text":"use gettextrs::gettext;\n"},{"ln":10,"styles":[],"text":"use glib::source;\n"},{"ln":11,"styles":[],"text":"use gtk::{self, *};\n"},{"ln":12,"styles":[],"text":"use log::{debug, trace, warn};\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":217,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:16Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [], old_invalid_before: 0, old_invalid_after: 0, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:16Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }]
[2019-06-05T21:37:16Z INFO xrl::cache] inserting 12 lines
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(1), "payloads": Null, "ranges": Array([Array([Number(0), Number(0), Number(0), Number(0)])]), "type": String("selection")})]), "ops": Array([Object({"lines": Array([Object({"cursor": Array([Number(0)]), "ln": Number(1), "styles": Array([]), "text": String("use crate::fonts::Font;\n")}), Object({"ln": Number(2), "styles": Array([]), "text": String("use crate::main_state::{MainState, Settings};\n")}), Object({"ln": Number(3), "styles": Array([]), "text": String("use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n")}), Object({"ln": Number(4), "styles": Array([]), "text": String("use crate::view_item::*;\n")}), Object({"ln": Number(5), "styles": Array([]), "text": String("use cairo::Context;\n")}), Object({"ln": Number(6), "styles": Array([]), "text": String("use futures::future;\n")}), Object({"ln": Number(7), "styles": Array([]), "text": String("use gdk::enums::key;\n")}), Object({"ln": Number(8), "styles": Array([]), "text": String("use gdk::*;\n")}), Object({"ln": Number(9), "styles": Array([]), "text": String("use gettextrs::gettext;\n")}), Object({"ln": Number(10), "styles": Array([]), "text": String("use glib::source;\n")}), Object({"ln": Number(11), "styles": Array([]), "text": String("use gtk::{self, *};\n")}), Object({"ln": Number(12), "styles": Array([]), "text": String("use log::{debug, trace, warn};\n")})]), "n": Number(12), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(217), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 217 lines
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: ScrollTo(ScrollTo { line: 0, column: 0, view_id: ViewId(1) })
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling 'scroll_to' ScrollTo { line: 0, column: 0, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'scroll_to' for EditView 'view-id-1': l: 0 c: 0
[2019-06-05T21:37:16Z TRACE editview::edit_view] Horizontal scrolling to min: 0; max: 0
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"lines":[{"cursor":[0],"ln":1,"styles":[],"text":"use crate::fonts::Font;\n"},{"ln":2,"styles":[],"text":"use crate::main_state::{MainState, Settings};\n"},{"ln":3,"styles":[],"text":"use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n"},{"ln":4,"styles":[],"text":"use crate::view_item::*;\n"},{"ln":5,"styles":[],"text":"use cairo::Context;\n"},{"ln":6,"styles":[],"text":"use futures::future;\n"},{"ln":7,"styles":[],"text":"use gdk::enums::key;\n"},{"ln":8,"styles":[],"text":"use gdk::*;\n"},{"ln":9,"styles":[],"text":"use gettextrs::gettext;\n"},{"ln":10,"styles":[],"text":"use glib::source;\n"},{"ln":11,"styles":[],"text":"use gtk::{self, *};\n"},{"ln":12,"styles":[],"text":"use log::{debug, trace, warn};\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":217,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: ThemeChanged(ThemeChanged { name: "InspiredGitHub", theme: ThemeSettings { foreground: Some(Color { r: 50, g: 50, b: 50, a: 255 }), background: Some(Color { r: 255, g: 255, b: 255, a: 255 }), caret: Some(Color { r: 50, g: 50, b: 50, a: 255 }), line_highlight: Some(Color { r: 245, g: 245, b: 245, a: 255 }), misspelling: None, minimap_border: None, accent: None, popup_css: None, phantom_css: None, bracket_contents_foreground: Some(Color { r: 99, g: 163, b: 92, a: 255 }), bracket_contents_options: Some(Underline), brackets_foreground: Some(Color { r: 99, g: 163, b: 92, a: 255 }), brackets_background: None, brackets_options: Some(Underline), tags_foreground: Some(Color { r: 99, g: 163, b: 92, a: 255 }), tags_options: Some(Underline), highlight: None, find_highlight: Some(Color { r: 248, g: 238, b: 199, a: 255 }), find_highlight_foreground: Some(Color { r: 50, g: 50, b: 50, a: 255 }), gutter: Some(Color { r: 255, g: 255, b: 255, a: 255 }), gutter_foreground: Some(Color { r: 179, g: 179, b: 179, a: 255 }), selection: Some(Color { r: 248, g: 238, b: 199, a: 255 }), selection_foreground: None, selection_background: None, selection_border: Some(Color { r: 255, g: 255, b: 255, a: 255 }), inactive_selection: None, inactive_selection_foreground: None, guide: Some(Color { r: 232, g: 232, b: 232, a: 255 }), active_guide: Some(Color { r: 179, g: 179, b: 179, a: 255 }), stack_guide: Some(Color { r: 232, g: 232, b: 232, a: 255 }), highlight_foreground: None, shadow: None } })
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }], old_invalid_before: 0, old_invalid_after: 1215, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:16Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: "use crate::fonts::Font;\n", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};\n", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};\n", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;\n", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;\n", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;\n", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;\n", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;\n", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;\n", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;\n", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};\n", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};\n", cursor: [], styles: [], line_num: Some(12) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 217, lines: [] }]
[2019-06-05T21:37:16Z INFO xrl::cache] inserting 12 lines
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 217 lines
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:16Z DEBUG editview::view_item] Size changed to: width=2096 height=1043
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Allocating DrawingArea size: Width: 2096, Height: 1043
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Updating visible scroll region 0 50
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,50],"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(50)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE editview::edit_view] Resizing EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=edit, params={"method":"resize","params":{"height":1043,"width":2096},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("resize"), "params": Object({"height": Number(1043), "width": Number(2096)}), "view_id": String("view-id-1")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(50)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(50)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,50],"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(1043), "width": Number(2096)}), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(1043), "width": Number(2096)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"resize","params":{"height":1043,"width":2096},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=192
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"ln":1,"n":12,"op":"copy"},{"lines":[{"ln":13,"styles":[],"text":"use pango::{self, ContextExt, LayoutExt, *};\n"},{"ln":14,"styles":[],"text":"use pangocairo::functions::*;\n"},{"ln":15,"styles":[],"text":"use std::cell::RefCell;\n"},{"ln":16,"styles":[],"text":"use std::cmp::{max, min};\n"},{"ln":17,"styles":[],"text":"use std::rc::Rc;\n"},{"ln":18,"styles":[],"text":"use std::u32;\n"},{"ln":19,"styles":[],"text":"use xrl::StyleDef as StyleSpan;\n"},{"ln":20,"styles":[],"text":"use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n"},{"ln":21,"styles":[],"text":"\n"},{"ln":22,"styles":[],"text":"/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n"},{"ln":23,"styles":[],"text":"pub struct TextSize {\n"},{"ln":24,"styles":[],"text":" /// The height of the entire document\n"},{"ln":25,"styles":[],"text":" height: f64,\n"},{"ln":26,"styles":[],"text":" /// The width of the entire document\n"},{"ln":27,"styles":[],"text":" width: f64,\n"},{"ln":28,"styles":[],"text":" /// If the height of the document is contained within the edit_area (if it's smaller)\n"},{"ln":29,"styles":[],"text":" contained_height: bool,\n"},{"ln":30,"styles":[],"text":" /// If the width of the document is contained within the edit_area (if it's smaller)\n"},{"ln":31,"styles":[],"text":" contained_width: bool,\n"},{"ln":32,"styles":[],"text":"}\n"},{"ln":33,"styles":[],"text":"\n"},{"ln":34,"styles":[],"text":"/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n"},{"ln":35,"styles":[],"text":"pub struct EditView {\n"},{"ln":36,"styles":[],"text":" core: Client,\n"},{"ln":37,"styles":[],"text":" main_state: Rc<RefCell<MainState>>,\n"},{"ln":38,"styles":[],"text":" pub view_id: ViewId,\n"},{"ln":39,"styles":[],"text":" pub file_name: Option<String>,\n"},{"ln":40,"styles":[],"text":" pub pristine: bool,\n"},{"ln":41,"styles":[],"text":" pub root_widget: Grid,\n"},{"ln":42,"styles":[],"text":" pub top_bar: TopBar,\n"},{"ln":43,"styles":[],"text":" pub view_item: ViewItem,\n"},{"ln":44,"styles":[],"text":" line_cache: LineCache,\n"},{"ln":45,"styles":[],"text":" pub(crate) find_replace: FindReplace,\n"},{"ln":46,"styles":[],"text":" edit_font: Font,\n"},{"ln":47,"styles":[],"text":" interface_font: Font,\n"},{"ln":48,"styles":[],"text":" im_context: IMContextSimple,\n"},{"ln":49,"styles":[],"text":"}\n"},{"ln":50,"styles":[],"text":"\n"},{"ln":51,"styles":[],"text":"impl EditView {\n"},{"ln":52,"styles":[],"text":" /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n"}],"n":40,"op":"ins"},{"n":998,"op":"invalidate"},{"n":177,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(1), "payloads": Null, "ranges": Array([Array([Number(0), Number(0), Number(0), Number(0)])]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(12), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(13), "styles": Array([]), "text": String("use pango::{self, ContextExt, LayoutExt, *};\n")}), Object({"ln": Number(14), "styles": Array([]), "text": String("use pangocairo::functions::*;\n")}), Object({"ln": Number(15), "styles": Array([]), "text": String("use std::cell::RefCell;\n")}), Object({"ln": Number(16), "styles": Array([]), "text": String("use std::cmp::{max, min};\n")}), Object({"ln": Number(17), "styles": Array([]), "text": String("use std::rc::Rc;\n")}), Object({"ln": Number(18), "styles": Array([]), "text": String("use std::u32;\n")}), Object({"ln": Number(19), "styles": Array([]), "text": String("use xrl::StyleDef as StyleSpan;\n")}), Object({"ln": Number(20), "styles": Array([]), "text": String("use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n")}), Object({"ln": Number(21), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(22), "styles": Array([]), "text": String("/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n")}), Object({"ln": Number(23), "styles": Array([]), "text": String("pub struct TextSize {\n")}), Object({"ln": Number(24), "styles": Array([]), "text": String(" /// The height of the entire document\n")}), Object({"ln": Number(25), "styles": Array([]), "text": String(" height: f64,\n")}), Object({"ln": Number(26), "styles": Array([]), "text": String(" /// The width of the entire document\n")}), Object({"ln": Number(27), "styles": Array([]), "text": String(" width: f64,\n")}), Object({"ln": Number(28), "styles": Array([]), "text": String(" /// If the height of the document is contained within the edit_area (if it\'s smaller)\n")}), Object({"ln": Number(29), "styles": Array([]), "text": String(" contained_height: bool,\n")}), Object({"ln": Number(30), "styles": Array([]), "text": String(" /// If the width of the document is contained within the edit_area (if it\'s smaller)\n")}), Object({"ln": Number(31), "styles": Array([]), "text": String(" contained_width: bool,\n")}), Object({"ln": Number(32), "styles": Array([]), "text": String("}\n")}), Object({"ln": Number(33), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(34), "styles": Array([]), "text": String("/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n")}), Object({"ln": Number(35), "styles": Array([]), "text": String("pub struct EditView {\n")}), Object({"ln": Number(36), "styles": Array([]), "text": String(" core: Client,\n")}), Object({"ln": Number(37), "styles": Array([]), "text": String(" main_state: Rc<RefCell<MainState>>,\n")}), Object({"ln": Number(38), "styles": Array([]), "text": String(" pub view_id: ViewId,\n")}), Object({"ln": Number(39), "styles": Array([]), "text": String(" pub file_name: Option<String>,\n")}), Object({"ln": Number(40), "styles": Array([]), "text": String(" pub pristine: bool,\n")}), Object({"ln": Number(41), "styles": Array([]), "text": String(" pub root_widget: Grid,\n")}), Object({"ln": Number(42), "styles": Array([]), "text": String(" pub top_bar: TopBar,\n")}), Object({"ln": Number(43), "styles": Array([]), "text": String(" pub view_item: ViewItem,\n")}), Object({"ln": Number(44), "styles": Array([]), "text": String(" line_cache: LineCache,\n")}), Object({"ln": Number(45), "styles": Array([]), "text": String(" pub(crate) find_replace: FindReplace,\n")}), Object({"ln": Number(46), "styles": Array([]), "text": String(" edit_font: Font,\n")}), Object({"ln": Number(47), "styles": Array([]), "text": String(" interface_font: Font,\n")}), Object({"ln": Number(48), "styles": Array([]), "text": String(" im_context: IMContextSimple,\n")}), Object({"ln": Number(49), "styles": Array([]), "text": String("}\n")}), Object({"ln": Number(50), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(51), "styles": Array([]), "text": String("impl EditView {\n")}), Object({"ln": Number(52), "styles": Array([]), "text": String(" /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n")})]), "n": Number(40), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(177), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":1,"payloads":null,"ranges":[[0,0,0,0]],"type":"selection"}],"ops":[{"ln":1,"n":12,"op":"copy"},{"lines":[{"ln":13,"styles":[],"text":"use pango::{self, ContextExt, LayoutExt, *};\n"},{"ln":14,"styles":[],"text":"use pangocairo::functions::*;\n"},{"ln":15,"styles":[],"text":"use std::cell::RefCell;\n"},{"ln":16,"styles":[],"text":"use std::cmp::{max, min};\n"},{"ln":17,"styles":[],"text":"use std::rc::Rc;\n"},{"ln":18,"styles":[],"text":"use std::u32;\n"},{"ln":19,"styles":[],"text":"use xrl::StyleDef as StyleSpan;\n"},{"ln":20,"styles":[],"text":"use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n"},{"ln":21,"styles":[],"text":"\n"},{"ln":22,"styles":[],"text":"/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n"},{"ln":23,"styles":[],"text":"pub struct TextSize {\n"},{"ln":24,"styles":[],"text":" /// The height of the entire document\n"},{"ln":25,"styles":[],"text":" height: f64,\n"},{"ln":26,"styles":[],"text":" /// The width of the entire document\n"},{"ln":27,"styles":[],"text":" width: f64,\n"},{"ln":28,"styles":[],"text":" /// If the height of the document is contained within the edit_area (if it's smaller)\n"},{"ln":29,"styles":[],"text":" contained_height: bool,\n"},{"ln":30,"styles":[],"text":" /// If the width of the document is contained within the edit_area (if it's smaller)\n"},{"ln":31,"styles":[],"text":" contained_width: bool,\n"},{"ln":32,"styles":[],"text":"}\n"},{"ln":33,"styles":[],"text":"\n"},{"ln":34,"styles":[],"text":"/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n"},{"ln":35,"styles":[],"text":"pub struct EditView {\n"},{"ln":36,"styles":[],"text":" core: Client,\n"},{"ln":37,"styles":[],"text":" main_state: Rc<RefCell<MainState>>,\n"},{"ln":38,"styles":[],"text":" pub view_id: ViewId,\n"},{"ln":39,"styles":[],"text":" pub file_name: Option<String>,\n"},{"ln":40,"styles":[],"text":" pub pristine: bool,\n"},{"ln":41,"styles":[],"text":" pub root_widget: Grid,\n"},{"ln":42,"styles":[],"text":" pub top_bar: TopBar,\n"},{"ln":43,"styles":[],"text":" pub view_item: ViewItem,\n"},{"ln":44,"styles":[],"text":" line_cache: LineCache,\n"},{"ln":45,"styles":[],"text":" pub(crate) find_replace: FindReplace,\n"},{"ln":46,"styles":[],"text":" edit_font: Font,\n"},{"ln":47,"styles":[],"text":" interface_font: Font,\n"},{"ln":48,"styles":[],"text":" im_context: IMContextSimple,\n"},{"ln":49,"styles":[],"text":"}\n"},{"ln":50,"styles":[],"text":"\n"},{"ln":51,"styles":[],"text":"impl EditView {\n"},{"ln":52,"styles":[],"text":" /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n"}],"n":40,"op":"ins"},{"n":998,"op":"invalidate"},{"n":177,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 12, lines: [] }, Operation { operation_type: Insert, nb_lines: 40, lines: [Line { text: "use pango::{self, ContextExt, LayoutExt, *};\n", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;\n", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;\n", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};\n", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;\n", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;\n", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;\n", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n", cursor: [], styles: [], line_num: Some(20) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {\n", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document\n", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,\n", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document\n", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,\n", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,\n", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,\n", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(32) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {\n", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,\n", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,\n", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,\n", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,\n", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,\n", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,\n", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,\n", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,\n", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,\n", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,\n", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(49) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n", cursor: [], styles: [], line_num: Some(52) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 177, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:16Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 12, lines: [] }, Operation { operation_type: Insert, nb_lines: 40, lines: [Line { text: "use pango::{self, ContextExt, LayoutExt, *};\n", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;\n", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;\n", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};\n", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;\n", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;\n", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;\n", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n", cursor: [], styles: [], line_num: Some(20) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {\n", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document\n", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,\n", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document\n", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,\n", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,\n", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,\n", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(32) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {\n", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,\n", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,\n", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,\n", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,\n", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,\n", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,\n", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,\n", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,\n", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,\n", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,\n", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(49) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n", cursor: [], styles: [], line_num: Some(52) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 177, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 12, lines: [] }, Operation { operation_type: Insert, nb_lines: 40, lines: [Line { text: "use pango::{self, ContextExt, LayoutExt, *};\n", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;\n", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;\n", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};\n", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;\n", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;\n", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;\n", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n", cursor: [], styles: [], line_num: Some(20) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {\n", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document\n", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,\n", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document\n", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,\n", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,\n", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,\n", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(32) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {\n", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,\n", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,\n", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,\n", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,\n", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,\n", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,\n", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,\n", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,\n", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,\n", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,\n", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(49) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n", cursor: [], styles: [], line_num: Some(52) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 177, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:16Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:16Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }], old_invalid_before: 0, old_invalid_after: 1215, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:16Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 12, lines: [] }, Operation { operation_type: Insert, nb_lines: 40, lines: [Line { text: "use pango::{self, ContextExt, LayoutExt, *};\n", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;\n", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;\n", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};\n", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;\n", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;\n", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;\n", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};\n", cursor: [], styles: [], line_num: Some(20) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.\n", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {\n", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document\n", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,\n", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document\n", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,\n", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,\n", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)\n", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,\n", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(32) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.\n", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {\n", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,\n", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,\n", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,\n", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,\n", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,\n", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,\n", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,\n", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,\n", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,\n", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,\n", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(49) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,\n", cursor: [], styles: [], line_num: Some(52) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 177, lines: [] }]
[2019-06-05T21:37:16Z INFO xrl::cache] copying 12 lines
[2019-06-05T21:37:16Z INFO xrl::cache] inserting 40 lines
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:16Z INFO xrl::cache] invalidating 177 lines
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:16Z DEBUG editview::view_item] Size changed to: width=1996 height=991
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Allocating DrawingArea size: Width: 1996, Height: 991
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:16Z DEBUG editview::edit_view] Updating visible scroll region 0 48
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,48],"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE editview::edit_view] Resizing EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:16Z INFO xrl::client] >>> notification: method=edit, params={"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}))
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:16Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,48],"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:16Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:16Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}}
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=191
[2019-06-05T21:37:16Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:16Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:16Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:16Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:16Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:16Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:16Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:16Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:16Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:17Z DEBUG editview::view_item] Size changed to: width=1996 height=991
[2019-06-05T21:37:17Z DEBUG editview::edit_view] Allocating DrawingArea size: Width: 1996, Height: 991
[2019-06-05T21:37:17Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:17Z DEBUG editview::edit_view] Updating visible scroll region 0 48
[2019-06-05T21:37:17Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,48],"view_id":"view-id-1"}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:17Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:17Z TRACE editview::edit_view] Resizing EditView 'view-id-1'
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:17Z INFO xrl::client] >>> notification: method=edit, params={"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}))
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:17Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:17Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:17Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:17Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:17Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,48],"view_id":"view-id-1"}}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:17Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:17Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=191
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:17Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:17Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:17Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:17Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:17Z DEBUG editview::view_item] Size changed to: width=1996 height=991
[2019-06-05T21:37:17Z DEBUG editview::edit_view] Allocating DrawingArea size: Width: 1996, Height: 991
[2019-06-05T21:37:17Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:17Z DEBUG editview::edit_view] Updating visible scroll region 0 48
[2019-06-05T21:37:17Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,48],"view_id":"view-id-1"}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:17Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:17Z TRACE editview::edit_view] Resizing EditView 'view-id-1'
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:17Z INFO xrl::client] >>> notification: method=edit, params={"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}))
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:17Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:17Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:17Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:17Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:17Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:17Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,48],"view_id":"view-id-1"}}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:17Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1996)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:17Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"resize","params":{"height":991,"width":1996},"view_id":"view-id-1"}}
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=191
[2019-06-05T21:37:17Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:17Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:17Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:17Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:17Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:17Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:17Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:17Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 0/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:17Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 0 48
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,48],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,48],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=85
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 0 48
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[0,48],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(0), Number(48)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[0,48],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=85
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 121.69627733521568/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 5 53
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[5,53],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(5), Number(53)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(5), Number(53)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(5), Number(53)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[5,53],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=85
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":3,"op":"copy"},{"ln":4,"n":49,"op":"copy"},{"lines":[{"ln":53,"styles":[],"text":" /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n"},{"ln":54,"styles":[],"text":" pub fn new(\n"},{"ln":55,"styles":[],"text":" main_state: &Rc<RefCell<MainState>>,\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":174,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 228.2562017669667/25772; horizontal adjustment: 0/2096
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(3), "op": String("copy")}), Object({"ln": Number(4), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(53), "styles": Array([]), "text": String(" /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n")}), Object({"ln": Number(54), "styles": Array([]), "text": String(" pub fn new(\n")}), Object({"ln": Number(55), "styles": Array([]), "text": String(" main_state: &Rc<RefCell<MainState>>,\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(174), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":3,"op":"copy"},{"ln":4,"n":49,"op":"copy"},{"lines":[{"ln":53,"styles":[],"text":" /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n"},{"ln":54,"styles":[],"text":" pub fn new(\n"},{"ln":55,"styles":[],"text":" main_state: &Rc<RefCell<MainState>>,\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":174,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 3, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(\n", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(55) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 174, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 3, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(\n", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(55) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 174, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 3, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(\n", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(55) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 174, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }], old_invalid_before: 0, old_invalid_after: 1175, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 3, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)\n", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(\n", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,\n", cursor: [], styles: [], line_num: Some(55) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 174, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 174 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 10 59
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[10,59],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(10), Number(59)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(10), Number(59)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(10), Number(59)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[10,59],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":8,"op":"copy"},{"ln":9,"n":47,"op":"copy"},{"lines":[{"ln":56,"styles":[],"text":" core: &Client,\n"},{"ln":57,"styles":[],"text":" // The FindReplace dialog is relative to this\n"},{"ln":58,"styles":[],"text":" hamburger_button: &MenuButton,\n"},{"ln":59,"styles":[],"text":" file_name: Option<String>,\n"},{"ln":60,"styles":[],"text":" view_id: ViewId,\n"},{"ln":61,"styles":[],"text":" parent: &ApplicationWindow,\n"}],"n":6,"op":"ins"},{"n":998,"op":"invalidate"},{"n":168,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(8), "op": String("copy")}), Object({"ln": Number(9), "n": Number(47), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(56), "styles": Array([]), "text": String(" core: &Client,\n")}), Object({"ln": Number(57), "styles": Array([]), "text": String(" // The FindReplace dialog is relative to this\n")}), Object({"ln": Number(58), "styles": Array([]), "text": String(" hamburger_button: &MenuButton,\n")}), Object({"ln": Number(59), "styles": Array([]), "text": String(" file_name: Option<String>,\n")}), Object({"ln": Number(60), "styles": Array([]), "text": String(" view_id: ViewId,\n")}), Object({"ln": Number(61), "styles": Array([]), "text": String(" parent: &ApplicationWindow,\n")})]), "n": Number(6), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(168), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":8,"op":"copy"},{"ln":9,"n":47,"op":"copy"},{"lines":[{"ln":56,"styles":[],"text":" core: &Client,\n"},{"ln":57,"styles":[],"text":" // The FindReplace dialog is relative to this\n"},{"ln":58,"styles":[],"text":" hamburger_button: &MenuButton,\n"},{"ln":59,"styles":[],"text":" file_name: Option<String>,\n"},{"ln":60,"styles":[],"text":" view_id: ViewId,\n"},{"ln":61,"styles":[],"text":" parent: &ApplicationWindow,\n"}],"n":6,"op":"ins"},{"n":998,"op":"invalidate"},{"n":168,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 8, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 6, lines: [Line { text: " core: &Client,\n", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this\n", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,\n", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,\n", cursor: [], styles: [], line_num: Some(61) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 168, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 8, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 6, lines: [Line { text: " core: &Client,\n", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this\n", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,\n", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,\n", cursor: [], styles: [], line_num: Some(61) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 168, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 8, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 6, lines: [Line { text: " core: &Client,\n", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this\n", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,\n", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,\n", cursor: [], styles: [], line_num: Some(61) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 168, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }], old_invalid_before: 0, old_invalid_after: 1172, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 8, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 6, lines: [Line { text: " core: &Client,\n", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this\n", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,\n", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,\n", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,\n", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,\n", cursor: [], styles: [], line_num: Some(61) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 168, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 8 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 47 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 6 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 168 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 329.97249326930046/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 15 63
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[15,63],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(15), Number(63)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(15), Number(63)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(15), Number(63)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[15,63],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 421.3960647991297/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":13,"op":"copy"},{"ln":14,"n":48,"op":"copy"},{"lines":[{"ln":62,"styles":[],"text":" ) -> Rc<RefCell<Self>> {\n"},{"ln":63,"styles":[],"text":" trace!(\"{}, '{}'\", gettext(\"Creating new EditView\"), view_id);\n"},{"ln":64,"styles":[],"text":" let view_item = ViewItem::new();\n"},{"ln":65,"styles":[],"text":" let find_replace = FindReplace::new(&hamburger_button);\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":164,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(13), "op": String("copy")}), Object({"ln": Number(14), "n": Number(48), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(62), "styles": Array([]), "text": String(" ) -> Rc<RefCell<Self>> {\n")}), Object({"ln": Number(63), "styles": Array([]), "text": String(" trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);\n")}), Object({"ln": Number(64), "styles": Array([]), "text": String(" let view_item = ViewItem::new();\n")}), Object({"ln": Number(65), "styles": Array([]), "text": String(" let find_replace = FindReplace::new(&hamburger_button);\n")})]), "n": Number(4), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(164), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":13,"op":"copy"},{"ln":14,"n":48,"op":"copy"},{"lines":[{"ln":62,"styles":[],"text":" ) -> Rc<RefCell<Self>> {\n"},{"ln":63,"styles":[],"text":" trace!(\"{}, '{}'\", gettext(\"Creating new EditView\"), view_id);\n"},{"ln":64,"styles":[],"text":" let view_item = ViewItem::new();\n"},{"ln":65,"styles":[],"text":" let find_replace = FindReplace::new(&hamburger_button);\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":164,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 13, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " ) -> Rc<RefCell<Self>> {\n", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);\n", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();\n", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);\n", cursor: [], styles: [], line_num: Some(65) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 164, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 13, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " ) -> Rc<RefCell<Self>> {\n", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);\n", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();\n", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);\n", cursor: [], styles: [], line_num: Some(65) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 164, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 13, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " ) -> Rc<RefCell<Self>> {\n", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);\n", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();\n", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);\n", cursor: [], styles: [], line_num: Some(65) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 164, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }], old_invalid_before: 0, old_invalid_after: 1166, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 13, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " ) -> Rc<RefCell<Self>> {\n", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);\n", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();\n", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);\n", cursor: [], styles: [], line_num: Some(65) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 164, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 13 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 48 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 4 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 164 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 421.3960647991297/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 20 68
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[20,68],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(20), Number(68)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(20), Number(68)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(20), Number(68)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[20,68],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":18,"op":"copy"},{"ln":19,"n":47,"op":"copy"},{"lines":[{"ln":66,"styles":[],"text":" let pango_ctx = view_item.get_pango_ctx();\n"},{"ln":67,"styles":[],"text":" let im_context = IMContextSimple::new();\n"},{"ln":68,"styles":[],"text":" let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n"},{"ln":69,"styles":[],"text":"\n"},{"ln":70,"styles":[],"text":" let edit_view = Rc::new(RefCell::new(Self {\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":159,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(18), "op": String("copy")}), Object({"ln": Number(19), "n": Number(47), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(66), "styles": Array([]), "text": String(" let pango_ctx = view_item.get_pango_ctx();\n")}), Object({"ln": Number(67), "styles": Array([]), "text": String(" let im_context = IMContextSimple::new();\n")}), Object({"ln": Number(68), "styles": Array([]), "text": String(" let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n")}), Object({"ln": Number(69), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(70), "styles": Array([]), "text": String(" let edit_view = Rc::new(RefCell::new(Self {\n")})]), "n": Number(5), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(159), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":18,"op":"copy"},{"ln":19,"n":47,"op":"copy"},{"lines":[{"ln":66,"styles":[],"text":" let pango_ctx = view_item.get_pango_ctx();\n"},{"ln":67,"styles":[],"text":" let im_context = IMContextSimple::new();\n"},{"ln":68,"styles":[],"text":" let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n"},{"ln":69,"styles":[],"text":"\n"},{"ln":70,"styles":[],"text":" let edit_view = Rc::new(RefCell::new(Self {\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":159,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 501.316008122943/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 18, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " let pango_ctx = view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();\n", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n", cursor: [], styles: [], line_num: Some(68) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {\n", cursor: [], styles: [], line_num: Some(70) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 159, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 18, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " let pango_ctx = view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();\n", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n", cursor: [], styles: [], line_num: Some(68) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {\n", cursor: [], styles: [], line_num: Some(70) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 159, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 18, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " let pango_ctx = view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();\n", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n", cursor: [], styles: [], line_num: Some(68) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {\n", cursor: [], styles: [], line_num: Some(70) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 159, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }], old_invalid_before: 0, old_invalid_after: 1162, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 18, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " let pango_ctx = view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();\n", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);\n", cursor: [], styles: [], line_num: Some(68) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {\n", cursor: [], styles: [], line_num: Some(70) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 159, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 18 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 47 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 5 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 159 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 23 72
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[23,72],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(23), Number(72)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(23), Number(72)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(23), Number(72)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[23,72],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":21,"op":"copy"},{"ln":22,"n":49,"op":"copy"},{"lines":[{"ln":71,"styles":[],"text":" core: core.clone(),\n"},{"ln":72,"styles":[],"text":" main_state: main_state.clone(),\n"},{"ln":73,"styles":[],"text":" file_name,\n"},{"ln":74,"styles":[],"text":" pristine: true,\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":155,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(21), "op": String("copy")}), Object({"ln": Number(22), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(71), "styles": Array([]), "text": String(" core: core.clone(),\n")}), Object({"ln": Number(72), "styles": Array([]), "text": String(" main_state: main_state.clone(),\n")}), Object({"ln": Number(73), "styles": Array([]), "text": String(" file_name,\n")}), Object({"ln": Number(74), "styles": Array([]), "text": String(" pristine: true,\n")})]), "n": Number(4), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(155), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":21,"op":"copy"},{"ln":22,"n":49,"op":"copy"},{"lines":[{"ln":71,"styles":[],"text":" core: core.clone(),\n"},{"ln":72,"styles":[],"text":" main_state: main_state.clone(),\n"},{"ln":73,"styles":[],"text":" file_name,\n"},{"ln":74,"styles":[],"text":" pristine: true,\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":155,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 21, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " core: core.clone(),\n", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),\n", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,\n", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,\n", cursor: [], styles: [], line_num: Some(74) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 155, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 21, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " core: core.clone(),\n", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),\n", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,\n", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,\n", cursor: [], styles: [], line_num: Some(74) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 155, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 21, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " core: core.clone(),\n", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),\n", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,\n", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,\n", cursor: [], styles: [], line_num: Some(74) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 155, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }], old_invalid_before: 0, old_invalid_after: 1157, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 21, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " core: core.clone(),\n", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),\n", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,\n", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,\n", cursor: [], styles: [], line_num: Some(74) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 155, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 21 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 4 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 155 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 563.6777820808973/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 26 75
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[26,75],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(26), Number(75)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(26), Number(75)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(26), Number(75)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[26,75],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":24,"op":"copy"},{"ln":25,"n":50,"op":"copy"},{"lines":[{"ln":75,"styles":[],"text":" view_id,\n"},{"ln":76,"styles":[],"text":" root_widget: view_item.root_box.clone(),\n"},{"ln":77,"styles":[],"text":" top_bar: TopBar::new(),\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":152,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(24), "op": String("copy")}), Object({"ln": Number(25), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(75), "styles": Array([]), "text": String(" view_id,\n")}), Object({"ln": Number(76), "styles": Array([]), "text": String(" root_widget: view_item.root_box.clone(),\n")}), Object({"ln": Number(77), "styles": Array([]), "text": String(" top_bar: TopBar::new(),\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(152), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":24,"op":"copy"},{"ln":25,"n":50,"op":"copy"},{"lines":[{"ln":75,"styles":[],"text":" view_id,\n"},{"ln":76,"styles":[],"text":" root_widget: view_item.root_box.clone(),\n"},{"ln":77,"styles":[],"text":" top_bar: TopBar::new(),\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":152,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 24, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " view_id,\n", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),\n", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),\n", cursor: [], styles: [], line_num: Some(77) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 152, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 24, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " view_id,\n", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),\n", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),\n", cursor: [], styles: [], line_num: Some(77) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 152, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 24, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " view_id,\n", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),\n", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),\n", cursor: [], styles: [], line_num: Some(77) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 152, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }], old_invalid_before: 0, old_invalid_after: 1153, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 24, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " view_id,\n", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),\n", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),\n", cursor: [], styles: [], line_num: Some(77) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 152, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 24 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 152 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 609.6922949034183/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 29 77
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[29,77],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(29), Number(77)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(29), Number(77)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(29), Number(77)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[29,77],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":27,"op":"copy"},{"ln":28,"n":50,"op":"copy"},{"lines":[{"ln":78,"styles":[],"text":" view_item: view_item.clone(),\n"},{"ln":79,"styles":[],"text":" line_cache: LineCache::default(),\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":150,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(27), "op": String("copy")}), Object({"ln": Number(28), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(78), "styles": Array([]), "text": String(" view_item: view_item.clone(),\n")}), Object({"ln": Number(79), "styles": Array([]), "text": String(" line_cache: LineCache::default(),\n")})]), "n": Number(2), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(150), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":27,"op":"copy"},{"ln":28,"n":50,"op":"copy"},{"lines":[{"ln":78,"styles":[],"text":" view_item: view_item.clone(),\n"},{"ln":79,"styles":[],"text":" line_cache: LineCache::default(),\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":150,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 27, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " view_item: view_item.clone(),\n", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),\n", cursor: [], styles: [], line_num: Some(79) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 150, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 27, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " view_item: view_item.clone(),\n", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),\n", cursor: [], styles: [], line_num: Some(79) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 150, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 27, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " view_item: view_item.clone(),\n", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),\n", cursor: [], styles: [], line_num: Some(79) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 150, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }], old_invalid_before: 0, old_invalid_after: 1150, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 27, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " view_item: view_item.clone(),\n", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),\n", cursor: [], styles: [], line_num: Some(79) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 150, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 27 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 2 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 150 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 646.6249959854034/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 30 78
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[30,78],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(30), Number(78)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(30), Number(78)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(30), Number(78)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[30,78],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":28,"op":"copy"},{"ln":29,"n":51,"op":"copy"},{"lines":[{"ln":80,"styles":[],"text":" edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":149,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(28), "op": String("copy")}), Object({"ln": Number(29), "n": Number(51), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(80), "styles": Array([]), "text": String(" edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n")})]), "n": Number(1), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(149), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":28,"op":"copy"},{"ln":29,"n":51,"op":"copy"},{"lines":[{"ln":80,"styles":[],"text":" edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":149,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 692.6395088079245/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 28, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n", cursor: [], styles: [], line_num: Some(80) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 149, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 28, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n", cursor: [], styles: [], line_num: Some(80) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 149, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 28, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n", cursor: [], styles: [], line_num: Some(80) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 149, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }], old_invalid_before: 0, old_invalid_after: 1148, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 28, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),\n", cursor: [], styles: [], line_num: Some(80) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 149, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 28 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 51 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 1 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 149 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 32 81
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[32,81],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(32), Number(81)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(32), Number(81)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(32), Number(81)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[32,81],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":30,"op":"copy"},{"ln":31,"n":50,"op":"copy"},{"lines":[{"ln":81,"styles":[],"text":" interface_font,\n"},{"ln":82,"styles":[],"text":" find_replace: find_replace.clone(),\n"},{"ln":83,"styles":[],"text":" im_context: im_context.clone(),\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":146,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(30), "op": String("copy")}), Object({"ln": Number(31), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(81), "styles": Array([]), "text": String(" interface_font,\n")}), Object({"ln": Number(82), "styles": Array([]), "text": String(" find_replace: find_replace.clone(),\n")}), Object({"ln": Number(83), "styles": Array([]), "text": String(" im_context: im_context.clone(),\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(146), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":30,"op":"copy"},{"ln":31,"n":50,"op":"copy"},{"lines":[{"ln":81,"styles":[],"text":" interface_font,\n"},{"ln":82,"styles":[],"text":" find_replace: find_replace.clone(),\n"},{"ln":83,"styles":[],"text":" im_context: im_context.clone(),\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":146,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 30, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " interface_font,\n", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),\n", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),\n", cursor: [], styles: [], line_num: Some(83) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 146, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 30, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " interface_font,\n", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),\n", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),\n", cursor: [], styles: [], line_num: Some(83) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 146, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 30, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " interface_font,\n", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),\n", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),\n", cursor: [], styles: [], line_num: Some(83) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 146, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }], old_invalid_before: 0, old_invalid_after: 1147, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 30, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " interface_font,\n", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),\n", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),\n", cursor: [], styles: [], line_num: Some(83) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 146, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 30 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 146 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 747.7358333725243/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 35 83
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[35,83],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(35), Number(83)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(35), Number(83)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(35), Number(83)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[35,83],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":33,"op":"copy"},{"ln":34,"n":50,"op":"copy"},{"lines":[{"ln":84,"styles":[],"text":" }));\n"},{"ln":85,"styles":[],"text":"\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":144,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(33), "op": String("copy")}), Object({"ln": Number(34), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(84), "styles": Array([]), "text": String(" }));\n")}), Object({"ln": Number(85), "styles": Array([]), "text": String("\n")})]), "n": Number(2), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(144), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":33,"op":"copy"},{"ln":34,"n":50,"op":"copy"},{"lines":[{"ln":84,"styles":[],"text":" }));\n"},{"ln":85,"styles":[],"text":"\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":144,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 33, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " }));\n", cursor: [], styles: [], line_num: Some(84) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(85) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 144, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 33, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " }));\n", cursor: [], styles: [], line_num: Some(84) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(85) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 144, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 33, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " }));\n", cursor: [], styles: [], line_num: Some(84) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(85) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 144, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }], old_invalid_before: 0, old_invalid_after: 1144, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 33, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " }));\n", cursor: [], styles: [], line_num: Some(84) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(85) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 144, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 33 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 2 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 144 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 803.437612052337/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 38 86
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[38,86],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(38), Number(86)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(38), Number(86)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(38), Number(86)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[38,86],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":36,"op":"copy"},{"ln":37,"n":49,"op":"copy"},{"lines":[{"ln":86,"styles":[],"text":" edit_view.borrow_mut().update_title();\n"},{"ln":87,"styles":[],"text":"\n"},{"ln":88,"styles":[],"text":" view_item.connect_events(&edit_view);\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":141,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(36), "op": String("copy")}), Object({"ln": Number(37), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(86), "styles": Array([]), "text": String(" edit_view.borrow_mut().update_title();\n")}), Object({"ln": Number(87), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(88), "styles": Array([]), "text": String(" view_item.connect_events(&edit_view);\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(141), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":36,"op":"copy"},{"ln":37,"n":49,"op":"copy"},{"lines":[{"ln":86,"styles":[],"text":" edit_view.borrow_mut().update_title();\n"},{"ln":87,"styles":[],"text":"\n"},{"ln":88,"styles":[],"text":" view_item.connect_events(&edit_view);\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":141,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 36, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view.borrow_mut().update_title();\n", cursor: [], styles: [], line_num: Some(86) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(88) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 141, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 36, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view.borrow_mut().update_title();\n", cursor: [], styles: [], line_num: Some(86) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(88) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 141, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 36, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view.borrow_mut().update_title();\n", cursor: [], styles: [], line_num: Some(86) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(88) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 141, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }], old_invalid_before: 0, old_invalid_after: 1142, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 36, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view.borrow_mut().update_title();\n", cursor: [], styles: [], line_num: Some(86) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(88) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 141, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 36 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 141 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 859.1393907321498/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 40 89
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[40,89],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(40), Number(89)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(40), Number(89)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(40), Number(89)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[40,89],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":38,"op":"copy"},{"ln":39,"n":50,"op":"copy"},{"lines":[{"ln":89,"styles":[],"text":" find_replace.connect_events(&edit_view);\n"},{"ln":90,"styles":[],"text":" EditView::connect_im_events(&edit_view, &im_context);\n"},{"ln":91,"styles":[],"text":" //edit_view.borrow().connect_gschema(&gschema);\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":138,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(38), "op": String("copy")}), Object({"ln": Number(39), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(89), "styles": Array([]), "text": String(" find_replace.connect_events(&edit_view);\n")}), Object({"ln": Number(90), "styles": Array([]), "text": String(" EditView::connect_im_events(&edit_view, &im_context);\n")}), Object({"ln": Number(91), "styles": Array([]), "text": String(" //edit_view.borrow().connect_gschema(&gschema);\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(138), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":38,"op":"copy"},{"ln":39,"n":50,"op":"copy"},{"lines":[{"ln":89,"styles":[],"text":" find_replace.connect_events(&edit_view);\n"},{"ln":90,"styles":[],"text":" EditView::connect_im_events(&edit_view, &im_context);\n"},{"ln":91,"styles":[],"text":" //edit_view.borrow().connect_gschema(&gschema);\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":138,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 38, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " find_replace.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);\n", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);\n", cursor: [], styles: [], line_num: Some(91) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 138, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 38, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " find_replace.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);\n", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);\n", cursor: [], styles: [], line_num: Some(91) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 138, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 38, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " find_replace.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);\n", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);\n", cursor: [], styles: [], line_num: Some(91) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 138, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }], old_invalid_before: 0, old_invalid_after: 1139, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 38, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " find_replace.connect_events(&edit_view);\n", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);\n", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);\n", cursor: [], styles: [], line_num: Some(91) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 138, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 38 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 138 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 920.8957105748912/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 43 92
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[43,92],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(43), Number(92)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(43), Number(92)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(43), Number(92)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[43,92],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":41,"op":"copy"},{"ln":42,"n":50,"op":"copy"},{"lines":[{"ln":92,"styles":[],"text":"\n"},{"ln":93,"styles":[],"text":" im_context.set_client_window(parent.get_window().as_ref());\n"},{"ln":94,"styles":[],"text":"\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":135,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1003.2374703626416/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(41), "op": String("copy")}), Object({"ln": Number(42), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(92), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(93), "styles": Array([]), "text": String(" im_context.set_client_window(parent.get_window().as_ref());\n")}), Object({"ln": Number(94), "styles": Array([]), "text": String("\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(135), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":41,"op":"copy"},{"ln":42,"n":50,"op":"copy"},{"lines":[{"ln":92,"styles":[],"text":"\n"},{"ln":93,"styles":[],"text":" im_context.set_client_window(parent.get_window().as_ref());\n"},{"ln":94,"styles":[],"text":"\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":135,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 41, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());\n", cursor: [], styles: [], line_num: Some(93) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(94) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 135, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 41, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());\n", cursor: [], styles: [], line_num: Some(93) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(94) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 135, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 41, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());\n", cursor: [], styles: [], line_num: Some(93) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(94) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 135, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }], old_invalid_before: 0, old_invalid_after: 1136, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 41, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());\n", cursor: [], styles: [], line_num: Some(93) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(94) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 135, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 41 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 135 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 47 95
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[47,95],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(47), Number(95)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(47), Number(95)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(47), Number(95)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[47,95],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=86
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":45,"op":"copy"},{"ln":46,"n":49,"op":"copy"},{"lines":[{"ln":95,"styles":[],"text":" edit_view\n"},{"ln":96,"styles":[],"text":" }\n"},{"ln":97,"styles":[],"text":"\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":132,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(45), "op": String("copy")}), Object({"ln": Number(46), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(95), "styles": Array([]), "text": String(" edit_view\n")}), Object({"ln": Number(96), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(97), "styles": Array([]), "text": String("\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(132), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":45,"op":"copy"},{"ln":46,"n":49,"op":"copy"},{"lines":[{"ln":95,"styles":[],"text":" edit_view\n"},{"ln":96,"styles":[],"text":" }\n"},{"ln":97,"styles":[],"text":"\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":132,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view\n", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(96) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(97) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 132, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view\n", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(96) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(97) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 132, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view\n", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(96) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(97) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 132, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }], old_invalid_before: 0, old_invalid_after: 1133, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " edit_view\n", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(96) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(97) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 132, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 45 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 132 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1092.8446795437465/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 52 100
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[52,100],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(52), Number(100)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z DEBUG editview::view_item] Size changed to: width=1988 height=991
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Allocating DrawingArea size: Width: 1988, Height: 991
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 56 104
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[56,104],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE editview::edit_view] Resizing EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(52), Number(100)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"resize","params":{"height":991,"width":1988},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(52), Number(100)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1988)}), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[52,100],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[56,104],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1988)}), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("resize"), "params": Object({"height": Number(991), "width": Number(1988)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"resize","params":{"height":991,"width":1988},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=280
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":50,"op":"copy"},{"ln":51,"n":47,"op":"copy"},{"lines":[{"ln":98,"styles":[],"text":" fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n"},{"ln":99,"styles":[],"text":" im_context.connect_commit(enclose!((edit_view) move |_, text| {\n"},{"ln":100,"styles":[],"text":" let ev = edit_view.borrow();\n"},{"ln":101,"styles":[],"text":" ev.core.insert(ev.view_id, text);\n"},{"ln":102,"styles":[],"text":" }));\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":127,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1184.8737051903315/25772; horizontal adjustment: 0/1996
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(50), "op": String("copy")}), Object({"ln": Number(51), "n": Number(47), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(98), "styles": Array([]), "text": String(" fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n")}), Object({"ln": Number(99), "styles": Array([]), "text": String(" im_context.connect_commit(enclose!((edit_view) move |_, text| {\n")}), Object({"ln": Number(100), "styles": Array([]), "text": String(" let ev = edit_view.borrow();\n")}), Object({"ln": Number(101), "styles": Array([]), "text": String(" ev.core.insert(ev.view_id, text);\n")}), Object({"ln": Number(102), "styles": Array([]), "text": String(" }));\n")})]), "n": Number(5), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(127), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":50,"op":"copy"},{"ln":51,"n":47,"op":"copy"},{"lines":[{"ln":98,"styles":[],"text":" fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n"},{"ln":99,"styles":[],"text":" im_context.connect_commit(enclose!((edit_view) move |_, text| {\n"},{"ln":100,"styles":[],"text":" let ev = edit_view.borrow();\n"},{"ln":101,"styles":[],"text":" ev.core.insert(ev.view_id, text);\n"},{"ln":102,"styles":[],"text":" }));\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":127,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":54,"op":"copy"},{"ln":55,"n":48,"op":"copy"},{"lines":[{"ln":103,"styles":[],"text":" }\n"},{"ln":104,"styles":[],"text":"\n"},{"ln":105,"styles":[],"text":" fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n"},{"ln":106,"styles":[],"text":" Font::new(\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":123,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(54), "op": String("copy")}), Object({"ln": Number(55), "n": Number(48), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(103), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(104), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(105), "styles": Array([]), "text": String(" fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n")}), Object({"ln": Number(106), "styles": Array([]), "text": String(" Font::new(\n")})]), "n": Number(4), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(123), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":54,"op":"copy"},{"ln":55,"n":48,"op":"copy"},{"lines":[{"ln":103,"styles":[],"text":" }\n"},{"ln":104,"styles":[],"text":"\n"},{"ln":105,"styles":[],"text":" fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n"},{"ln":106,"styles":[],"text":" Font::new(\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":123,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {\n", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();\n", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);\n", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));\n", cursor: [], styles: [], line_num: Some(102) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 127, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {\n", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();\n", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);\n", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));\n", cursor: [], styles: [], line_num: Some(102) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 127, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {\n", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();\n", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);\n", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));\n", cursor: [], styles: [], line_num: Some(102) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 127, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }], old_invalid_before: 0, old_invalid_after: 1130, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {\n", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {\n", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();\n", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);\n", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));\n", cursor: [], styles: [], line_num: Some(102) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 127, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 47 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 5 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 127 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 54, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(103) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(\n", cursor: [], styles: [], line_num: Some(106) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 123, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 54, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(103) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(\n", cursor: [], styles: [], line_num: Some(106) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 123, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 54, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(103) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(\n", cursor: [], styles: [], line_num: Some(106) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 123, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }], old_invalid_before: 0, old_invalid_after: 1125, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 54, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(103) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {\n", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(\n", cursor: [], styles: [], line_num: Some(106) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 123, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 54 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 48 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 4 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 123 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 56 104
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[56,104],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(56), Number(104)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[56,104],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1273.8754602546808/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 60 108
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[60,108],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(60), Number(108)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(60), Number(108)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(60), Number(108)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[60,108],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1361.0608529718486/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":58,"op":"copy"},{"ln":59,"n":48,"op":"copy"},{"lines":[{"ln":107,"styles":[],"text":" &pango_ctx,\n"},{"ln":108,"styles":[],"text":" FontDescription::from_string(&settings.interface_font),\n"},{"ln":109,"styles":[],"text":" )\n"},{"ln":110,"styles":[],"text":" }\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":119,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(58), "op": String("copy")}), Object({"ln": Number(59), "n": Number(48), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(107), "styles": Array([]), "text": String(" &pango_ctx,\n")}), Object({"ln": Number(108), "styles": Array([]), "text": String(" FontDescription::from_string(&settings.interface_font),\n")}), Object({"ln": Number(109), "styles": Array([]), "text": String(" )\n")}), Object({"ln": Number(110), "styles": Array([]), "text": String(" }\n")})]), "n": Number(4), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(119), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":58,"op":"copy"},{"ln":59,"n":48,"op":"copy"},{"lines":[{"ln":107,"styles":[],"text":" &pango_ctx,\n"},{"ln":108,"styles":[],"text":" FontDescription::from_string(&settings.interface_font),\n"},{"ln":109,"styles":[],"text":" )\n"},{"ln":110,"styles":[],"text":" }\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":119,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 58, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),\n", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )\n", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(110) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 119, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 58, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),\n", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )\n", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(110) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 119, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 58, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),\n", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )\n", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(110) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 119, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }], old_invalid_before: 0, old_invalid_after: 1121, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 58, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),\n", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )\n", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(110) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 119, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 58 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 48 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 4 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 119 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 64 113
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[64,113],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(64), Number(113)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(64), Number(113)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(64), Number(113)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[64,113],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":62,"op":"copy"},{"ln":63,"n":48,"op":"copy"},{"lines":[{"ln":111,"styles":[],"text":"\n"},{"ln":112,"styles":[],"text":" fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n"},{"ln":113,"styles":[],"text":" Font::new(pango_ctx, FontDescription::from_string(&font))\n"},{"ln":114,"styles":[],"text":" }\n"},{"ln":115,"styles":[],"text":"}\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":114,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(62), "op": String("copy")}), Object({"ln": Number(63), "n": Number(48), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(111), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(112), "styles": Array([]), "text": String(" fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n")}), Object({"ln": Number(113), "styles": Array([]), "text": String(" Font::new(pango_ctx, FontDescription::from_string(&font))\n")}), Object({"ln": Number(114), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(115), "styles": Array([]), "text": String("}\n")})]), "n": Number(5), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(114), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":62,"op":"copy"},{"ln":63,"n":48,"op":"copy"},{"lines":[{"ln":111,"styles":[],"text":"\n"},{"ln":112,"styles":[],"text":" fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n"},{"ln":113,"styles":[],"text":" Font::new(pango_ctx, FontDescription::from_string(&font))\n"},{"ln":114,"styles":[],"text":" }\n"},{"ln":115,"styles":[],"text":"}\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":114,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 62, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))\n", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(115) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 114, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 62, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))\n", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(115) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 114, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 62, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))\n", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(115) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 114, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }], old_invalid_before: 0, old_invalid_after: 1117, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 62, lines: [] }, Operation { operation_type: Copy_, nb_lines: 48, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {\n", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))\n", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}\n", cursor: [], styles: [], line_num: Some(115) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 114, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 62 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 48 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 5 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 114 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1438.5589798317246/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 68 116
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[68,116],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(68), Number(116)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(68), Number(116)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(68), Number(116)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[68,116],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":66,"op":"copy"},{"ln":67,"n":49,"op":"copy"},{"lines":[{"ln":116,"styles":[],"text":"\n"},{"ln":117,"styles":[],"text":"impl EditView {\n"},{"ln":118,"styles":[],"text":" /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":111,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1506.3698408343091/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(66), "op": String("copy")}), Object({"ln": Number(67), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(116), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(117), "styles": Array([]), "text": String("impl EditView {\n")}), Object({"ln": Number(118), "styles": Array([]), "text": String(" /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(111), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":66,"op":"copy"},{"ln":67,"n":49,"op":"copy"},{"lines":[{"ln":116,"styles":[],"text":"\n"},{"ln":117,"styles":[],"text":"impl EditView {\n"},{"ln":118,"styles":[],"text":" /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":111,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 66, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n", cursor: [], styles: [], line_num: Some(118) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 111, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 66, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n", cursor: [], styles: [], line_num: Some(118) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 111, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 66, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n", cursor: [], styles: [], line_num: Some(118) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 111, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }], old_invalid_before: 0, old_invalid_after: 1112, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 66, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: "\n", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {\n", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)\n", cursor: [], styles: [], line_num: Some(118) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 111, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 66 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 111 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 71 119
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[71,119],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(71), Number(119)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(71), Number(119)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(71), Number(119)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[71,119],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":69,"op":"copy"},{"ln":70,"n":49,"op":"copy"},{"lines":[{"ln":119,"styles":[],"text":" pub fn set_file(&mut self, file_name: &str) {\n"},{"ln":120,"styles":[],"text":" trace!(\n"},{"ln":121,"styles":[],"text":" \"{} 'FindReplace' {} '{}'\",\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":108,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(69), "op": String("copy")}), Object({"ln": Number(70), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(119), "styles": Array([]), "text": String(" pub fn set_file(&mut self, file_name: &str) {\n")}), Object({"ln": Number(120), "styles": Array([]), "text": String(" trace!(\n")}), Object({"ln": Number(121), "styles": Array([]), "text": String(" \"{} \'FindReplace\' {} \'{}\'\",\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(108), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":69,"op":"copy"},{"ln":70,"n":49,"op":"copy"},{"lines":[{"ln":119,"styles":[],"text":" pub fn set_file(&mut self, file_name: &str) {\n"},{"ln":120,"styles":[],"text":" trace!(\n"},{"ln":121,"styles":[],"text":" \"{} 'FindReplace' {} '{}'\",\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":108,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 69, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " pub fn set_file(&mut self, file_name: &str) {\n", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",\n", cursor: [], styles: [], line_num: Some(121) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 108, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 69, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " pub fn set_file(&mut self, file_name: &str) {\n", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",\n", cursor: [], styles: [], line_num: Some(121) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 108, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 69, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " pub fn set_file(&mut self, file_name: &str) {\n", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",\n", cursor: [], styles: [], line_num: Some(121) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 108, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }], old_invalid_before: 0, old_invalid_after: 1109, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 69, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " pub fn set_file(&mut self, file_name: &str) {\n", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",\n", cursor: [], styles: [], line_num: Some(121) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 108, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 69 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 108 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1566.915252443539/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 74 122
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[74,122],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(74), Number(122)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(74), Number(122)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(74), Number(122)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[74,122],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1630.487934631919/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":72,"op":"copy"},{"ln":73,"n":49,"op":"copy"},{"lines":[{"ln":122,"styles":[],"text":" gettext(\"Connecting\"),\n"},{"ln":123,"styles":[],"text":" gettext(\"events for EditView\"),\n"},{"ln":124,"styles":[],"text":" self.view_id\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":105,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(72), "op": String("copy")}), Object({"ln": Number(73), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(122), "styles": Array([]), "text": String(" gettext(\"Connecting\"),\n")}), Object({"ln": Number(123), "styles": Array([]), "text": String(" gettext(\"events for EditView\"),\n")}), Object({"ln": Number(124), "styles": Array([]), "text": String(" self.view_id\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(105), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":72,"op":"copy"},{"ln":73,"n":49,"op":"copy"},{"lines":[{"ln":122,"styles":[],"text":" gettext(\"Connecting\"),\n"},{"ln":123,"styles":[],"text":" gettext(\"events for EditView\"),\n"},{"ln":124,"styles":[],"text":" self.view_id\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":105,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 72, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " gettext(\"Connecting\"),\n", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),\n", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id\n", cursor: [], styles: [], line_num: Some(124) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 105, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 72, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " gettext(\"Connecting\"),\n", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),\n", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id\n", cursor: [], styles: [], line_num: Some(124) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 105, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 72, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " gettext(\"Connecting\"),\n", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),\n", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id\n", cursor: [], styles: [], line_num: Some(124) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 105, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }], old_invalid_before: 0, old_invalid_after: 1106, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 72, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " gettext(\"Connecting\"),\n", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),\n", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id\n", cursor: [], styles: [], line_num: Some(124) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 105, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 72 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 105 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 77 125
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[77,125],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(77), Number(125)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(77), Number(125)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(77), Number(125)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[77,125],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":75,"op":"copy"},{"ln":76,"n":49,"op":"copy"},{"lines":[{"ln":125,"styles":[],"text":" );\n"},{"ln":126,"styles":[],"text":" self.file_name = Some(file_name.to_string());\n"},{"ln":127,"styles":[],"text":" self.update_title();\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":102,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(75), "op": String("copy")}), Object({"ln": Number(76), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(125), "styles": Array([]), "text": String(" );\n")}), Object({"ln": Number(126), "styles": Array([]), "text": String(" self.file_name = Some(file_name.to_string());\n")}), Object({"ln": Number(127), "styles": Array([]), "text": String(" self.update_title();\n")})]), "n": Number(3), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(102), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":75,"op":"copy"},{"ln":76,"n":49,"op":"copy"},{"lines":[{"ln":125,"styles":[],"text":" );\n"},{"ln":126,"styles":[],"text":" self.file_name = Some(file_name.to_string());\n"},{"ln":127,"styles":[],"text":" self.update_title();\n"}],"n":3,"op":"ins"},{"n":998,"op":"invalidate"},{"n":102,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 75, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());\n", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();\n", cursor: [], styles: [], line_num: Some(127) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 102, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 75, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());\n", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();\n", cursor: [], styles: [], line_num: Some(127) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 102, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 75, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());\n", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();\n", cursor: [], styles: [], line_num: Some(127) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 102, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }], old_invalid_before: 0, old_invalid_after: 1103, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 75, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 3, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());\n", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();\n", cursor: [], styles: [], line_num: Some(127) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 102, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 75 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 3 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 102 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1700.7206120984406/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 80 129
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[80,129],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(80), Number(129)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(80), Number(129)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(80), Number(129)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[80,129],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":78,"op":"copy"},{"ln":79,"n":49,"op":"copy"},{"lines":[{"ln":128,"styles":[],"text":" }\n"},{"ln":129,"styles":[],"text":"\n"},{"ln":130,"styles":[],"text":" /// Update the title of the EditView to the currently set file_name\n"},{"ln":131,"styles":[],"text":" fn update_title(&self) {\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":98,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(78), "op": String("copy")}), Object({"ln": Number(79), "n": Number(49), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(128), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(129), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(130), "styles": Array([]), "text": String(" /// Update the title of the EditView to the currently set file_name\n")}), Object({"ln": Number(131), "styles": Array([]), "text": String(" fn update_title(&self) {\n")})]), "n": Number(4), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(98), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1755.2114825462847/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":78,"op":"copy"},{"ln":79,"n":49,"op":"copy"},{"lines":[{"ln":128,"styles":[],"text":" }\n"},{"ln":129,"styles":[],"text":"\n"},{"ln":130,"styles":[],"text":" /// Update the title of the EditView to the currently set file_name\n"},{"ln":131,"styles":[],"text":" fn update_title(&self) {\n"}],"n":4,"op":"ins"},{"n":998,"op":"invalidate"},{"n":98,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 78, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(128) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name\n", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {\n", cursor: [], styles: [], line_num: Some(131) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 98, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 78, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(128) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name\n", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {\n", cursor: [], styles: [], line_num: Some(131) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 98, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 78, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(128) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name\n", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {\n", cursor: [], styles: [], line_num: Some(131) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 98, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }], old_invalid_before: 0, old_invalid_after: 1100, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 78, lines: [] }, Operation { operation_type: Copy_, nb_lines: 49, lines: [] }, Operation { operation_type: Insert, nb_lines: 4, lines: [Line { text: " }\n", cursor: [], styles: [], line_num: Some(128) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name\n", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {\n", cursor: [], styles: [], line_num: Some(131) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 98, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 78 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 49 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 4 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 98 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 83 131
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[83,131],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(83), Number(131)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(83), Number(131)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(83), Number(131)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[83,131],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":81,"op":"copy"},{"ln":82,"n":50,"op":"copy"},{"lines":[{"ln":132,"styles":[],"text":" let title = match self.file_name {\n"},{"ln":133,"styles":[],"text":" Some(ref f) => f\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":96,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(81), "op": String("copy")}), Object({"ln": Number(82), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(132), "styles": Array([]), "text": String(" let title = match self.file_name {\n")}), Object({"ln": Number(133), "styles": Array([]), "text": String(" Some(ref f) => f\n")})]), "n": Number(2), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(96), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":81,"op":"copy"},{"ln":82,"n":50,"op":"copy"},{"lines":[{"ln":132,"styles":[],"text":" let title = match self.file_name {\n"},{"ln":133,"styles":[],"text":" Some(ref f) => f\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":96,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 81, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " let title = match self.file_name {\n", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f\n", cursor: [], styles: [], line_num: Some(133) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 96, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 81, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " let title = match self.file_name {\n", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f\n", cursor: [], styles: [], line_num: Some(133) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 96, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 81, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " let title = match self.file_name {\n", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f\n", cursor: [], styles: [], line_num: Some(133) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 96, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }], old_invalid_before: 0, old_invalid_after: 1096, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 81, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " let title = match self.file_name {\n", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f\n", cursor: [], styles: [], line_num: Some(133) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 96, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 81 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 2 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 96 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1798.8041789048686/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 85 133
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[85,133],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(85), Number(133)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(85), Number(133)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(85), Number(133)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[85,133],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":83,"op":"copy"},{"ln":84,"n":50,"op":"copy"},{"lines":[{"ln":134,"styles":[],"text":" .split(::std::path::MAIN_SEPARATOR)\n"},{"ln":135,"styles":[],"text":" .last()\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":94,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(83), "op": String("copy")}), Object({"ln": Number(84), "n": Number(50), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(134), "styles": Array([]), "text": String(" .split(::std::path::MAIN_SEPARATOR)\n")}), Object({"ln": Number(135), "styles": Array([]), "text": String(" .last()\n")})]), "n": Number(2), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(94), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":83,"op":"copy"},{"ln":84,"n":50,"op":"copy"},{"lines":[{"ln":134,"styles":[],"text":" .split(::std::path::MAIN_SEPARATOR)\n"},{"ln":135,"styles":[],"text":" .last()\n"}],"n":2,"op":"ins"},{"n":998,"op":"invalidate"},{"n":94,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1818.178710620995/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 83, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " .split(::std::path::MAIN_SEPARATOR)\n", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()\n", cursor: [], styles: [], line_num: Some(135) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 94, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 83, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " .split(::std::path::MAIN_SEPARATOR)\n", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()\n", cursor: [], styles: [], line_num: Some(135) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 94, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 83, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " .split(::std::path::MAIN_SEPARATOR)\n", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()\n", cursor: [], styles: [], line_num: Some(135) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 94, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }], old_invalid_before: 0, old_invalid_after: 1094, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 83, lines: [] }, Operation { operation_type: Copy_, nb_lines: 50, lines: [] }, Operation { operation_type: Insert, nb_lines: 2, lines: [Line { text: " .split(::std::path::MAIN_SEPARATOR)\n", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()\n", cursor: [], styles: [], line_num: Some(135) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 94, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 83 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 50 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 2 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 94 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1818.178710620995/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 86 134
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[86,134],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(86), Number(134)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(86), Number(134)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(86), Number(134)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[86,134],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":84,"op":"copy"},{"ln":85,"n":51,"op":"copy"},{"lines":[{"ln":136,"styles":[],"text":" .unwrap_or(&gettext(\"Untitled\"))\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":93,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(84), "op": String("copy")}), Object({"ln": Number(85), "n": Number(51), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(136), "styles": Array([]), "text": String(" .unwrap_or(&gettext(\"Untitled\"))\n")})]), "n": Number(1), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(93), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":84,"op":"copy"},{"ln":85,"n":51,"op":"copy"},{"lines":[{"ln":136,"styles":[],"text":" .unwrap_or(&gettext(\"Untitled\"))\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":93,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 84, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .unwrap_or(&gettext(\"Untitled\"))\n", cursor: [], styles: [], line_num: Some(136) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 93, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 84, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .unwrap_or(&gettext(\"Untitled\"))\n", cursor: [], styles: [], line_num: Some(136) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 93, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 84, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .unwrap_or(&gettext(\"Untitled\"))\n", cursor: [], styles: [], line_num: Some(136) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 93, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }], old_invalid_before: 0, old_invalid_after: 1092, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 84, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .unwrap_or(&gettext(\"Untitled\"))\n", cursor: [], styles: [], line_num: Some(136) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 93, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 84 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 51 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 1 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 93 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 87 135
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[87,135],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[87,135],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":85,"op":"copy"},{"ln":86,"n":51,"op":"copy"},{"lines":[{"ln":137,"styles":[],"text":" .to_string(),\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":92,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1830.2877929422236/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(85), "op": String("copy")}), Object({"ln": Number(86), "n": Number(51), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(137), "styles": Array([]), "text": String(" .to_string(),\n")})]), "n": Number(1), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(92), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":85,"op":"copy"},{"ln":86,"n":51,"op":"copy"},{"lines":[{"ln":137,"styles":[],"text":" .to_string(),\n"}],"n":1,"op":"ins"},{"n":998,"op":"invalidate"},{"n":92,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 85, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .to_string(),\n", cursor: [], styles: [], line_num: Some(137) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 92, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:18Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 85, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .to_string(),\n", cursor: [], styles: [], line_num: Some(137) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 92, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 85, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .to_string(),\n", cursor: [], styles: [], line_num: Some(137) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 92, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:18Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:18Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }], old_invalid_before: 0, old_invalid_after: 1091, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:18Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 85, lines: [] }, Operation { operation_type: Copy_, nb_lines: 51, lines: [] }, Operation { operation_type: Insert, nb_lines: 1, lines: [Line { text: " .to_string(),\n", cursor: [], styles: [], line_num: Some(137) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 92, lines: [] }]
[2019-06-05T21:37:18Z INFO xrl::cache] copying 85 lines
[2019-06-05T21:37:18Z INFO xrl::cache] copying 51 lines
[2019-06-05T21:37:18Z INFO xrl::cache] inserting 1 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:18Z INFO xrl::cache] invalidating 92 lines
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1830.2877929422236/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:18Z DEBUG editview::edit_view] Updating visible scroll region 87 135
[2019-06-05T21:37:18Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[87,135],"view_id":"view-id-1"}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:18Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:18Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:18Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(87), Number(135)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[87,135],"view_id":"view-id-1"}}
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:18Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:18Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:18Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:18Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:18Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:18Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:18Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1851.764367061232/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1871.8558253754848/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1890.6514999070237/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1908.2349612750284/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1924.6843902732437/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1940.0729254827952/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1954.4689884659724/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1967.9365879868783/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1980.535604611594/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 1992.322056953265/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:18Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:18Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2022.7861107524395/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2040.8352305360195/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2048.7327029861135/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2056.1208337764238/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2063.032472521562/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2069.4983502244777/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2075.5472159147557/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2081.2059644745264/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 99 147
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[99,147],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(99), Number(147)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(99), Number(147)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(99), Number(147)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[99,147],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=87
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 2 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":97,"op":"copy"},{"ln":98,"n":40,"op":"copy"},{"lines":[{"ln":138,"styles":[],"text":" None => gettext(\"Untitled\"),\n"},{"ln":139,"styles":[],"text":" };\n"},{"ln":140,"styles":[],"text":"\n"},{"ln":141,"styles":[],"text":" let mut full_title = String::new();\n"},{"ln":142,"styles":[],"text":" if !self.pristine {\n"},{"ln":143,"styles":[],"text":" full_title.push('*');\n"},{"ln":144,"styles":[],"text":" }\n"},{"ln":145,"styles":[],"text":" full_title.push_str(&title);\n"},{"ln":146,"styles":[],"text":"\n"},{"ln":147,"styles":[],"text":" trace!(\n"},{"ln":148,"styles":[],"text":" \"{} '{}': {}\",\n"},{"ln":149,"styles":[],"text":" gettext(\"Setting title for EditView\"),\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":80,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(97), "op": String("copy")}), Object({"ln": Number(98), "n": Number(40), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(138), "styles": Array([]), "text": String(" None => gettext(\"Untitled\"),\n")}), Object({"ln": Number(139), "styles": Array([]), "text": String(" };\n")}), Object({"ln": Number(140), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(141), "styles": Array([]), "text": String(" let mut full_title = String::new();\n")}), Object({"ln": Number(142), "styles": Array([]), "text": String(" if !self.pristine {\n")}), Object({"ln": Number(143), "styles": Array([]), "text": String(" full_title.push(\'*\');\n")}), Object({"ln": Number(144), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(145), "styles": Array([]), "text": String(" full_title.push_str(&title);\n")}), Object({"ln": Number(146), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(147), "styles": Array([]), "text": String(" trace!(\n")}), Object({"ln": Number(148), "styles": Array([]), "text": String(" \"{} \'{}\': {}\",\n")}), Object({"ln": Number(149), "styles": Array([]), "text": String(" gettext(\"Setting title for EditView\"),\n")})]), "n": Number(12), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(80), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":97,"op":"copy"},{"ln":98,"n":40,"op":"copy"},{"lines":[{"ln":138,"styles":[],"text":" None => gettext(\"Untitled\"),\n"},{"ln":139,"styles":[],"text":" };\n"},{"ln":140,"styles":[],"text":"\n"},{"ln":141,"styles":[],"text":" let mut full_title = String::new();\n"},{"ln":142,"styles":[],"text":" if !self.pristine {\n"},{"ln":143,"styles":[],"text":" full_title.push('*');\n"},{"ln":144,"styles":[],"text":" }\n"},{"ln":145,"styles":[],"text":" full_title.push_str(&title);\n"},{"ln":146,"styles":[],"text":"\n"},{"ln":147,"styles":[],"text":" trace!(\n"},{"ln":148,"styles":[],"text":" \"{} '{}': {}\",\n"},{"ln":149,"styles":[],"text":" gettext(\"Setting title for EditView\"),\n"}],"n":12,"op":"ins"},{"n":998,"op":"invalidate"},{"n":80,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 97, lines: [] }, Operation { operation_type: Copy_, nb_lines: 40, lines: [] }, Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: " None => gettext(\"Untitled\"),\n", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };\n", cursor: [], styles: [], line_num: Some(139) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();\n", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {\n", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');\n", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);\n", cursor: [], styles: [], line_num: Some(145) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",\n", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),\n", cursor: [], styles: [], line_num: Some(149) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 80, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 97, lines: [] }, Operation { operation_type: Copy_, nb_lines: 40, lines: [] }, Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: " None => gettext(\"Untitled\"),\n", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };\n", cursor: [], styles: [], line_num: Some(139) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();\n", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {\n", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');\n", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);\n", cursor: [], styles: [], line_num: Some(145) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",\n", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),\n", cursor: [], styles: [], line_num: Some(149) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 80, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 97, lines: [] }, Operation { operation_type: Copy_, nb_lines: 40, lines: [] }, Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: " None => gettext(\"Untitled\"),\n", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };\n", cursor: [], styles: [], line_num: Some(139) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();\n", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {\n", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');\n", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);\n", cursor: [], styles: [], line_num: Some(145) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",\n", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),\n", cursor: [], styles: [], line_num: Some(149) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 80, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }], old_invalid_before: 0, old_invalid_after: 1090, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:19Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 97, lines: [] }, Operation { operation_type: Copy_, nb_lines: 40, lines: [] }, Operation { operation_type: Insert, nb_lines: 12, lines: [Line { text: " None => gettext(\"Untitled\"),\n", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };\n", cursor: [], styles: [], line_num: Some(139) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();\n", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {\n", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');\n", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);\n", cursor: [], styles: [], line_num: Some(145) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",\n", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),\n", cursor: [], styles: [], line_num: Some(149) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 80, lines: [] }]
[2019-06-05T21:37:19Z INFO xrl::cache] copying 97 lines
[2019-06-05T21:37:19Z INFO xrl::cache] copying 40 lines
[2019-06-05T21:37:19Z INFO xrl::cache] inserting 12 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 80 lines
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2250.7331169794447/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 107 155
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[107,155],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(107), Number(155)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(107), Number(155)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(107), Number(155)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[107,155],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=88
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":105,"op":"copy"},{"ln":106,"n":44,"op":"copy"},{"lines":[{"ln":150,"styles":[],"text":" self.view_id,\n"},{"ln":151,"styles":[],"text":" full_title\n"},{"ln":152,"styles":[],"text":" );\n"},{"ln":153,"styles":[],"text":" self.top_bar.label.set_text(&full_title);\n"},{"ln":154,"styles":[],"text":" }\n"},{"ln":155,"styles":[],"text":"\n"},{"ln":156,"styles":[],"text":" /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n"},{"ln":157,"styles":[],"text":" /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don't\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":72,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(105), "op": String("copy")}), Object({"ln": Number(106), "n": Number(44), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(150), "styles": Array([]), "text": String(" self.view_id,\n")}), Object({"ln": Number(151), "styles": Array([]), "text": String(" full_title\n")}), Object({"ln": Number(152), "styles": Array([]), "text": String(" );\n")}), Object({"ln": Number(153), "styles": Array([]), "text": String(" self.top_bar.label.set_text(&full_title);\n")}), Object({"ln": Number(154), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(155), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(156), "styles": Array([]), "text": String(" /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n")}), Object({"ln": Number(157), "styles": Array([]), "text": String(" /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t\n")})]), "n": Number(8), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(72), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":105,"op":"copy"},{"ln":106,"n":44,"op":"copy"},{"lines":[{"ln":150,"styles":[],"text":" self.view_id,\n"},{"ln":151,"styles":[],"text":" full_title\n"},{"ln":152,"styles":[],"text":" );\n"},{"ln":153,"styles":[],"text":" self.top_bar.label.set_text(&full_title);\n"},{"ln":154,"styles":[],"text":" }\n"},{"ln":155,"styles":[],"text":"\n"},{"ln":156,"styles":[],"text":" /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n"},{"ln":157,"styles":[],"text":" /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don't\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":72,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 105, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title\n", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );\n", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);\n", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(154) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t\n", cursor: [], styles: [], line_num: Some(157) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 72, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 105, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title\n", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );\n", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);\n", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(154) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t\n", cursor: [], styles: [], line_num: Some(157) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 72, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 105, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title\n", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );\n", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);\n", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(154) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t\n", cursor: [], styles: [], line_num: Some(157) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 72, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }, Line { text: " None => gettext(\"Untitled\"),", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };", cursor: [], styles: [], line_num: Some(139) }, Line { text: "", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);", cursor: [], styles: [], line_num: Some(145) }, Line { text: "", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),", cursor: [], styles: [], line_num: Some(149) }], old_invalid_before: 0, old_invalid_after: 1078, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:19Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 105, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title\n", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );\n", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);\n", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(154) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)\n", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t\n", cursor: [], styles: [], line_num: Some(157) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 72, lines: [] }]
[2019-06-05T21:37:19Z INFO xrl::cache] copying 105 lines
[2019-06-05T21:37:19Z INFO xrl::cache] copying 44 lines
[2019-06-05T21:37:19Z INFO xrl::cache] inserting 8 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 72 lines
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2422.682085949843/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 115 163
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[115,163],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(115), Number(163)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(115), Number(163)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(115), Number(163)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[115,163],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=88
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2594.0256008034853/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":113,"op":"copy"},{"ln":114,"n":44,"op":"copy"},{"lines":[{"ln":158,"styles":[],"text":" /// need special handling by us though.\n"},{"ln":159,"styles":[],"text":" pub fn config_changed(&mut self, changes: &ConfigChanges) {\n"},{"ln":160,"styles":[],"text":" trace!(\n"},{"ln":161,"styles":[],"text":" \"{} 'config_changed' {} '{}': {:?}\",\n"},{"ln":162,"styles":[],"text":" gettext(\"Handling\"),\n"},{"ln":163,"styles":[],"text":" gettext(\"for EditView\"),\n"},{"ln":164,"styles":[],"text":" self.view_id,\n"},{"ln":165,"styles":[],"text":" changes\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":64,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(113), "op": String("copy")}), Object({"ln": Number(114), "n": Number(44), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(158), "styles": Array([]), "text": String(" /// need special handling by us though.\n")}), Object({"ln": Number(159), "styles": Array([]), "text": String(" pub fn config_changed(&mut self, changes: &ConfigChanges) {\n")}), Object({"ln": Number(160), "styles": Array([]), "text": String(" trace!(\n")}), Object({"ln": Number(161), "styles": Array([]), "text": String(" \"{} \'config_changed\' {} \'{}\': {:?}\",\n")}), Object({"ln": Number(162), "styles": Array([]), "text": String(" gettext(\"Handling\"),\n")}), Object({"ln": Number(163), "styles": Array([]), "text": String(" gettext(\"for EditView\"),\n")}), Object({"ln": Number(164), "styles": Array([]), "text": String(" self.view_id,\n")}), Object({"ln": Number(165), "styles": Array([]), "text": String(" changes\n")})]), "n": Number(8), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(64), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":113,"op":"copy"},{"ln":114,"n":44,"op":"copy"},{"lines":[{"ln":158,"styles":[],"text":" /// need special handling by us though.\n"},{"ln":159,"styles":[],"text":" pub fn config_changed(&mut self, changes: &ConfigChanges) {\n"},{"ln":160,"styles":[],"text":" trace!(\n"},{"ln":161,"styles":[],"text":" \"{} 'config_changed' {} '{}': {:?}\",\n"},{"ln":162,"styles":[],"text":" gettext(\"Handling\"),\n"},{"ln":163,"styles":[],"text":" gettext(\"for EditView\"),\n"},{"ln":164,"styles":[],"text":" self.view_id,\n"},{"ln":165,"styles":[],"text":" changes\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":64,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 113, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " /// need special handling by us though.\n", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {\n", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",\n", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),\n", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),\n", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes\n", cursor: [], styles: [], line_num: Some(165) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 64, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 113, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " /// need special handling by us though.\n", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {\n", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",\n", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),\n", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),\n", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes\n", cursor: [], styles: [], line_num: Some(165) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 64, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 113, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " /// need special handling by us though.\n", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {\n", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",\n", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),\n", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),\n", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes\n", cursor: [], styles: [], line_num: Some(165) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 64, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }, Line { text: " None => gettext(\"Untitled\"),", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };", cursor: [], styles: [], line_num: Some(139) }, Line { text: "", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);", cursor: [], styles: [], line_num: Some(145) }, Line { text: "", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),", cursor: [], styles: [], line_num: Some(149) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }", cursor: [], styles: [], line_num: Some(154) }, Line { text: "", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t", cursor: [], styles: [], line_num: Some(157) }], old_invalid_before: 0, old_invalid_after: 1070, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:19Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 113, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " /// need special handling by us though.\n", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {\n", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(\n", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",\n", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),\n", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),\n", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,\n", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes\n", cursor: [], styles: [], line_num: Some(165) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 64, lines: [] }]
[2019-06-05T21:37:19Z INFO xrl::cache] copying 113 lines
[2019-06-05T21:37:19Z INFO xrl::cache] copying 44 lines
[2019-06-05T21:37:19Z INFO xrl::cache] inserting 8 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 64 lines
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 123 171
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[123,171],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(123), Number(171)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(123), Number(171)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(123), Number(171)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[123,171],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=88
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":121,"op":"copy"},{"ln":122,"n":44,"op":"copy"},{"lines":[{"ln":166,"styles":[],"text":" );\n"},{"ln":167,"styles":[],"text":"\n"},{"ln":168,"styles":[],"text":" if let Some(font_size) = changes.font_size {\n"},{"ln":169,"styles":[],"text":" let pango_ctx = self.view_item.get_pango_ctx();\n"},{"ln":170,"styles":[],"text":" self.edit_font\n"},{"ln":171,"styles":[],"text":" .font_desc\n"},{"ln":172,"styles":[],"text":" .set_size(font_size as i32 * pango::SCALE);\n"},{"ln":173,"styles":[],"text":" // We've set the new fontsize previously, now we have to regenerate the font height/width etc.\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":56,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(121), "op": String("copy")}), Object({"ln": Number(122), "n": Number(44), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(166), "styles": Array([]), "text": String(" );\n")}), Object({"ln": Number(167), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(168), "styles": Array([]), "text": String(" if let Some(font_size) = changes.font_size {\n")}), Object({"ln": Number(169), "styles": Array([]), "text": String(" let pango_ctx = self.view_item.get_pango_ctx();\n")}), Object({"ln": Number(170), "styles": Array([]), "text": String(" self.edit_font\n")}), Object({"ln": Number(171), "styles": Array([]), "text": String(" .font_desc\n")}), Object({"ln": Number(172), "styles": Array([]), "text": String(" .set_size(font_size as i32 * pango::SCALE);\n")}), Object({"ln": Number(173), "styles": Array([]), "text": String(" // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.\n")})]), "n": Number(8), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(56), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":121,"op":"copy"},{"ln":122,"n":44,"op":"copy"},{"lines":[{"ln":166,"styles":[],"text":" );\n"},{"ln":167,"styles":[],"text":"\n"},{"ln":168,"styles":[],"text":" if let Some(font_size) = changes.font_size {\n"},{"ln":169,"styles":[],"text":" let pango_ctx = self.view_item.get_pango_ctx();\n"},{"ln":170,"styles":[],"text":" self.edit_font\n"},{"ln":171,"styles":[],"text":" .font_desc\n"},{"ln":172,"styles":[],"text":" .set_size(font_size as i32 * pango::SCALE);\n"},{"ln":173,"styles":[],"text":" // We've set the new fontsize previously, now we have to regenerate the font height/width etc.\n"}],"n":8,"op":"ins"},{"n":998,"op":"invalidate"},{"n":56,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 121, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(166) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(167) }, Line { text: " if let Some(font_size) = changes.font_size {\n", cursor: [], styles: [], line_num: Some(168) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(169) }, Line { text: " self.edit_font\n", cursor: [], styles: [], line_num: Some(170) }, Line { text: " .font_desc\n", cursor: [], styles: [], line_num: Some(171) }, Line { text: " .set_size(font_size as i32 * pango::SCALE);\n", cursor: [], styles: [], line_num: Some(172) }, Line { text: " // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.\n", cursor: [], styles: [], line_num: Some(173) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 56, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 121, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(166) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(167) }, Line { text: " if let Some(font_size) = changes.font_size {\n", cursor: [], styles: [], line_num: Some(168) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(169) }, Line { text: " self.edit_font\n", cursor: [], styles: [], line_num: Some(170) }, Line { text: " .font_desc\n", cursor: [], styles: [], line_num: Some(171) }, Line { text: " .set_size(font_size as i32 * pango::SCALE);\n", cursor: [], styles: [], line_num: Some(172) }, Line { text: " // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.\n", cursor: [], styles: [], line_num: Some(173) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 56, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 121, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(166) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(167) }, Line { text: " if let Some(font_size) = changes.font_size {\n", cursor: [], styles: [], line_num: Some(168) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(169) }, Line { text: " self.edit_font\n", cursor: [], styles: [], line_num: Some(170) }, Line { text: " .font_desc\n", cursor: [], styles: [], line_num: Some(171) }, Line { text: " .set_size(font_size as i32 * pango::SCALE);\n", cursor: [], styles: [], line_num: Some(172) }, Line { text: " // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.\n", cursor: [], styles: [], line_num: Some(173) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 56, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }, Line { text: " None => gettext(\"Untitled\"),", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };", cursor: [], styles: [], line_num: Some(139) }, Line { text: "", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);", cursor: [], styles: [], line_num: Some(145) }, Line { text: "", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),", cursor: [], styles: [], line_num: Some(149) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }", cursor: [], styles: [], line_num: Some(154) }, Line { text: "", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t", cursor: [], styles: [], line_num: Some(157) }, Line { text: " /// need special handling by us though.", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes", cursor: [], styles: [], line_num: Some(165) }], old_invalid_before: 0, old_invalid_after: 1062, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:19Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 121, lines: [] }, Operation { operation_type: Copy_, nb_lines: 44, lines: [] }, Operation { operation_type: Insert, nb_lines: 8, lines: [Line { text: " );\n", cursor: [], styles: [], line_num: Some(166) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(167) }, Line { text: " if let Some(font_size) = changes.font_size {\n", cursor: [], styles: [], line_num: Some(168) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(169) }, Line { text: " self.edit_font\n", cursor: [], styles: [], line_num: Some(170) }, Line { text: " .font_desc\n", cursor: [], styles: [], line_num: Some(171) }, Line { text: " .set_size(font_size as i32 * pango::SCALE);\n", cursor: [], styles: [], line_num: Some(172) }, Line { text: " // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.\n", cursor: [], styles: [], line_num: Some(173) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 56, lines: [] }]
[2019-06-05T21:37:19Z INFO xrl::cache] copying 121 lines
[2019-06-05T21:37:19Z INFO xrl::cache] copying 44 lines
[2019-06-05T21:37:19Z INFO xrl::cache] inserting 8 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 56 lines
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2732.674593387804/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 130 178
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[130,178],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(130), Number(178)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'linecount_draw' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(130), Number(178)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(130), Number(178)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[130,178],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE editview::edit_view] Drawing EditView vertical adjustment: 2848.316329561634/25772; horizontal adjustment: 0/1988
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=88
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":128,"op":"copy"},{"ln":129,"n":45,"op":"copy"},{"lines":[{"ln":174,"styles":[],"text":" self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n"},{"ln":175,"styles":[],"text":" self.view_item.edit_area.queue_draw();\n"},{"ln":176,"styles":[],"text":" }\n"},{"ln":177,"styles":[],"text":"\n"},{"ln":178,"styles":[],"text":" if let Some(font_face) = &changes.font_face {\n"},{"ln":179,"styles":[],"text":" debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n"},{"ln":180,"styles":[],"text":" let pango_ctx = self.view_item.get_pango_ctx();\n"}],"n":7,"op":"ins"},{"n":998,"op":"invalidate"},{"n":49,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(128), "op": String("copy")}), Object({"ln": Number(129), "n": Number(45), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(174), "styles": Array([]), "text": String(" self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n")}), Object({"ln": Number(175), "styles": Array([]), "text": String(" self.view_item.edit_area.queue_draw();\n")}), Object({"ln": Number(176), "styles": Array([]), "text": String(" }\n")}), Object({"ln": Number(177), "styles": Array([]), "text": String("\n")}), Object({"ln": Number(178), "styles": Array([]), "text": String(" if let Some(font_face) = &changes.font_face {\n")}), Object({"ln": Number(179), "styles": Array([]), "text": String(" debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n")}), Object({"ln": Number(180), "styles": Array([]), "text": String(" let pango_ctx = self.view_item.get_pango_ctx();\n")})]), "n": Number(7), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(49), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":128,"op":"copy"},{"ln":129,"n":45,"op":"copy"},{"lines":[{"ln":174,"styles":[],"text":" self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n"},{"ln":175,"styles":[],"text":" self.view_item.edit_area.queue_draw();\n"},{"ln":176,"styles":[],"text":" }\n"},{"ln":177,"styles":[],"text":"\n"},{"ln":178,"styles":[],"text":" if let Some(font_face) = &changes.font_face {\n"},{"ln":179,"styles":[],"text":" debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n"},{"ln":180,"styles":[],"text":" let pango_ctx = self.view_item.get_pango_ctx();\n"}],"n":7,"op":"ins"},{"n":998,"op":"invalidate"},{"n":49,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 128, lines: [] }, Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Insert, nb_lines: 7, lines: [Line { text: " self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n", cursor: [], styles: [], line_num: Some(174) }, Line { text: " self.view_item.edit_area.queue_draw();\n", cursor: [], styles: [], line_num: Some(175) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(176) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(177) }, Line { text: " if let Some(font_face) = &changes.font_face {\n", cursor: [], styles: [], line_num: Some(178) }, Line { text: " debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n", cursor: [], styles: [], line_num: Some(179) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(180) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 49, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 128, lines: [] }, Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Insert, nb_lines: 7, lines: [Line { text: " self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n", cursor: [], styles: [], line_num: Some(174) }, Line { text: " self.view_item.edit_area.queue_draw();\n", cursor: [], styles: [], line_num: Some(175) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(176) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(177) }, Line { text: " if let Some(font_face) = &changes.font_face {\n", cursor: [], styles: [], line_num: Some(178) }, Line { text: " debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n", cursor: [], styles: [], line_num: Some(179) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(180) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 49, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 128, lines: [] }, Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Insert, nb_lines: 7, lines: [Line { text: " self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n", cursor: [], styles: [], line_num: Some(174) }, Line { text: " self.view_item.edit_area.queue_draw();\n", cursor: [], styles: [], line_num: Some(175) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(176) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(177) }, Line { text: " if let Some(font_face) = &changes.font_face {\n", cursor: [], styles: [], line_num: Some(178) }, Line { text: " debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n", cursor: [], styles: [], line_num: Some(179) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(180) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 49, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }, Line { text: " None => gettext(\"Untitled\"),", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };", cursor: [], styles: [], line_num: Some(139) }, Line { text: "", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);", cursor: [], styles: [], line_num: Some(145) }, Line { text: "", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),", cursor: [], styles: [], line_num: Some(149) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }", cursor: [], styles: [], line_num: Some(154) }, Line { text: "", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t", cursor: [], styles: [], line_num: Some(157) }, Line { text: " /// need special handling by us though.", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {", cursor: [], styles: [], line_num: Some(159) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(160) }, Line { text: " \"{} \'config_changed\' {} \'{}\': {:?}\",", cursor: [], styles: [], line_num: Some(161) }, Line { text: " gettext(\"Handling\"),", cursor: [], styles: [], line_num: Some(162) }, Line { text: " gettext(\"for EditView\"),", cursor: [], styles: [], line_num: Some(163) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(164) }, Line { text: " changes", cursor: [], styles: [], line_num: Some(165) }, Line { text: " );", cursor: [], styles: [], line_num: Some(166) }, Line { text: "", cursor: [], styles: [], line_num: Some(167) }, Line { text: " if let Some(font_size) = changes.font_size {", cursor: [], styles: [], line_num: Some(168) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(169) }, Line { text: " self.edit_font", cursor: [], styles: [], line_num: Some(170) }, Line { text: " .font_desc", cursor: [], styles: [], line_num: Some(171) }, Line { text: " .set_size(font_size as i32 * pango::SCALE);", cursor: [], styles: [], line_num: Some(172) }, Line { text: " // We\'ve set the new fontsize previously, now we have to regenerate the font height/width etc.", cursor: [], styles: [], line_num: Some(173) }], old_invalid_before: 0, old_invalid_after: 1054, new_lines: [], new_invalid_before: 0, new_invalid_after: 0 }
[2019-06-05T21:37:19Z TRACE xrl::cache] operations to be applied: [Operation { operation_type: Copy_, nb_lines: 128, lines: [] }, Operation { operation_type: Copy_, nb_lines: 45, lines: [] }, Operation { operation_type: Insert, nb_lines: 7, lines: [Line { text: " self.edit_font = Font::new(&pango_ctx, self.edit_font.font_desc.clone());\n", cursor: [], styles: [], line_num: Some(174) }, Line { text: " self.view_item.edit_area.queue_draw();\n", cursor: [], styles: [], line_num: Some(175) }, Line { text: " }\n", cursor: [], styles: [], line_num: Some(176) }, Line { text: "\n", cursor: [], styles: [], line_num: Some(177) }, Line { text: " if let Some(font_face) = &changes.font_face {\n", cursor: [], styles: [], line_num: Some(178) }, Line { text: " debug!(\"{}: {}\", gettext(\"Setting edit font to\"), font_face);\n", cursor: [], styles: [], line_num: Some(179) }, Line { text: " let pango_ctx = self.view_item.get_pango_ctx();\n", cursor: [], styles: [], line_num: Some(180) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 49, lines: [] }]
[2019-06-05T21:37:19Z INFO xrl::cache] copying 128 lines
[2019-06-05T21:37:19Z INFO xrl::cache] copying 45 lines
[2019-06-05T21:37:19Z INFO xrl::cache] inserting 7 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 998 lines
[2019-06-05T21:37:19Z INFO xrl::cache] invalidating 49 lines
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'get_text_size' for EditView 'view-id-1'
[2019-06-05T21:37:19Z TRACE editview::edit_view] Setting title for EditView 'view-id-1': edit_view.rs
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update_visible_scroll_region' for EditView 'view-id-1'
[2019-06-05T21:37:19Z DEBUG editview::edit_view] Updating visible scroll region 135 183
[2019-06-05T21:37:19Z INFO xrl::client] >>> notification: method=edit, params={"method":"scroll","params":[135,183],"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] forwarding notification to endpoint (method=edit, params=Object({"method": String("scroll"), "params": Array([Number(135), Number(183)]), "view_id": String("view-id-1")}))
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit external
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] sending notification: Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(135), Number(183)]), "view_id": String("view-id-1")}) }
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] sending message to remote peer: Notification(Notification { method: "edit", params: Object({"method": String("scroll"), "params": Array([Number(135), Number(183)]), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] >>> {"method":"edit","params":{"method":"scroll","params":[135,183],"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] writing; remaining=88
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] acknowledging notification.
[2019-06-05T21:37:19Z WARN xrl::protocol::endpoint] Failed to send ack to client: ()
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Writable Token(4194305)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(0)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::notifier] Notifier::notify; id=0x5618705942b0
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] -> submit internal; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::pool] signal_work -- notify; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] event Readable Token(4194303)
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 3 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 1 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] Task::run; state=Running
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> wakeup; idx=6
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling stream
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(6)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=6
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=6
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE xrl::protocol::codec] <<< {"method":"update","params":{"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":133,"op":"copy"},{"ln":134,"n":47,"op":"copy"},{"lines":[{"ln":181,"styles":[],"text":" self.edit_font = Font::new(\n"},{"ln":182,"styles":[],"text":" &pango_ctx,\n"},{"ln":183,"styles":[],"text":" FontDescription::from_string(&format!(\n"},{"ln":184,"styles":[],"text":" \"{} {}\",\n"},{"ln":185,"styles":[],"text":" font_face,\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":44,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] frame decoded from buffer
[2019-06-05T21:37:19Z DEBUG xrl::protocol::endpoint] handling message from remote peer Notification(Notification { method: "update", params: Object({"update": Object({"annotations": Array([Object({"n": Number(0), "payloads": Null, "ranges": Array([]), "type": String("selection")})]), "ops": Array([Object({"ln": Number(1), "n": Number(133), "op": String("copy")}), Object({"ln": Number(134), "n": Number(47), "op": String("copy")}), Object({"lines": Array([Object({"ln": Number(181), "styles": Array([]), "text": String(" self.edit_font = Font::new(\n")}), Object({"ln": Number(182), "styles": Array([]), "text": String(" &pango_ctx,\n")}), Object({"ln": Number(183), "styles": Array([]), "text": String(" FontDescription::from_string(&format!(\n")}), Object({"ln": Number(184), "styles": Array([]), "text": String(" \"{} {}\",\n")}), Object({"ln": Number(185), "styles": Array([]), "text": String(" font_face,\n")})]), "n": Number(5), "op": String("ins")}), Object({"n": Number(998), "op": String("invalidate")}), Object({"n": Number(44), "op": String("invalidate")})]), "pristine": Bool(true)}), "view_id": String("view-id-1")}) })
[2019-06-05T21:37:19Z INFO xrl::frontend] <<< notification: method=update, params={"update":{"annotations":[{"n":0,"payloads":null,"ranges":[],"type":"selection"}],"ops":[{"ln":1,"n":133,"op":"copy"},{"ln":134,"n":47,"op":"copy"},{"lines":[{"ln":181,"styles":[],"text":" self.edit_font = Font::new(\n"},{"ln":182,"styles":[],"text":" &pango_ctx,\n"},{"ln":183,"styles":[],"text":" FontDescription::from_string(&format!(\n"},{"ln":184,"styles":[],"text":" \"{} {}\",\n"},{"ln":185,"styles":[],"text":" font_face,\n"}],"n":5,"op":"ins"},{"n":998,"op":"invalidate"},{"n":44,"op":"invalidate"}],"pristine":true},"view_id":"view-id-1"}
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_read] attempting to decode a frame
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling XiEvent: Update(Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 133, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " self.edit_font = Font::new(\n", cursor: [], styles: [], line_num: Some(181) }, Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(182) }, Line { text: " FontDescription::from_string(&format!(\n", cursor: [], styles: [], line_num: Some(183) }, Line { text: " \"{} {}\",\n", cursor: [], styles: [], line_num: Some(184) }, Line { text: " font_face,\n", cursor: [], styles: [], line_num: Some(185) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 44, lines: [] }], pristine: true, view_id: ViewId(1) })
[2019-06-05T21:37:19Z TRACE gxi::main_win] Handling 'update': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 133, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " self.edit_font = Font::new(\n", cursor: [], styles: [], line_num: Some(181) }, Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(182) }, Line { text: " FontDescription::from_string(&format!(\n", cursor: [], styles: [], line_num: Some(183) }, Line { text: " \"{} {}\",\n", cursor: [], styles: [], line_num: Some(184) }, Line { text: " font_face,\n", cursor: [], styles: [], line_num: Some(185) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 44, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z DEBUG tokio_reactor::registration] scheduling Read for: 0
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new message in the stream
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending requests
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling pending notification tasks
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client requests channel
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new request from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] polling client notifications channel
[2019-06-05T21:37:19Z TRACE editview::edit_view] Handling 'update' for EditView 'view-id-1': Update { rev: None, operations: [Operation { operation_type: Copy_, nb_lines: 133, lines: [] }, Operation { operation_type: Copy_, nb_lines: 47, lines: [] }, Operation { operation_type: Insert, nb_lines: 5, lines: [Line { text: " self.edit_font = Font::new(\n", cursor: [], styles: [], line_num: Some(181) }, Line { text: " &pango_ctx,\n", cursor: [], styles: [], line_num: Some(182) }, Line { text: " FontDescription::from_string(&format!(\n", cursor: [], styles: [], line_num: Some(183) }, Line { text: " \"{} {}\",\n", cursor: [], styles: [], line_num: Some(184) }, Line { text: " font_face,\n", cursor: [], styles: [], line_num: Some(185) }] }, Operation { operation_type: Invalidate, nb_lines: 998, lines: [] }, Operation { operation_type: Invalidate, nb_lines: 44, lines: [] }], pristine: true, view_id: ViewId(1) }
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] no new notification from client
[2019-06-05T21:37:19Z TRACE xrl::protocol::endpoint] flushing stream
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] flushing framed transport
[2019-06-05T21:37:19Z TRACE tokio_io::_tokio_codec::framed_write] framed transport flushed
[2019-06-05T21:37:19Z TRACE xrl::cache] updating the line cache
[2019-06-05T21:37:19Z TRACE tokio_threadpool::task] -> not ready
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] Worker::sleep; worker=WorkerId(7)
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] sleeping -- push to stack; idx=7
[2019-06-05T21:37:19Z TRACE tokio_threadpool::worker] -> starting to sleep; idx=7
[2019-06-05T21:37:19Z TRACE tokio_reactor] loop process - 0 events, 0.000s
[2019-06-05T21:37:19Z TRACE xrl::cache] cache state before: UpdateHelper { old_lines: [Line { text: "use crate::fonts::Font;", cursor: [0], styles: [], line_num: Some(1) }, Line { text: "use crate::main_state::{MainState, Settings};", cursor: [], styles: [], line_num: Some(2) }, Line { text: "use crate::theme::{color_from_u32, set_margin_source_color, set_source_color, PangoColor};", cursor: [], styles: [], line_num: Some(3) }, Line { text: "use crate::view_item::*;", cursor: [], styles: [], line_num: Some(4) }, Line { text: "use cairo::Context;", cursor: [], styles: [], line_num: Some(5) }, Line { text: "use futures::future;", cursor: [], styles: [], line_num: Some(6) }, Line { text: "use gdk::enums::key;", cursor: [], styles: [], line_num: Some(7) }, Line { text: "use gdk::*;", cursor: [], styles: [], line_num: Some(8) }, Line { text: "use gettextrs::gettext;", cursor: [], styles: [], line_num: Some(9) }, Line { text: "use glib::source;", cursor: [], styles: [], line_num: Some(10) }, Line { text: "use gtk::{self, *};", cursor: [], styles: [], line_num: Some(11) }, Line { text: "use log::{debug, trace, warn};", cursor: [], styles: [], line_num: Some(12) }, Line { text: "use pango::{self, ContextExt, LayoutExt, *};", cursor: [], styles: [], line_num: Some(13) }, Line { text: "use pangocairo::functions::*;", cursor: [], styles: [], line_num: Some(14) }, Line { text: "use std::cell::RefCell;", cursor: [], styles: [], line_num: Some(15) }, Line { text: "use std::cmp::{max, min};", cursor: [], styles: [], line_num: Some(16) }, Line { text: "use std::rc::Rc;", cursor: [], styles: [], line_num: Some(17) }, Line { text: "use std::u32;", cursor: [], styles: [], line_num: Some(18) }, Line { text: "use xrl::StyleDef as StyleSpan;", cursor: [], styles: [], line_num: Some(19) }, Line { text: "use xrl::{Client, ConfigChanges, Line, LineCache, Query, Status, Update, ViewId};", cursor: [], styles: [], line_num: Some(20) }, Line { text: "", cursor: [], styles: [], line_num: Some(21) }, Line { text: "/// Returned by `EditView::get_text_size()` and used to adjust the scrollbars.", cursor: [], styles: [], line_num: Some(22) }, Line { text: "pub struct TextSize {", cursor: [], styles: [], line_num: Some(23) }, Line { text: " /// The height of the entire document", cursor: [], styles: [], line_num: Some(24) }, Line { text: " height: f64,", cursor: [], styles: [], line_num: Some(25) }, Line { text: " /// The width of the entire document", cursor: [], styles: [], line_num: Some(26) }, Line { text: " width: f64,", cursor: [], styles: [], line_num: Some(27) }, Line { text: " /// If the height of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(28) }, Line { text: " contained_height: bool,", cursor: [], styles: [], line_num: Some(29) }, Line { text: " /// If the width of the document is contained within the edit_area (if it\'s smaller)", cursor: [], styles: [], line_num: Some(30) }, Line { text: " contained_width: bool,", cursor: [], styles: [], line_num: Some(31) }, Line { text: "}", cursor: [], styles: [], line_num: Some(32) }, Line { text: "", cursor: [], styles: [], line_num: Some(33) }, Line { text: "/// The EditView is the part of gxi that does the actual editing. This is where you edit documents.", cursor: [], styles: [], line_num: Some(34) }, Line { text: "pub struct EditView {", cursor: [], styles: [], line_num: Some(35) }, Line { text: " core: Client,", cursor: [], styles: [], line_num: Some(36) }, Line { text: " main_state: Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(37) }, Line { text: " pub view_id: ViewId,", cursor: [], styles: [], line_num: Some(38) }, Line { text: " pub file_name: Option<String>,", cursor: [], styles: [], line_num: Some(39) }, Line { text: " pub pristine: bool,", cursor: [], styles: [], line_num: Some(40) }, Line { text: " pub root_widget: Grid,", cursor: [], styles: [], line_num: Some(41) }, Line { text: " pub top_bar: TopBar,", cursor: [], styles: [], line_num: Some(42) }, Line { text: " pub view_item: ViewItem,", cursor: [], styles: [], line_num: Some(43) }, Line { text: " line_cache: LineCache,", cursor: [], styles: [], line_num: Some(44) }, Line { text: " pub(crate) find_replace: FindReplace,", cursor: [], styles: [], line_num: Some(45) }, Line { text: " edit_font: Font,", cursor: [], styles: [], line_num: Some(46) }, Line { text: " interface_font: Font,", cursor: [], styles: [], line_num: Some(47) }, Line { text: " im_context: IMContextSimple,", cursor: [], styles: [], line_num: Some(48) }, Line { text: "}", cursor: [], styles: [], line_num: Some(49) }, Line { text: "", cursor: [], styles: [], line_num: Some(50) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(51) }, Line { text: " /// Initialises a new EditView. Sets up scrollbars, the actual editing area, the fonts,", cursor: [], styles: [], line_num: Some(52) }, Line { text: " /// the syntax lang and connects all events which might happen during usage (e.g. scrolling)", cursor: [], styles: [], line_num: Some(53) }, Line { text: " pub fn new(", cursor: [], styles: [], line_num: Some(54) }, Line { text: " main_state: &Rc<RefCell<MainState>>,", cursor: [], styles: [], line_num: Some(55) }, Line { text: " core: &Client,", cursor: [], styles: [], line_num: Some(56) }, Line { text: " // The FindReplace dialog is relative to this", cursor: [], styles: [], line_num: Some(57) }, Line { text: " hamburger_button: &MenuButton,", cursor: [], styles: [], line_num: Some(58) }, Line { text: " file_name: Option<String>,", cursor: [], styles: [], line_num: Some(59) }, Line { text: " view_id: ViewId,", cursor: [], styles: [], line_num: Some(60) }, Line { text: " parent: &ApplicationWindow,", cursor: [], styles: [], line_num: Some(61) }, Line { text: " ) -> Rc<RefCell<Self>> {", cursor: [], styles: [], line_num: Some(62) }, Line { text: " trace!(\"{}, \'{}\'\", gettext(\"Creating new EditView\"), view_id);", cursor: [], styles: [], line_num: Some(63) }, Line { text: " let view_item = ViewItem::new();", cursor: [], styles: [], line_num: Some(64) }, Line { text: " let find_replace = FindReplace::new(&hamburger_button);", cursor: [], styles: [], line_num: Some(65) }, Line { text: " let pango_ctx = view_item.get_pango_ctx();", cursor: [], styles: [], line_num: Some(66) }, Line { text: " let im_context = IMContextSimple::new();", cursor: [], styles: [], line_num: Some(67) }, Line { text: " let interface_font = Self::get_interface_font(&main_state.borrow().settings, &pango_ctx);", cursor: [], styles: [], line_num: Some(68) }, Line { text: "", cursor: [], styles: [], line_num: Some(69) }, Line { text: " let edit_view = Rc::new(RefCell::new(Self {", cursor: [], styles: [], line_num: Some(70) }, Line { text: " core: core.clone(),", cursor: [], styles: [], line_num: Some(71) }, Line { text: " main_state: main_state.clone(),", cursor: [], styles: [], line_num: Some(72) }, Line { text: " file_name,", cursor: [], styles: [], line_num: Some(73) }, Line { text: " pristine: true,", cursor: [], styles: [], line_num: Some(74) }, Line { text: " view_id,", cursor: [], styles: [], line_num: Some(75) }, Line { text: " root_widget: view_item.root_box.clone(),", cursor: [], styles: [], line_num: Some(76) }, Line { text: " top_bar: TopBar::new(),", cursor: [], styles: [], line_num: Some(77) }, Line { text: " view_item: view_item.clone(),", cursor: [], styles: [], line_num: Some(78) }, Line { text: " line_cache: LineCache::default(),", cursor: [], styles: [], line_num: Some(79) }, Line { text: " edit_font: Self::get_edit_font(&pango_ctx, &main_state.borrow().settings.edit_font),", cursor: [], styles: [], line_num: Some(80) }, Line { text: " interface_font,", cursor: [], styles: [], line_num: Some(81) }, Line { text: " find_replace: find_replace.clone(),", cursor: [], styles: [], line_num: Some(82) }, Line { text: " im_context: im_context.clone(),", cursor: [], styles: [], line_num: Some(83) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(84) }, Line { text: "", cursor: [], styles: [], line_num: Some(85) }, Line { text: " edit_view.borrow_mut().update_title();", cursor: [], styles: [], line_num: Some(86) }, Line { text: "", cursor: [], styles: [], line_num: Some(87) }, Line { text: " view_item.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(88) }, Line { text: " find_replace.connect_events(&edit_view);", cursor: [], styles: [], line_num: Some(89) }, Line { text: " EditView::connect_im_events(&edit_view, &im_context);", cursor: [], styles: [], line_num: Some(90) }, Line { text: " //edit_view.borrow().connect_gschema(&gschema);", cursor: [], styles: [], line_num: Some(91) }, Line { text: "", cursor: [], styles: [], line_num: Some(92) }, Line { text: " im_context.set_client_window(parent.get_window().as_ref());", cursor: [], styles: [], line_num: Some(93) }, Line { text: "", cursor: [], styles: [], line_num: Some(94) }, Line { text: " edit_view", cursor: [], styles: [], line_num: Some(95) }, Line { text: " }", cursor: [], styles: [], line_num: Some(96) }, Line { text: "", cursor: [], styles: [], line_num: Some(97) }, Line { text: " fn connect_im_events(edit_view: &Rc<RefCell<EditView>>, im_context: &IMContextSimple) {", cursor: [], styles: [], line_num: Some(98) }, Line { text: " im_context.connect_commit(enclose!((edit_view) move |_, text| {", cursor: [], styles: [], line_num: Some(99) }, Line { text: " let ev = edit_view.borrow();", cursor: [], styles: [], line_num: Some(100) }, Line { text: " ev.core.insert(ev.view_id, text);", cursor: [], styles: [], line_num: Some(101) }, Line { text: " }));", cursor: [], styles: [], line_num: Some(102) }, Line { text: " }", cursor: [], styles: [], line_num: Some(103) }, Line { text: "", cursor: [], styles: [], line_num: Some(104) }, Line { text: " fn get_interface_font(settings: &Settings, pango_ctx: &pango::Context) -> Font {", cursor: [], styles: [], line_num: Some(105) }, Line { text: " Font::new(", cursor: [], styles: [], line_num: Some(106) }, Line { text: " &pango_ctx,", cursor: [], styles: [], line_num: Some(107) }, Line { text: " FontDescription::from_string(&settings.interface_font),", cursor: [], styles: [], line_num: Some(108) }, Line { text: " )", cursor: [], styles: [], line_num: Some(109) }, Line { text: " }", cursor: [], styles: [], line_num: Some(110) }, Line { text: "", cursor: [], styles: [], line_num: Some(111) }, Line { text: " fn get_edit_font(pango_ctx: &pango::Context, font: &str) -> Font {", cursor: [], styles: [], line_num: Some(112) }, Line { text: " Font::new(pango_ctx, FontDescription::from_string(&font))", cursor: [], styles: [], line_num: Some(113) }, Line { text: " }", cursor: [], styles: [], line_num: Some(114) }, Line { text: "}", cursor: [], styles: [], line_num: Some(115) }, Line { text: "", cursor: [], styles: [], line_num: Some(116) }, Line { text: "impl EditView {", cursor: [], styles: [], line_num: Some(117) }, Line { text: " /// Set the name of the file the EditView is currently editing and calls [update_title](struct.EditView.html#method.update_title)", cursor: [], styles: [], line_num: Some(118) }, Line { text: " pub fn set_file(&mut self, file_name: &str) {", cursor: [], styles: [], line_num: Some(119) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(120) }, Line { text: " \"{} \'FindReplace\' {} \'{}\'\",", cursor: [], styles: [], line_num: Some(121) }, Line { text: " gettext(\"Connecting\"),", cursor: [], styles: [], line_num: Some(122) }, Line { text: " gettext(\"events for EditView\"),", cursor: [], styles: [], line_num: Some(123) }, Line { text: " self.view_id", cursor: [], styles: [], line_num: Some(124) }, Line { text: " );", cursor: [], styles: [], line_num: Some(125) }, Line { text: " self.file_name = Some(file_name.to_string());", cursor: [], styles: [], line_num: Some(126) }, Line { text: " self.update_title();", cursor: [], styles: [], line_num: Some(127) }, Line { text: " }", cursor: [], styles: [], line_num: Some(128) }, Line { text: "", cursor: [], styles: [], line_num: Some(129) }, Line { text: " /// Update the title of the EditView to the currently set file_name", cursor: [], styles: [], line_num: Some(130) }, Line { text: " fn update_title(&self) {", cursor: [], styles: [], line_num: Some(131) }, Line { text: " let title = match self.file_name {", cursor: [], styles: [], line_num: Some(132) }, Line { text: " Some(ref f) => f", cursor: [], styles: [], line_num: Some(133) }, Line { text: " .split(::std::path::MAIN_SEPARATOR)", cursor: [], styles: [], line_num: Some(134) }, Line { text: " .last()", cursor: [], styles: [], line_num: Some(135) }, Line { text: " .unwrap_or(&gettext(\"Untitled\"))", cursor: [], styles: [], line_num: Some(136) }, Line { text: " .to_string(),", cursor: [], styles: [], line_num: Some(137) }, Line { text: " None => gettext(\"Untitled\"),", cursor: [], styles: [], line_num: Some(138) }, Line { text: " };", cursor: [], styles: [], line_num: Some(139) }, Line { text: "", cursor: [], styles: [], line_num: Some(140) }, Line { text: " let mut full_title = String::new();", cursor: [], styles: [], line_num: Some(141) }, Line { text: " if !self.pristine {", cursor: [], styles: [], line_num: Some(142) }, Line { text: " full_title.push(\'*\');", cursor: [], styles: [], line_num: Some(143) }, Line { text: " }", cursor: [], styles: [], line_num: Some(144) }, Line { text: " full_title.push_str(&title);", cursor: [], styles: [], line_num: Some(145) }, Line { text: "", cursor: [], styles: [], line_num: Some(146) }, Line { text: " trace!(", cursor: [], styles: [], line_num: Some(147) }, Line { text: " \"{} \'{}\': {}\",", cursor: [], styles: [], line_num: Some(148) }, Line { text: " gettext(\"Setting title for EditView\"),", cursor: [], styles: [], line_num: Some(149) }, Line { text: " self.view_id,", cursor: [], styles: [], line_num: Some(150) }, Line { text: " full_title", cursor: [], styles: [], line_num: Some(151) }, Line { text: " );", cursor: [], styles: [], line_num: Some(152) }, Line { text: " self.top_bar.label.set_text(&full_title);", cursor: [], styles: [], line_num: Some(153) }, Line { text: " }", cursor: [], styles: [], line_num: Some(154) }, Line { text: "", cursor: [], styles: [], line_num: Some(155) }, Line { text: " /// If xi-editor sends us a [config_changed](https://xi-editor.io/docs/frontend-protocol.html#config_changed)", cursor: [], styles: [], line_num: Some(156) }, Line { text: " /// msg we process it here, e.g. setting the font face/size xi-editor tells us. Most configs don\'t", cursor: [], styles: [], line_num: Some(157) }, Line { text: " /// need special handling by us though.", cursor: [], styles: [], line_num: Some(158) }, Line { text: " pub fn config_changed(&mut self, changes: &ConfigChanges) {", cursor: [], styles: [], line_num: Some(159) }, Line { t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment