From 7346399b7d1ac5d91b0c2a1095e0816799db08b1 Mon Sep 17 00:00:00 2001 From: bootleq Date: Mon, 28 Sep 2015 19:27:30 +0800 Subject: [PATCH] Add `__END__` foldable_groups option --- doc/ft-ruby-syntax.txt | 1 + .../generators/syntax/percent_generator.rb | 19 +++++++++++++++++++ etc/examples/syntax/percent/__END__.rb | 13 +++++++++++++ syntax/ruby.vim | 6 +++++- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 etc/examples/syntax/percent/__END__.rb diff --git a/doc/ft-ruby-syntax.txt b/doc/ft-ruby-syntax.txt index e3706f61..46dc2695 100644 --- a/doc/ft-ruby-syntax.txt +++ b/doc/ft-ruby-syntax.txt @@ -71,6 +71,7 @@ value is space-separated keywords, known keywords were: : Symbol # Multiline comment << Here documents + __END__ Source code after "__END__" directive 5. Reducing expensive operations *ruby_no_expensive* diff --git a/etc/examples/generators/syntax/percent_generator.rb b/etc/examples/generators/syntax/percent_generator.rb index 669d7927..2833b203 100755 --- a/etc/examples/generators/syntax/percent_generator.rb +++ b/etc/examples/generators/syntax/percent_generator.rb @@ -589,6 +589,25 @@ +# __END__ {{{ +if arg == '__END__' + puts <<-EOF.gsub(/^ {4}/, '') + __END__ + invalid + invalid + + + __END__ + valid + valid + + + EOF +end +# }}} + + + puts "#\svim:foldmethod=syntax" diff --git a/etc/examples/syntax/percent/__END__.rb b/etc/examples/syntax/percent/__END__.rb new file mode 100644 index 00000000..752a20cb --- /dev/null +++ b/etc/examples/syntax/percent/__END__.rb @@ -0,0 +1,13 @@ +# Generated by `./etc/examples/generators/syntax/percent_generator.rb __END__ > etc/examples/syntax/percent/__END__.rb` + + __END__ + invalid + invalid + + +__END__ + valid + valid + + +# vim:foldmethod=syntax diff --git a/syntax/ruby.vim b/syntax/ruby.vim index b4449fad..94dc7683 100644 --- a/syntax/ruby.vim +++ b/syntax/ruby.vim @@ -465,7 +465,11 @@ syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,h syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1 " __END__ Directive -syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold +if s:foldable('__END__') + syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold +else + syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" +endif hi def link rubyClass rubyDefine hi def link rubyModule rubyDefine