- Changed: No longer supports EOL versions of Ruby. (#210)
- Added: Support prism parser (#208).
- Added: Handle Ruby 3.3 new eval source location format (#200).
- Handle if/else with comment or empty line in branch (#193)
- Use
SYNTAX_SUGGEST_DEBUG
instead ofDEBUG
env var value in timeout warning message (#194) - Reduce line output for increased clarity (#190)
- Fix rendering a file without a newline ending (#182)
- Output improvement: Handle methods with only newlines or comments in them (#179)
- No longer shows the detail of monkey patch as the document (#174)
- Drop CI for Ruby 3.2.0-rc1, now that 3.2.0 is available (#172)
- Drop support for Ruby 3.2.0 preview, now that 3.2.0-rc1 is available (#165)
- Native support of
SyntaxError#path
, support 3.2.0-preview3 will be dropped with the release of 3.2.0-preview4 (#164) - Added dependabot for GitHub Actions (#160)
- Replace
❯
with>
in error output for compatability with more fonts (#161)
- [Breaking] Output "Syntax OK" will no longer be output when
syntax_suggest
is fired due to a syntax error. (#158) - [Breaking] Rename
dead_end
tosyntax_suggest
(#154) - [Breaking] Lazy loading moved from
autoload
to manually checking for constants and requiringdead_end/api
. To manually use any SyntaxSuggest internals you MUST requiredead_end/api
, otherwise it will be lazy loaded on syntax error (#148) - Default to highlighted output on Ruby 3.2 (#150)
- Debug functionality enabled by
DEBUG=1
env var is now underSYNTAX_SUGGEST_DEBUG=1
. Note this is not a stable interface or feature. Output content is subject to change without major version change (#149) - Enable/Disable dead_end by using the
dead_end
kwarg indetailed_message
(#147) - Respect
highlight
kwarg in Ruby 3.2'sdetailed_message
to enable/disable control characters (#147) - Added workarounds for running on ruby/ruby repo (#156)
- Code that does not have an associated file (eval and streamed) no longer produce a warning saying that the file could not be found. To produce a warning with these code types run with DEBUG=1 environment variable. (#143)
- [Breaking] Lazy load SyntaxSuggest internals only if there is a Syntax error. Use
require "dead_end"; require "dead_end/api"
to load eagerly all internals. Otherwiserequire "dead_end"
will set up an autoload for the first time the SyntaxSuggest module is used in code. This should only happen on a syntax error. (#142) - Monkeypatch
SyntaxError#detailed_message
in Ruby 3.2+ instead ofrequire
,load
, andrequire_relative
(#139)
- Fixed internal class AroundBlockScan, minor changes in outputs (#131)
- Fix case where Ripper lexing identified incorrect code as a keyword (#122)
- Add support for Ruby 3.1 by updating
require_relative
logic (#120) - Requiring
dead_end/auto
is now deprecated please requiredead_end
instead (#119) - Requiring
dead_end/api
now loads code without monkeypatching core extensions (#119) - The interface
SyntaxSuggest.handle_error
is declared public and stable (#119)
- Expand explanations coming from additional Ripper errors (#117)
- Fix explanation involving shorthand syntax for literals like
%w[]
and%Q{}
(#116)
- Fix CLI parsing when flags come before filename (#102)
- [Breaking] CLI now outputs to STDOUT instead of STDERR (#98)
- [Breaking] Remove previously deprecated
require "dead_end/fyi"
interface (#94) - Fix double output bug (#99)
- Fix bug causing poor results (fix #95, fix #88) (#96)
- SyntaxSuggest is now fired on EVERY syntax error (#94)
- Output format changes:
- Don't print terminal color codes when output is not tty (#91)
- Reintroduce Ruby 2.5 support (#90)
- Support naked braces/brackets/parens, invert labels on banner (#89)
- Handle mismatched end when using rescue without begin (#83)
- CLI returns non-zero exit code when syntax error is found (#86)
- Let -v respond with gem version instead of 'unknown' (#82)
- Support "endless" oneline method definitions for Ruby 3+ (#80)
- Reduce timeout to 1 second (#79)
- Logically consecutive lines (such as chained methods are now joined) (#78)
- Output improvement for cases where the only line is an single
end
(#78)
- Output improvements via less greedy unmatched kw capture #73
- Remove NoMethodError patching instead use https://github.com/ruby/error_highlight/ (#71)
- Fix sinatra support for
require_relative
(#63)
- Consider if syntax error caused an unexpected variable instead of end (#58)
- Parse error once and not twice if there's more than one available (#57)
- Avoid including demo gif in built gem (#53)
- Add compatibility with zeitwerk (#52)
- Namespace Kernel method aliases (#51)
- Safer NoMethodError annotation (#48)
- Annotate NoMethodError in non-production environments (#46)
- Do not count trailing if/unless as a keyword (#44)
- Fix bug where empty lines were interpreted to have a zero indentation (#39)
- Better results when missing "end" comes at the end of a capturing block (such as a class or module definition) (#32)
- Fix performance issue when evaluating multiple block combinations (#35)
- Gem name changed from
syntax_search
todead_end
(#30) - Moved
syntax_search/auto
behavior to top level require (#30) - Error banner now indicates when missing a
|
or}
in addition toend
(#29) - Trailing slashes are now handled (joined) before the code search (#28)
- Simplify large file output so minimal context around the invalid section is shown (#26)
- Block expansion is now lexically aware of keywords (def/do/end etc.) (#24)
- Fix bug where not all of a source is lexed which is used in heredoc detection/removal (#23)
- Strip out heredocs in documents first (#19)
- Parser gem replaced with Ripper (#17)
- Internal refactor (#13)
- Codeblocks in output are now indented with 4 spaces and "code fences" are removed (#11)
- "Unmatched end" and "missing end" not generate different error text instructions (#10)
- Fire search on both unexpected end-of-input and unexected end (#8)
- Initial release