def watch(individual_files = [], options = {})
@inferred_directories = []
options, individual_files = individual_files, [] if individual_files.is_a?(Hash)
update_stylesheets(individual_files) unless options[:skip_initial_update]
directories = watched_paths
individual_files.each do |(source, _, _)|
source = File.expand_path(source)
@watched_files << Sass::Util.realpath(source).to_s
@inferred_directories << File.dirname(source)
end
directories += @inferred_directories
directories = remove_redundant_directories(directories)
unless Sass::Util.listen_geq_2?
directories = directories.select {|d| File.directory?(d) && File.writable?(d)}
end
listener_args = directories +
Array(options[:additional_watch_paths]) +
[{:relative_paths => false}]
poll = @options[:poll] || Sass::Util.windows?
if poll && Sass::Util.listen_geq_2?
listener_args.last[:force_polling] = true
end
listener = create_listener(*listener_args) do |modified, added, removed|
on_file_changed(individual_files, modified, added, removed)
yield(modified, added, removed) if block_given?
end
if poll && !Sass::Util.listen_geq_2?
listener.force_polling(true)
end
listen_to(listener)
end