class Solargraph::LanguageServer::Message::Workspace::DidChangeWatchedFiles

Constants

CHANGED
CREATED
DELETED

Public Instance Methods

process() click to toggle source
# File lib/solargraph/language_server/message/workspace/did_change_watched_files.rb, line 11
def process
  need_catalog = false
  to_create = []
  to_delete = []

  # @param change [Hash]
  params['changes'].each do |change|
    if change['type'] == CREATED
      to_create << change['uri']
      need_catalog = true
    elsif change['type'] == CHANGED
      next if host.open?(change['uri'])
      to_create << change['uri']
      need_catalog = true
    elsif change['type'] == DELETED
      to_delete << change['uri']
      need_catalog = true
    else
      set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
    end
  end

  host.create *to_create
  host.delete *to_delete

  # Force host to catalog libraries after file changes (see castwide/solargraph#139)
  host.catalog if need_catalog
end