Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Any smart Perl editors?

by 1nickt (Canon)
on Jun 08, 2019 at 14:50 UTC ( [id://11101131]=note: print w/replies, xml ) Need Help??


in reply to Any smart Perl editors?

Hi, you might like Sublime. One of the guys at $work uses it and it seems to have lots of features similar to what you are describing. (Disclaimer: I use vim.)

Hope this helps!


The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^2: Any smart Perl editors?
by stevieb (Canon) on Jun 08, 2019 at 15:06 UTC

    If I'm on any computer that I can't get my IDE on, I use Vim as well. Here's a handy little bit of code for one's .vimrc file that allows for folding/unfolding of Perl subs:

    function GetPerlFold() if getline(v:lnum) =~ '^\s*sub\s' return ">1" elseif getline(v:lnum) =~ '\}\s*$' let my_perlnum = v:lnum let my_perlmax = line("$") while (1) let my_perlnum = my_perlnum + 1 if my_perlnum > my_perlmax return "<1" endif let my_perldata = getline(my_perlnum) if my_perldata =~ '^\s*\(\#.*\)\?$' " do nothing elseif my_perldata =~ '^\s*sub\s' return "<1" else return "=" endif endwhile else return "=" endif endfunction setlocal foldexpr=GetPerlFold() setlocal foldmethod=expr

    Here's a screenshot of what things look like if the above code snip is added into the config file (all subs are folded by default when opening a Perl file).

    I keep a copy of my most basic vim config file in my Github for easy retrieval while I'm on systems I don't have control over.

    Update: While in Vim's normal mode, zo will open/expand the folded sub, and zc will close it again.

      Very nice! Here is a slightly changed version adapted to my own coding style (using '};' instead of '}' and pod documentation before each sub):
      function GetPerlFold() if getline(v:lnum) =~ '^\s*sub\s' return ">1" elseif getline(v:lnum) =~ '\};*\s*$' let my_perlnum = v:lnum let my_perlmax = line("$") while (1) let my_perlnum = my_perlnum + 1 if my_perlnum > my_perlmax return "<1" endif let my_perldata = getline(my_perlnum) if my_perldata =~ '^\s*\(\#.*\)\?$' " do nothing elseif my_perldata =~ '^\s*sub\s' return "<1" elseif my_perldata =~ '^\s*=head.\s*' return "<1" else return "=" endif endwhile else return "=" endif endfunction setlocal foldexpr=GetPerlFold() setlocal foldmethod=expr
      This will let the pod lines between subs out of the folds. The original version will fold the pod lines with the previous sub.

        Very nice!

        I've always put my POD at the bottom of the file (after a 1; and an __END__), so I just create a dummy sub as my last one, and the all the POD is folded as you said.

        For me, that makes it easy to go directly to the bottom of my code, instead of automatically going to the bottom of the POD.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11101131]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (6)
As of 2024-04-18 19:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found