lib/solargraph.rb



# frozen_string_literal: true


Encoding.default_external = 'UTF-8'

require 'solargraph/compat'
require 'solargraph/version'

# The top-level namespace for the Solargraph code mapping, documentation,

# static analysis, and language server libraries.

#

module Solargraph
  class InvalidOffsetError <      RangeError;    end
  class DiagnosticsError <        RuntimeError;  end
  class FileNotFoundError <       RuntimeError;  end
  class SourceNotAvailableError < StandardError; end
  class ComplexTypeError        < StandardError; end
  class WorkspaceTooLargeError <  RuntimeError;  end
  class BundleNotFoundError <     StandardError; end

  autoload :Position,         'solargraph/position'
  autoload :Range,            'solargraph/range'
  autoload :Location,         'solargraph/location'
  autoload :Shell,            'solargraph/shell'
  autoload :Source,           'solargraph/source'
  autoload :SourceMap,        'solargraph/source_map'
  autoload :ApiMap,           'solargraph/api_map'
  autoload :YardMap,          'solargraph/yard_map'
  autoload :Pin,              'solargraph/pin'
  autoload :ServerMethods,    'solargraph/server_methods'
  autoload :CoreFills,        'solargraph/core_fills'
  autoload :StdlibFills,      'solargraph/stdlib_fills'
  autoload :LanguageServer,   'solargraph/language_server'
  autoload :Workspace,        'solargraph/workspace'
  autoload :Page,             'solargraph/page'
  autoload :Library,          'solargraph/library'
  autoload :Diagnostics,      'solargraph/diagnostics'
  autoload :ComplexType,      'solargraph/complex_type'
  autoload :Bundle,           'solargraph/bundle'
  autoload :Logging,          'solargraph/logging'
  autoload :TypeChecker,      'solargraph/type_checker'
  autoload :Environ,          'solargraph/environ'
  autoload :Convention,       'solargraph/convention'
  autoload :Documentor,       'solargraph/documentor'
  autoload :Parser,           'solargraph/parser'

  dir = File.dirname(__FILE__)
  YARDOC_PATH = File.realpath(File.join(dir, '..', 'yardoc'))
  YARD_EXTENSION_FILE = File.join(dir, 'yard-solargraph.rb')
  VIEWS_PATH = File.join(dir, 'solargraph', 'views')

  # A convenience method for Solargraph::Logging.logger.

  #

  # @return [Logger]

  def self.logger
    Solargraph::Logging.logger
  end

  # A helper method that runs Bundler.with_unbundled_env or falls back to

  # Bundler.with_clean env for earlier versions of Bundler.

  #

  def self.with_clean_env &block
    meth = if Bundler.respond_to?(:with_unbundled_env)
      :with_unbundled_env
    else
      :with_clean_env
    end
    Bundler.send meth, &block
  end
end