module Middleman::PreviewServer

def start_file_watcher

def start_file_watcher
  return if @options[:"disable-watcher"]
  
  first_run = !@listener
  
  if first_run
    # Watcher Library
    require "listen"
    @listener = Listen.to(Dir.pwd, :relative_paths => true)
  end
  
  @listener.change do |modified, added, removed|
    added_and_modified = (modified + added)
    # See if the changed file is config.rb or lib/*.rb
    if needs_to_reload?(added_and_modified) || needs_to_reload?(removed)
      reload
    else
      added_and_modified.each do |path|
        app.files.did_change(path)
      end
      removed.each do |path|
        app.files.did_delete(path)
      end
    end
  end
  # Don't block this thread
  @listener.start(false) if first_run
end