class Torkify::Vim::Observer
Attributes
me[R]
quickfix[R]
split_error_threshold[R]
split_errors[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/torkify/vim/observer.rb, line 9 def initialize(options = {}) @vimserver = options[:server] @me = "vim" @split_errors = !!options[:split_errors] @split_error_threshold = options.fetch(:split_error_threshold, 30).to_i detect_server! true end
Public Instance Methods
detect_server!(first_time = false)
click to toggle source
# File lib/torkify/vim/observer.rb, line 19 def detect_server!(first_time = false) @quickfix ||= begin vim = if @vimserver Remote.new(@vimserver) else Remote.from_first_server end Quickfix::API.new(vim) rescue RemoteError => e Torkify.logger.error { "[#{me}] #{e}" } if first_time nil end end
errors_from_event(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 66 def errors_from_event(event) if split_errors && event.errors.length < split_error_threshold Torkify.logger.debug { "[#{me}] number of errors before splitting: #{event.errors.length}" } splitter = ErrorSplitter.new event.errors.each_with_object([]) { |error, split| split.concat(splitter.call(error)) } else event.errors end end
on_absorb(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 38 def on_absorb(event) quickfix.clear if quickfix self end
on_fail(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 48 def on_fail(event) on_pass_or_fail(event) self end
on_idle(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 33 def on_idle(event) detect_server! self end
on_pass(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 43 def on_pass(event) on_pass_or_fail(event) self end
on_pass_or_fail(event)
click to toggle source
# File lib/torkify/vim/observer.rb, line 53 def on_pass_or_fail(event) return unless quickfix populator = Quickfix::Populator.new(quickfix) populator.exclude File.basename(event.log_file.chomp('.log')) errors = errors_from_event(event) Torkify.logger.debug { "[#{me}] number of errors: #{errors.length}" } populator.populate errors quickfix.open if populator.errors_populated > 0 self end