G'day folks, I was planning on simplifying the default folding provided when foldmethod=syntax. Currently pretty much everything is folded but I was planning on reducing this to just module/class/method definitions, multi-line comments and __END__ data chunks, with an option to disable comment folding. We could, of course, make this 'infinitely' configurable but I see little point. Is anyone particularly enamoured with having their multi-line regexes folded? ;-) Any thoughts appreciated... Thanks, Doug
on 10.05.2006 13:08
on 10.05.2006 13:30
On 5/10/06, Doug Kearns <dougkearns@gmail.com> wrote: > We could, of course, make this 'infinitely' configurable but I see > little point. Is anyone particularly enamoured with having their > multi-line regexes folded? ;-) Enamoured? No. But there are things that I really like being folded -- multi-line hash definitions (I wish it extended to multiline array definitions). All in all, I'm mostly happy with the state of folding in the folding. This probably makes me unusual, but I'd much rather keep my cases and if statements foldable. If it's changed in the "official" distribution, I will need to pretty much stop upgrading because method folding is too coarse for me. -austin
on 10.05.2006 14:00
> >folding. > > This probably makes me unusual, but I'd much rather keep my cases and > if statements foldable. If it's changed in the "official" > distribution, I will need to pretty much stop upgrading because method > folding is too coarse for me. Me too, I like the way folding works right now, folding pretty much everything. That way I only unfold the part of code that I'm currently interested in. Though sometimes I do make use of zR to get the bigger picture... :) I guess, if you make it configurable, it would be ok, so that we can switch ON the 'full folding' mode if we wanted to... All the best, Alex
on 10.05.2006 15:11
On Wed, 10 May 2006 20:07:38 +0900, you wrote: >Currently pretty much everything is folded but I was planning on >reducing this to just module/class/method definitions, multi-line >Any thoughts appreciated... occasionaly i get frustrated with folding by syntax that most of the ide's do, so i use cream for vim which defaults to manual folding. with easy access keys you can create folds or whatever lines you want. in my regular vim installation i have folding defaulted to marker but i find that tends to clutter up otherwise cluttered code :) http://home.cogeco.ca/~tsummerfelt1 telnet://ventedspleen.dyndns.org
on 10.05.2006 15:51
I agree with you Doug, folding module, class & method make it easy to see the structure of your code still. Anyway, it would be nice if there could just be a switch so everyone can have their flavor. In the meantime, check out Mauricio Fernandez blog. He's got a couple really helpful bits for vim & ruby. This is the folding you want: http://eigenclass.org/hiki.rb?Usable+Ruby+folding+for+Vim -Jeff
on 10.05.2006 16:06
On Wed, 10 May 2006, tony summerfelt wrote: > with easy access keys you can create folds or whatever lines you want. > > in my regular vim installation i have folding defaulted to marker but > i find that tends to clutter up otherwise cluttered code :) i simply bit the bullet and always use marker - it's very convenient if one works with many many files since the folds endure when you close the file. i'd also add folding of here-docs since, by definition, those are huge multi-line blocks of string content that should nearly always be folded. s = #--{{{ <<-s this should be folded s #--}}} regards. -a
on 10.05.2006 17:21
On 5/10/06, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote: > i simply bit the bullet and always use marker - it's very convenient if one > works with many many files since the folds endure when you close the file. > i'd also add folding of here-docs since, by definition, those are huge > multi-line blocks of string content that should nearly always be folded. The standard folding for Ruby works with here-docs. -austin
on 10.05.2006 18:02
On Thu, 11 May 2006, Austin Ziegler wrote: > On 5/10/06, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote: >> i simply bit the bullet and always use marker - it's very convenient if one >> works with many many files since the folds endure when you close the file. >> i'd also add folding of here-docs since, by definition, those are huge >> multi-line blocks of string content that should nearly always be folded. > > The standard folding for Ruby works with here-docs. oh i know - just saying that here-docs should be included in a 'minimal' folding config too imho. cheers. -a
on 11.05.2006 18:36
On Wed, May 10, 2006 at 08:07:38PM +0900, Doug Kearns wrote: > We could, of course, make this 'infinitely' configurable but I see > little point. Is anyone particularly enamoured with having their > multi-line regexes folded? ;-) I've written a plugin that achieves something similar; it's a much improved version of the vimscript I'd had in my .vimrc for a long time. It is available at http://eigenclass.org/hiki.rb?simplefold+plugin+0.4.0 There are also a few animations comparing it to fdm=syntax and fdm=marker. Some features: * folds on module/class/method/{constant,attribute} definitions ("top-level folds") These folds are *not* nested, so methods inside a class are always visible, even when all folds are closed. This way zM gets you a high-level view of all of the file without having to open some module/class folds. * I've added folding on if/while/until/blocks/etc ("nestable folds") (can be turned of, but it's not a problem since we have zO) * top-level folds are enlarged to include preceding comments (good for RDoc'ed code) * the use of a specialized foldtext achieves over 60% savings in vertical space over fdm=marker at the class level. * it is possible to specify additional "top-level" folds with #{{{ / #}}} and additional "nestable" folds with {{{{ / }}}}.
on 11.05.2006 19:09
On Fri, 12 May 2006, Mauricio Fernandez wrote: > * it is possible to specify additional "top-level" folds with #{{{ / #}}} and > additional "nestable" folds with {{{{ / }}}}. you need to use #--{{{ / #--}}} #--{{{{ / #--}}}} or else the #{{{ totally horks rdoc. fyi. -a
on 11.05.2006 19:28
On Fri, May 12, 2006 at 02:08:09AM +0900, ara.t.howard@noaa.gov wrote: > > > or else the #{{{ totally horks rdoc. fyi. I'm matching against /\{\{\{\{/ and /^\s*[#%"0-9]{0,4}\s*\{\{\{[^{]/, so #--{{{{ would work fine. === === ^ don't remember why Would # {{{ (with extra spaces) also break rdoc? And ##{{{? While we're at it, #%{{{ should be safe. #--{{{ is out because... well, I didn't want it to conflict with your markers :)
on 11.05.2006 19:41
On Fri, 12 May 2006, Mauricio Fernandez wrote: >> #--{{{{ / #--}}}} > # {{{ > (with extra spaces) also break rdoc? And ##{{{? While we're at it, #%{{{ > should be safe. > > #--{{{ is out because... well, I didn't want it to conflict with your > markers :) > -- > Mauricio Fernandez - http://eigenclass.org - singular Ruby boy. reading this post in vim is tough! there are a lot of folds! ;-) dunno about the spaces - i think i arrived at #-- because that's some sort of flag for rdoc to ignore comments, so any such char should work. cheers. -a
on 12.05.2006 03:11
On Fri, May 12, 2006 at 02:37:31AM +0900, ara.t.howard@noaa.gov wrote:
> of flag for rdoc to ignore comments, so any such char should work.
Alright, I thought you meant that {{{ drove rdoc mad, when it's just
that
they look bad in the docs :) (at least that's what it looks like after a
quick test).
rdoc/parsers/parse_rb.rb:
...
def remove_private_comments(comment)
comment.gsub!(/^#--.*?^#\+\+/m, '')
comment.sub!(/^#--.*/m, '')
end
...
So it seems things aren't that bad:
* nestable folds will do fine, since we can use e.g. #-- {{{{, also
avoiding
conflicts with your markers
* no problem either with "top-level" folds: anyway, there's no point in
adding
one just before a rdoc'able element (class, method...), since a fold
would
be created there automatically anyway.
Thanks for pointing this out, I'll add a few words about rdoc in the
docs.
on 13.05.2006 10:47
On Wed, May 10, 2006 at 08:27:32PM +0900, Austin Ziegler wrote: <snip> > Enamoured? No. But there are things that I really like being folded -- > multi-line hash definitions (I wish it extended to multiline array > definitions). I'll include something in the next release but in the meantime you can just add syn region rubyArrayLiteral start="\%(^\|\s\)\[" end="]" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold to ~/.vim/after/syntax/ruby.vim. It should work for the common cases... > All in all, I'm mostly happy with the state of folding in the folding. Good. I was under the impression that almost everyone found the folding excessive. > This probably makes me unusual, but I'd much rather keep my cases and > if statements foldable. If it's changed in the "official" > distribution, I will need to pretty much stop upgrading because method > folding is too coarse for me. I'll make any changes configurable. Thanks, Doug
on 13.05.2006 10:50
On Fri, May 12, 2006 at 01:35:03AM +0900, Mauricio Fernandez wrote: <snip> > I've written a plugin that achieves something similar; it's a much improved > version of the vimscript I'd had in my .vimrc for a long time. > > It is available at http://eigenclass.org/hiki.rb?simplefold+plugin+0.4.0 > There are also a few animations comparing it to fdm=syntax and fdm=marker. This looks interesting; I'll add a note to the vim-ruby docs. <snip> Regards, Doug