- Better union type handling
- First version of RBS support
- Dependency updates
- Update RuboCop config options
- RBS core and stdlib mapping
- Anonymous splats and multisig arity
- Add Sublime Text to README (#604)
- Map nested constant assignments
- Handle rest/kwrest modifiers on overload arguments (#601)
- Make rubocop info severity Severity::HINT (#576)
- Process non-self singleton classes (#581)
- Fix nest gemspec dependency (#599)
- Strip 'file ' prefix from all filenames in RdocToYard (#585)
- Show why rubocop fails (#605)
- Link solargraph-rails (#611)
- Fix complex type inference (#578)
- Off-by-one diagnostic (#595)
- Remove debug code from release (#600)
- Completion candidates for union types (#507)
- Nullify Hover object instead of contents value (#583)
- Mapping workspace stuck in 0 (#587)
- Fix parsing of nested subtypes (#589)
- Update YARD tags on Pin::Block methods (#588)
- @!visibility directive support (#566)
- Ignore typecheck errors with @sg-ignore tag (#419)
- Strict checks report undefined method calls on variables (#553)
- Infer type from method arguments (#554)
- Return nil value for empty hover contents (#543)
- Basic support for RSpec #describe and #it
- fix: domain can complete private method (#490)
- Update README.md (#533)
- Doc: update readme.md for add solargraph support (#536)
- Process DASGN node in Ruby 3
- File.open core fill
- replace with_unbundled_env with with_original_env (#489)
- Require specific version of gem (#509)
- Support URIs prefixed with single slashed file scheme (#529)
- Fix typo in README.md (#549)
- details on config behavior (#556)
- Consider overloads in arity checks
- ENV core fill for Hash-like methods (#537)
- Fix string ranges with substitutions (#463)
- TypeChecker validates aliased namespaces (#497)
- Always use reference YARD tags when resolving param types (#515) (#516)
- Skip method aliases in strict type checking
- Scope local variables in class_eval blocks (#503)
- Fix invalid UTF-8 in node comments (#504)
- Chain nil safety navigation operator (#420)
- Update closure and context for class_eval receiver (#487)
- SourceMap::Mapper handles invalid byte sequences (#474)
- Special handle var= references, which may use as var = (have space) (#498)
- Rebind define_method to self (#494)
- Allow opening parenthesis, space, and comma when using Diff::LCS (#465)
- Support textDocument/documentHighlight
- Library#references_from performs shallow matches
- Avoid Dir.chdir in Bundler processes (#481)
- Check stdlib for gems with empty yardocs
- Library#maybe_map checks for source in workspace
- Synchronize server requests (#461)
- Complete nested namespaces in open gates
- SourceMap::Mapper reports filename for encoding errors (#474)
- Handle request on a specific thread, and cancel completion when there has newer completion request (#459)
- Fix namespace links generated by views/_method.erb (#472)
- Source handles long squiggly heredocs (#460)
- Correct arity checks when restarg precedes arg (#418)
- Improve the performance of catalog by 4 times (#457)
- Type checker validates duck type variables and params (#453)
- Kernel#raise exception type checker
- Pin::Base#inspect includes path
- Fix arity with combined restargs and kwrestargs (#396)
- Yardoc cache handling
- Fix required_paths when gemspec is used (#451)
- fix: yard stdout may break language client (#454)
- Require 'pathname' for Library
- Improve download-core command output
- Ignore missing requests to client responses
- Add automatically required gems to YardMap
- Use closures to identify local variables
- YardMap#change sets new directory (#445)
- Improve YardMap efficiency
- Bench includes Workspace for cataloging
- Initialize confirms static features from options (#436)
- Enable simple repairs without incremental sync (#416)
- Discard unrecognized client responses
- Notify on use of closest match for core (#390)
- Rescue InvalidOffset in async diagnosis
- Remove erroneous escaping from Hover
- ApiMap handles required bundles (#443)
- Chain constant at last double colon with more than two nested namespaces
- Fill Integer#times return type (#440)
- Validate included modules in type checks (#424)
- Faster language server initialization
- Server response to initialize is near immediate
- Workspace is mapped in a background thread
- Supported clients report mapping progress
- Log RuboCop corrections at info level (#426)
- Allow configuring the version of RuboCop to require (#430)
- Fix source of diagnostic (#434)
- Fix file argument in RuboCop (#435)
- Config ignores directories with .rb extension (#423)
- Fix optarg and blockarg ordering
- Override specialization for #initialize
- Find definitions with cursor after double colon
- Simplify and allow to configure rubocop formatter (#403)
- Type checker shows tag in param type errors (#398)
- Handle bare private_constant (#408)
- Type checker handles splatted variables (#396)
- Type checker ignores splatted calls in arity (#396)
- Allow Parser 3.0 (#400)
- Use temp directory for RuboCop formatting (#397)
- NodeMethods reads splatted hashes (#396)
- Fix alias behavior
- Consolidate method pin classes
- Consolidate YARD pins
- CheckGemVersion can use Bundler for updates
- Tempfile fills
- Support rubocop 1.0 (#381)
- Require Ruby >= 2.4.0 (#394)
- Map visibility calls with method arguments (#395)
- Switch maruku to kramdown
- Remove nokogiri dependency
- Detect internal_or_core? for strict type checking
- ApiMap#catalog merges environs for all sources in bench
- Handle YARD pins in alias resolution
- Include acts like extend inside sclass
- Improved alias resolution
- Parse args from YARD method objects
- Resolve included namespaces with conflicts
- Chains infer from multiple variable assignments
- Array and Hash core fills
- String.new core fill
- Backwards compatibility for typecheck subcommand
- Handle dangling colons on tag hovers
- NodeChainer handles chains with multiple blocks
- Fix return nodes from case statements (#350)
- Treat for loops as closures (#349)
- Array#zip core fill (#353)
- Exit with 1 if type check finds problems (#354)
- YardPin::Method skips invalid parameters (#345)
- Complete and define complex type tags
- Completion and hover on tags in comments (#247)
- Formatting change in RuboCop 0.87.0
- Use
ensure
block for File.unlink tempfile (#342) - Fix super handling in call_nodes_from
- Fix line numbering in bare parse directives
- Bracket handling
- RDoc comments can be strings
- Fixed directive parsing
- Relocate pins from @!parse macros
- Return all symbols for empty queries (#328)
- Log number of files
- RdocToYard includes method line numbers
- File < IO reference
- Updated yardoc archive
- Chain integers with trailing periods
- Map autoload paths
- Set Encoding.default_external
- Faster store index
- ApiMap#catalog rebinds blocks
- Fixed binder inheritance
- Remove ApiMap mutex
- Set overrides
- RubyVM convert_hash node check
- File URI space encoding bug
- Workspace evaluates gem spec in toplevel binding (#316)
- Rescue StandardError instead of Exception
- Correct method parameter order
- Gracefully handle misunderstood macros (#323)
- Nil check in name_type_tag template
- Update obsolete method calls for Ruby 2.7
- YardMap rejects external pins
- RubyVM mapper handles Bundler.require calls
- RDocToYard clears serialized cache
- Workspace evaluates gem specs without binding
- Documentor clears gem caches
- RDocToYard update and spec (#315)
- Map function calls to visibility methods
- Cache source code line arrays
- Fix RuboCop errors
- Mapper handles private_class_method without arguments (#312)
- Fix pin positions from YARD directives (#313)
- Rescue errors from pin caches
- Fix legacy super/zsuper node processing
- Map parameters to updated module functions
- Include mass assignment in call nodes
- Additional return node checks from case statements in legacy
- Check super call arity
- RubyVM parser for Ruby 2.6+
- Lambda node processor
- Faster CommentRipper
- Implement TypeChecker levels
- Type inference improvements
- Prefer @return to @type in constant tags
- Support @abstract tags
- Improved recipient node detection
- Host#diagnose rescues FileNotFoundError
- Fuzzier inheritance checks
- Refactored uri queue synchronization (#289)
- Constant resolution finds nearest names (#287)
- Arity checks
- Additional CoreFills for numeric types and operators
- Chains track splat arguments
- Support case statements in type inference
- Support prepended modules (#302)
- TypeChecker validates constants
- Rescue ENOENT errors when loading sources (#308)
- Formatting message handles empty files
- Avoid lazy initialization of Mutex
- ApiMap inner queries use Set instead of Array
- Ignore Bundler warnings when parsing JSON (#273)
- Chain inference stack uses pin identities (#293)
- Fix super_and_sub? name collisions (#288, #290)
- Fix various Bundler and Travis bugs
- Namespace conflict resolution
- Pin context uses closure context in class scope
- Format file without extension (#266)
- Literal link generates ComplexType
- Remove pin cache from chain inference
- Avoid duplicates in combined LSP documentation
- YardMap skips workspace gems
- Refactored YardMap require processing
- Object/BasicObject inheritance handling in method detection
- StdlibFills and YardMap integration (#226)
- Include scope gates in local variable detection
- Reduce namespace pins in YARD pin generation
- Support multiple return tags in method return types
- File core fills
- Benchmark stdlib fill
- Redorder methods to include core after other classes
- Method type inference uses chains and includes block nodes (#264)
- Infer from overloaded methods with local variable arguments
- Add Array#map! to core fills
- Include visibility in method documentation
- Bundler >= 2.1 uses with_unbundled_env (#252)
- Remove irb from dependencies (#258)
- Update embedded docs (#259)
- Object#inspect core fill
- ApiMap finds constants in superclasses
- STDIO constant variables
- Filter duplicate pins in completionItem/resolve
- Travis updates
- Hash#[]= type checking
- Experimental @param_typle tag
- TypeChecker argument checks inherit param tags from superclasses
- Miscellaneous core overrides
- Boolean literals and type checking
- Update Thor (#254)
- CI against Ruby 2.7 (#253)
- Drop htmlentities dependency (#224)
- Blank lines do not affect indentation in documentation
- Use backticks for code blocks in generated markdown
- Register additional HTML tags in ReverseMarkdown
- Guard against nil pin comments (#231)
- Speedup Solargraph::ApiMap::Store#fqns_pin (#232)
- RuboCop formatting integration through API (#239)
- Qualify literal value types (#240)
- Switch back to Maruku for documentation generation
- Refactored dependencies to improve startup time
- Test if ns is nil to avoid exception (#245)
- Nil check when parsing comments (#243)
- Generate documentation without conversions
- No escape in completion item detail
- Replace Maruku with YARD RDocMarkup
- Refactored Cursor#recipient
- Remove HTML entity escaping
- Messages check enablePages for links
- Escape method for templates
- Escape type tags with backslashes
- Updated gem dependencies
- Replace redcarpet with maruku
- Check for nil nodes in variable probes (#221)
- Chains resolve block variable types.
- Infer variable types from assignments with unparenthesized arguments
- (#212)
- Track blocks in chain links
- Array overloads
- Fix NoMethodError for empty overload tags
- TypeChecker validates block args
- Object#to_s override
- Pin::BaseVariable uses clips for probles
- Add ability to read from a global config file (#210)
- SourceChainer falls back to fixed phrases in repaired sources
- Find return nodes in blocks
- Refactor to reduce frequent allocations
- Only send renameOptions to clients with prepareSupport (#207)
- Add pin locations to scans
- TypeChecker finds params for hash args by name
- Drop empty register/unregister events (#209)
- Pin::Parameter type inference
- Detect yielded blocks in calls
- SourceMap::Mapper maps overrides
- Documentor uses an external process to collect specs
- Bundle subcommand passes rebuild option to Documentor
- Refactored bundle dependency reads
- Fixed Travis issues
- Refactored bundler/require handling
- Fix clip completion from repaired sources
- Bundler issues in Travis
- Keyword argument names in autocomplete
solargraph bundle
and related cache commands- RDoc to YARD conversion
- More TypeChecker validation
- Environs and Conventions
- Core overrides
@overload
tag support- Handle splats in overloads
- Scope gates
- Type Class/Module reduction hack
- Duck type checking
- frozen_string_literal
- Faster YardMap loading
- Fixed resolution of
self
keyword - Chain inference depth limits
- Source#references skips nodes without the requested symbol
- Refactored Library without
checkout
method - Parameter merges require same closures
- Completion item descriptions contain unique links
- Ignore attribute directives without names (castwide/vscode-solargraph#124)
- Chain and/or/begin/kwbegin nodes
- TypeCheck diagnostics run on workspace files only by default
- Mapper updates directive positions (#176)
- Track pins in TypeChecker problems.
- Deprecated plugin architecture
- Closure pins for enhanced context and scope detection
- Block resolution
- Major Pin refactoring
- Single parameter pin for blocks and methods
- Major NodeProcessor refactoring
- Block rebinding
- Resolve method aliases
- Namespace scope gates (WIP)
- Improved ApiMap::Store indexing
- ApiMap block recipient cache
- Refactored pin and local mapping
- Host synchronization fixes
- Rebind instance_eval, class_eval, and module_eval blocks
- Improved string detection
- Use @param tags for parameter pin documentation
- Go To Definition works on require paths (castwide/vscode-solagraph#104)
- Mapper processes singleton method directives
- Resolve self return types based on current context
- Exclude inner node comments from documentation
- Infer hash element types from value parameters
- Pin::BaseMethod typifies from super methods
- Ignore FileNotFoundError in textDocument/signatureHelp
- Class#new and Class.new return types
- Chain::Call resolves
self
return types - Deprecated Pin::Method#infer method
- Pin::Method#probe returns unique tags
- Errant dstr detection
- Source does not detect string? at end of interpolation
- String detection in unsynchronized sources
- Reduced node comparisons in Source#string_at?
- Superclass qualification for instance variables
- Pin::Attribute#probe infers types from instance variables
- First version of TypeChecker and its reporter
- Strict type checking
- Source::Chain::Call does not typify/probe/proxy pins
- Probe for detail in hover and resolve
- JIT pin probes
- Command-line typecheck
- Clip#complete skips unparsed sources
- Check parameter types for super_and_sub?
- Object#! CoreFill.
scan
subcommand- Detect class variables by scope gates
- Move METHODS_RETURNING_SELF to CUSTOM_RETURN_TYPES
- Host::Dispatch catalogs attachments to implicit and generic libraries (#139)
- Preliminary support for
@overload
tags self
resolution in ComplexTypes
- Backport update
-
- ApiMap#get_namespace_type selects namespace pins (#183)
-
- Fixed type inference for Class.new and Class#new exceptions
-
- Gemspec changes
-
- Recommend LanguageClient-neovim instead of vim-solargraph (#180)
-
- Added Eclipse plugin information (#181)
-
- Refactored cataloging
-
- workspace/didChangeWatchedFiles catalogs libraries (#139)
- completionItem/resolve returns nil for empty documentation
- Add implementation of textDocument/prepareRename (#158)
- Update to Backport 1.0
- Source handles comments that start with multiple hashes
- Add Ruby 2.6.1 to CI
- Updated JRuby version support
- Infer return types from top-level references
- SourceChainer handles ! and ? outside of method suffixes (#166)
- CompletionItem uses MarkupContent for documentation (#173)
- Add Object#tap to core documentation. (#172)
- Source and Mapper handle invalid UTF-8 byte sequences (#33)
- Exceptions while mapping emit warning messages
- Process private_class_method for attributes (#171)
- Qualify namespaces from includes in the root namespace (#170)
- Faster YARD object location
- Location of directive context depends on tag name
- Regenerated core docs
- Don't escape colon in URI (#150)
- Reduce file_to_uri conversions to avoid discrepancies
- SourceMap::Clip#locals corrects cursor positions outside of the root context
- Host::Sources notifies observers with URIs
- Finish synchronizing sources with unbalanced lines
- Use ComplexType.try_parse to avoid exceptions for syntax errors
- Use YARD documentation rules to associate directives with namespaces
- Handle non-unique pin locations in completionItem/resolve
- Clip#complete handles @yieldself and @yieldpublic contexts
- Host::Dispatch filters library updates (castwide/vscode-solargraph#99)
- Qualify included namespaces (#148)
- Unsynchronized sources can still try to use existing nodes for chains
- Host filters document symbols for unique locations
- Server response logging in debug
- Host keeps deleted files open in sources
- CoreGen tweaks
- Fix negative argument error in Source#stringify_comment_array (#141)
- Library#references_from includes parameter pins (#135)
- Block nodes are foldable
- Source detects comment positions past the range on the ending line
- workspace/didChangeConfiguration ignores null settings (#144)
- Removed deprecated Library methods
- Tweaked foldable comment ranges
- Host::Dispatch module for managing open sources and libraries
- YardMap::CoreGen module for generating documentation from Ruby source
- Improved communication between hosts and adapters
- Refactored Host methods
@!domain
directive uses [type] syntax- Make SourceMap#query_symbols use fuzzy matching. (#132)
- Threaded ApiMap cataloging
- Fixed fencepost error in Position.from_offset
- Lazy method alias resolution
- Library#references_from returns unique locations
- Additional info logs
- Asynchronous source parsing
- Unsychronized source support for faster completion requests (castwide/vscode-solargraph#95)
- Faster source comment parsing
- Host only diagnoses synchronized sources
- Workspace/library mapping errors (castwide#124)
- RuboCop diagnostics handle validation errors
- Map visibility methods with parameters
- Allow overriding core doc cache directory (castwide#125)
- Library#catalog avoids rebuilding ApiMaps that are already synchronized
- Host#locate_pin finds YARD pins
- completionItem/resolve merges documentation from multiple pins
- Multi-root workspaces
- Folding ranges
- Logging with levels
- Environment info
- Replace EventMachine with Backport
- Gems without yardocs fall back to stdlib
- Formatting requires shellwords
- Use Pathname to normalize require paths
- Source::Change repairs preceding periods and colons.
- Pins use typify and probe methods for type inference.
- NodeChainer supports or_asgn nodes.
- NodeMethods.returns_from supports and/or nodes.
- Library uses single source checkout.
- ApiMap includes BasicObject and operators in method queries.
- Refactored CheckGemVersion.
- Parameter type checks in implicit type inference.
- Additional implicit method type detection cases.
- Chains match constants on complete symbols.
- Missing parameter in send_notification call.
- Typo in checkGemVersion message.
- Pin type checks for module_function, private_class_method, and private_constant.
- ApiMap#catalog checks for added and removed sources.
- Alias method reference error.
- Map method aliases.
- Removed coderay dependency.
- Initial support for named macros.
- First implementation of deep method inference.
- See references in @return tags.
- Literal regexp support.
- Additional CoreFills.
- Mapper uses NodeProcessor.
- Pin::BlockParameter checks param tags by index.
- Clip#complete handles unfinished constants with trailing nodes.
- Library performs case-insensitive strips of symbol references.
- Unparsed sources have nil nodes.
- NodeProcessor recurses into nodes by default.
- Namespace conflicts in method queries.
- SourceMap::Clip#complete method visibility.
- Enable gem dependency mapping.
- Pin::Documenting#documentation converts without RDoc (castwide#97)
- Rescue errors in gemspec evaluation (castwide#100)
- Deprecated overwrite features.
- Pin::MethodParameter finds unnamed param tags by index.
- Workspace does not cache loaded gems.
- Explicit range in textDocument/formatting result (castwide/vscode-solargraph#83).
- SourceMap::Mapper maps alias and alias_method.
- Source::Chain avoids recursive variable assignments (castwide#96).
- Pin scope reference in Chain::Head.
- Clip does not define arbitrary comments.
- Map aliases.
- Refactored diagnostics.
- SourceChainer checks for nil source error ranges.
- Clips handle partially completed constants.
- ApiMap method queries return one pin for root methods.
- Clip#complete detects unstarted inner constants.
- YardMap adds superclass, include, and extend references.
- ApiMap sorts constants by name within namespaces.
- Simplified source parsing.
- SourceChainer requires parsed and unrepaired source for node chaining.
- Source#synchronize does not flag repaired sources unparsed.
- References extend pins.
- Source::Change#repair handles multiple periods and colons.
- Chain::Constant uses chained context.
- Chain rebased constants.
- Deprecated Chain::Definition.
- SourceMap::Mapper includes symbol pins in standard pin array.
- YardMap ignores duplicate requires of the same gem.
- textDocument/rename hack for variables.
- Completing duck types searches for all duck-typed methods and includes Object.
- Default Host#library instance.
- New Cursor and Clip components replace Fragments.
- Split Sources into Sources (text and nodes) and SourceMaps (pins and other map-related data).
- Improved Source synchronization.
- Standardized chain generation on NodeChainer.
- Redesigned server threading.
- Host::Cataloger is responsible for updating ApiMaps.
- Host::Diagnoser is responsible for running diagnostics.
- Server checks gem versions inline instead of running an external process.
- New Library synchronization.
- ApiMap#catalog uses Bundles for updates.
- SourceMap::Mapper processes directives.
- Improved SourceMap and Pin merging.
- Chains support
super
andself
keywords.
- Update variable pins when synchronizing sources.
- Major refactoring.
- More ComplexType integration.
- Use Chains for pin resolution and type inference.
- Deprecated ApiMap::Probe for Chains.
- Force UTF-8 encoding without normalizing.
- CallChainer parses simple call chains.
- Fragments are responsible for define, complete, and signify.
- Method visibility in ApiMap#get_complex_type_methods.
- Revised hack in Host change thread for mismatches in version numbers and content changes
- Mapper#code_for corrects for EOL conversions in parser
- Fix TypeError on hover (castwide#82)
- All fragment components return strings
- ComplexType supports fixed parameters
- ComplexType supports hash parameters with key => value syntax
- RuboCop reporter uses an inline operation instead of an external process
- Resolve class and instance variable types from signatures
- Source attempts fast pin merges
- Refactored docstring parsing
- Pins can merge comments
- Variable pins use complex return types
- MethodParameter pin merges return types
- Handle self in ApiMap#qualify
- First implementation of new YardMap
- ApiMap::Store does not delete yard pins on source updates
- ApiMap changes to use new YardMap and store
- RequireNotFound uses ApiMap#unresolved_requires
- YardMap stdlib support
- Synchronize required path changes
- ComplexType ignores curly brackets
- Synchronize YardMap with source updates
- YardMap cache and ApiMap::Store synchronization
- Method completion filter
- ApiMap#define ignores keywords
- Removed manual garbage collection
- Docstring comparisons for pin merges
- Removed extra whitespace from method pin documentation
- textDocument/completion returns empty result marked incomplete while document is changing
- YardMap generates stdlib pins in one pass and caches results
- Disabled version order hack in Host change thread
- textDocument/formatting uses nil ranges for overwriting
- No completion items for void return types
- ApiMap#complete qualifies pin return types
- Add space to = in attribute writer methods
- Redirect YARD logger to stderr
- Complex types
- Include duck-typed methods in completion items
- Fragments correct EOL discrepancies in comment ranges
- TypeNotDefined diagnostics
- Mapper suppresses stdout while parsing docstrings
- Fragment signatures skip array brackets inside arguments and blocks
- Disabled Host#save in DidSave
- Source documentation and method visibility
- YARD method object visibility
- Probe#infer_signature_type qualifies return types
- SourceToYard rakes method and attribute pins together
- LSP Initialize method prefers rootUri to rootPath
- Source identifies files that raise exceptions
- ApiMap recognizes self keyword
- Refactored diagnostics reporters
- Source#all_symbols ignores pins with empty names
- Allow ? and ! in fragment signatures
- Runtime process checks scope for methods
- LiveMap returns constant pins
- Probe includes locals when resolving block parameters
- Probe resolves word types
- Pin::Attribute#parameters is an empty array.
- Include attributes in Source method pins.
- Removed alphanumeric condition for mapping def pins.
- Refactored Source symbol query and pin location.
- Fixed workspace/symbol method references
- Library#overwrite ignores out-of-sync requests
- Dynamic registration fixed
- Fixed dynamic registration checks.
- Fixed initialize result for clients without dynamic registration.
- Dynamic registration for definitions, symbols, rename, and references
- Fixed capability registration issues
- First version of stdio transport
- YardMap object cache
- Pin::Attribute supports class method paths
- File.realdirpath conversion bug (castwide#64)
- Ruby 2.5 issues on Travis CI
- Fixed in-memory cache issue
- Fixed type inference from signatures for literal values
- Infer local variable types derived from other local variables
- textDocument/references support
- textDocument/rename support
- Probe infers word pins for nested namespaces
- Attribute scopes
- RuboCop command specifies config file
- Initial support for module_function method visibility.
- Map
extend self
calls. - ApiMap#complete filters completion results on the current word.
- Refactored YardMap stdlib handling.
- Minor Message#send bug in socket transport that raised exceptions in Ruby 2.5.1.
- Probe#infer_method_pins fully qualifies context_pin namespace.
- ApiMap reads additional required paths from the workspace config.
- Source handles encoding errors.
- Integrated Travis CI.
- ApiMap#signify filters for method pins.
- Default client configuration updates.
- Fixed RuboCop formatting output.
- Removed bundler dependency.
- Removed legacy server and related dependencies.
- Infer method parameter types.
- Include solargraph.formatting in dynamic capability registration.
- Class and module method visibility (e.g., Module#private and Module#module_function).
- YardMap tracks unresolved requires
- More specs
- Standardized diagnostics reporters
rubocop
andrequire_not_found
reporters- Unresolved requires are reportable diagnostics instead of errors
- LSP handles gem features with extended methods
- textDocument/onTypeFormatting completes brackets in string interpolation
- Workspace uses gemspecs for require paths
- Enabled domain support with @!domain directive in ApiMap and Source
- Workaround for unavailable :rdoc markup class
- Probe infers global variable pins
- Source#all_symbols includes namespaces
- Use kramdown instead of redcarpet for document pages
- YardMap finds yardocs for gems with or without the bundler.
- Major refactoring.
- ApiMap does not require AST data.
- Prefer line/character positions to offsets.
- ApiMap::Probe class for inferring dynamic return types.
- Improved local variable handling.
- Max workspace size is 5000 files.
- castwide#33 Enforce UTF-8 encoding when parsing source
- RuboCop avoids highlighting more than 1 line per offense.
- LSP message synchronization issues.
- Prefer non-nil variable assignments in results.
- Check for nil assignment nodes in variable pins.
- Fragments handle literal value detection for signatures.
- Unresolved completion items do not emit errors.
- Completion items do not send 'Invalid offset' errors to clients.
- First version of the language server.
- YardMap rescues Gem::LoadError instead of Gem::MissingSpecError
- Server caches ApiMap for nil workspaces.
- Visibility tweaks
- Refactored YardMap
- Process require paths to bundled gems
- Core method return type overrides
- Server handles nil and empty workspaces
- Convert ERB templates to parsable code.
- Improved relative constant detection.
- Resolve file paths from symbols in required gems.
- Use inner method suggestion methods to avoid infinite recursion.
- Support Solargraph configurations in workspace folders.
- Use @yieldself tag to change block contexts.
- Handle whitespace in signatures.
- Convert 'self' when inferring signature types.
- Handle bare periods without signatures.
- Source#fix handles bare periods better.
- Deprecate snippets.
- Initial support for macro directives.
- Changes to YardMap require path resolution.
- Server provides /define endpoint for go to definition.
- Removed deprecated methods from ApiMap and LiveMap.
- Watch and report workspace changes.
- Arguments in Runtime method results.
- Infer yieldparam types from method owner subtypes.
- Select available port from shell.
- Include suggestion documentation in /signify response.
- Derive unknown method return types from superclasses.
- Support for extended modules.
- Narrow visibility of private constants and methods.
- Infer return types of method chains from variables.
- Suggestion has_doc attribute.
- Fully qualified namespace in generated MethodObject paths.
- Support for private_class_method and private_constant.
- Stable suggestion sorting (e.g., local class method comes before superclass method).
- Track files in workspace code objects.
- Patched critical bug in minimum documentation requirement.
- Fixed attribute -> code object mapping error.
- CodeMap is workspace-agnostic.
- Use YARD code objects for workspace path documentation.
- Map pins to code objects.
- Infer return types from domain (DSL) methods.
- Fixed visibility and results for superclasses.
- Experimental @yieldself tag.
- Improved syntax error handling in Source.fix.
- Gem ships with Ruby 2.2.2 yardocs.
- Experimental plugin architecture and Runtime plugin.
- Experimental support for updating Ruby core documentation.
-
- Namespace pins
-
- Required setting in config
-
- Ignore non-Ruby files in workspace
-
- Detect changes in workspace files
-
- Add return types to class and module suggestions
-
- Unique variable names in suggestions
-
- Look for variable nodes with non-nil assignments or type tags
-
- Server reverted from Puma back to WEBrick
-
- Stubbed bundler/(setup|require) dependency mapping
-
- Handle config parsing exceptions
-
- Disabled Runtime plugin pending further testing
-
- Handle exceptions in all server endpoints
- Heisenbug in Gem::Specification concealed by Bundler behavior.
- Disabled Runtime plugin.
- LiveMap plugin support.
- Rebuild workspace yardoc if it exists (do not create).
- Standardized code/filename argument order.
- Internal Runtime plugin.
- Infer typed from Kernel methods.
- Removed unused dependencies.
- Add locations to pins and suggestions.
- Reduced size of /suggest response by default.
- Use /resolve for suggestion detail.
- Domain configuration option (experimental DSL support).
- Identify constant types.
- Optimized namespace type resolution.
- Include stdlib in search and document requests.
- Undefined variable bug in YardMap.
- First support for YARD directives in workspace code.
- Experimental LiveMap plugins.
- Changes for backwards compatibility to Ruby 2.2.2.
- Generate config from default object.
-
- ApiMap clears namespace map when processing virtual files (duplicate object bug).
-
- Exception for disagreement between root namespace and signature (root instance method bug).
- Added missing return types.
- Fixed object(path) resolution.
- Corrected docstrings assigned to attribute pins.
- Server uses Puma.
- Filter server suggestions by default.
- Cache pin suggestions.
- Improved caches.
- YardMap crawls up the scope to find constants.
- Use local variable pins to reduce node browsing.
- Preparing the workspace also prepares the YardMap.
- Deprecated experimental bind tag.
- Include restargs (e.g., def foo *bar) in method arguments.
- Avoid inferring from signatures in top-level suggestions.
- Global variable support.
- Remove virtual source's existing pins in ApiMap updates.
- Improved performance of signature type inference.
- Constant and symbol detection.
- Major code refactoring.
- Update single files instead of entire workspace.
- Eliminated local yardoc generation.
- Fixed instance variable scoping bug.
- Partial support for constant method suggestions.
- More literal value exceptions.
- Skip literal strings when building signatures.
- Improved ApiMap processing.
- ApiMap config excludes test directory by default.
- Fixed literal value detection.
- Consolidated processes for inferring signatures.
- Object resolution detects class methods.
- ApiMap collects method and variable pins while processing maps.
- Removed bundler requirement.
- Avoid preparing workspaces without explicit requests.
- Include square brackets in signatures for type inference.
- Semi-colons terminate signatures.
- Detect literal values at the start of signatures.
- Eliminate threads in workspace preparation due to lag and sync issues.
- Classes only include instance methods from included modules one level deep.
- ApiMap recurses into children for constant nodes.
- Find arguments node for singleton methods.
- Recurse into class << self when collecting singleton methods.
- Detect singleton method visibility.
- Find constants in ApiMap.
- Inferring signatures detects methods that return self.
- Add space to = in attr_accessor suggestions.
- Refactored detection of assignment node types.
- ApiMap caches assignment node types.
- ApiMap checks method visibility.
- Smart switching between class and instance scope when inferring signature types.
- Private methods are available from included modules.
- Avoid infinite loops from variable assignments that reference themselves.
- Detect the self keyword when inferring signature types.
- Updated gemspec dependencies.
- Return to master branch for releases.
- Chained method call inference.
- Detect class and instance variables in signatures.
- ApiMap caches inferred signature types.
- CodeMap signature typing detects method arguments.
- Miscellaneous nil checks.
- Fixed yieldparam detection.
- Clean namespace strings for return types with subtypes.
- YardMap#get_constants filters for classes, modules, and constants.
- Suggestions allow Constant as a kind attribute.
- Class variable support.
- Detect variables that directly references classes instead of instances.
- Detect and infer types for yield params.
- Add block parameter variables to suggestions.
- YardMap fixes.
- Workaround for paths in HTML helper.
- Extract default values for optional arguments from code.
- Parse param tags in suggestions.
- Show return types for method params.
- CodeMap detects comments.
- Solargraph config subcommand writes to .solargraph.yml.
- Run GC after each server request.
- ApiMap appends all .rb files in workspace.
- Emulate YARD when parsing comments in ApiMap.
- Include modules in ApiMap inner instance methods.
- Configure ApiMap file options in .solargraph.yml.
- ApiMap#update_yardoc sets workspace from thread. Retain docstring in suggestions.
- ApiMap#update_yardoc uses .yardopts directly for globs.
- CodeMap#filename path separator hack.
- Include all arguments in ApiMap instance method suggestions. Nil filename exception in CodeMap.
- Exclude Kernel module when querying namespace instance methods.
- Sort and filter for suggestions.
- CodeMap#namespace_from returns empty string instead of first node for nodes without locations.
- Improved error handling.
- Suggestions include return types.
- Convert RDoc to HTML in Suggestion#documentation.
- Instance methods in suggestions include superclass and mixin methods.
- Improved detection of cursors inside strings.
- Property and Field kinds for suggestions.
- Suggestions and inferences for method arguments.
- Server uses Webrick.
- Method suggestions include arguments.
- Use CodeMap#signature_at to get suggestions for method arguments.
- Server includes /signify endpoint for method arguments.
- First support for hover documentation.
- Handle multi-part constants in namespaces, e.g., "class Foo::Bar"
- Use #initialize documentation for #new methods.
- More HTML formatting helpers.
- Improved type detection for local variables.
- Long/complex signature handling.
- Improved live error correction and instance variable suggestions.