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)

      # TODO: Keep better track of what depends on what
      # so we don't have to run a global update every time anything changes.
      # XXX The :additional_watch_paths option exists for Compass to use until
      # a deprecated feature is removed. It may be removed without warning.
      directories += Array(options[:additional_watch_paths])

      options = {
        :relative_paths => false,
        # The native windows listener is much slower than the polling option, according to
        # https://github.com/nex3/sass/commit/a3031856b22bc834a5417dedecb038b7be9b9e3e
        :force_polling => @options[:poll] || Sass::Util.windows?
      }

      listener = create_listener(*directories, options) do |modified, added, removed|
        on_file_changed(individual_files, modified, added, removed)
        yield(modified, added, removed) if block_given?
      end

      begin
        listener.start
        sleep
      rescue Interrupt
        # Squelch Interrupt for clean exit from Listen::Listener
      end
    end
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)

      # TODO: Keep better track of what depends on what
      # so we don't have to run a global update every time anything changes.
      # XXX The :additional_watch_paths option exists for Compass to use until
      # a deprecated feature is removed. It may be removed without warning.
      directories += Array(options[:additional_watch_paths])

      options = {
        :relative_paths => false,
        # The native windows listener is much slower than the polling option, according to
        # https://github.com/nex3/sass/commit/a3031856b22bc834a5417dedecb038b7be9b9e3e
        :force_polling => @options[:poll] || Sass::Util.windows?
      }

      listener = create_listener(*directories, options) do |modified, added, removed|
        on_file_changed(individual_files, modified, added, removed)
        yield(modified, added, removed) if block_given?
      end

      begin
        listener.start
        sleep
      rescue Interrupt
        # Squelch Interrupt for clean exit from Listen::Listener
      end
    end
Watches the template directory (or directories)
 and updates the CSS files whenever the related Sass/SCSS files change.
 `watch` never returns.

 Whenever a change is detected to a Sass/SCSS file in
 {file:SASS_REFERENCE.md#template_location-option `:template_location`},
 the corresponding CSS file in {file:SASS_REFERENCE.md#css_location-option `:css_location`}
 will be recompiled.
 The CSS files of any Sass/SCSS files that import the changed file will also be recompiled.

 Before the watching starts in earnest, `watch` calls \{#update\_stylesheets}.

 Note that `watch` uses the [Listen](http://github.com/guard/listen) library
 to monitor the filesystem for changes.
 Listen isn't loaded until `watch` is run.
 The version of Listen distributed with Sass is loaded by default,
 but if another version has already been loaded that will be used instead.

 @param individual_files [Array<(String, String[, String])>]
   A list of files to check for updates
   **in addition to those specified by the
   {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.**
   The first string in each pair is the location of the Sass/SCSS file,
   the second is the location of the CSS file that it should be compiled to.
   The third string, if provided, is the location of the Sourcemap file.
 @param options [Hash] The options that control how watching works.
 @option options [Boolean] :skip_initial_update
   Don't do an initial update when starting the watcher when true