Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: How has your coding style changed over the years?

by LanX (Saint)
on Aug 07, 2022 at 17:56 UTC ( [id://11146001]=note: print w/replies, xml ) Need Help??


in reply to Re: How has your coding style changed over the years?
in thread How has your coding style changed over the years?

> I am not (and never was) religious about it:

I mostly agree with you, I have to adapt to the style of my client.

As a funny side effect, we can mostly tell who made a change just by looking at the style.

Like one of my colleagues prefers qq~...~ for multi-line SQL and I always use heredocs like <<"__SQL__";

> and configured my editor to help me doing so

could you please share your settings? I find configuring layout settings quite tedious and frustrating, because the cross-influences make it a try and error game.

More so if perltidy is also involved and I can see my code flip-flop-ing between different settings. And also configuring perltidy is no fun...

In the end I stopped using perltidy and configured my emacs to auto-indent the surrounding expression/block with every typed semicolon.

Like that I get life formatting without needing to think (and it's much faster than shelling out to a restarted perltidy)

But of course this isn't as feature rich as perltidy, so I'd like to become "compatible" no matter which style.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^3: How has your coding style changed over the years?
by haj (Vicar) on Aug 07, 2022 at 19:41 UTC
    could you please share your settings?

    Sure! If you are using the "current" cperl-mode.el from git, you can do:

    • Interactively: <M-x>cperl-set-style<RET>PBP<RET>
    • In your Emacs config: (cperl-set-style "PBP")
    • As customize option, file- or directory variable (which makes sense if you have different projects with different style requirements): Set cperl-file-style to "PBP"

    For older versions of cperl-mode.el, here's the list of settings:

    ("PBP" ;; Perl Best Practices by Damian Conway (cperl-indent-level . 4) (cperl-brace-offset . 0) (cperl-continued-brace-offset . 0) (cperl-label-offset . -2) (cperl-continued-statement-offset . 4) (cperl-close-paren-offset . -4) (cperl-extra-newline-before-brace . nil) (cperl-extra-newline-before-brace-multiline . nil) (cperl-merge-trailing-else . nil) (cperl-indent-parens-as-block . t) (cperl-tab-always-indent . t))
    In the end I stopped using perltidy

    That reminds me of an issue "A command to run perltidy with the input from an emacs buffer" for which a first implementation never made it to Emacs....

      > That reminds me of an issue "A command to run perltidy with the input from an emacs buffer" for which a first implementation never made it to Emacs....

      I'm not sure I understand, isn't that just a shell-command-on-region command after a mark-whole-buffer ° ?

      > For older versions of cperl-mode.el, here's the list of settings:

      Thanks, especially (cperl-indent-parens-as-block     .  t) fixed a longstanding issue I had.

      It would be nice tho to have a split screen scenario for experimentation.

      Like with code on one side and "live" config on the other side, where every change is temporarily activated and demonstrated in the other screen. When happy you just save the config buffer to a file.

      Hmm ... probably could be done with a macro already ...

      I'm getting this result now when formatting, but neither my emacs nor my cperl-mode is the newest, and probably other configs are jinxed too...

      for my $x (@x) { my %h = ( 'truncate' => { 'desc' => 'shorten a file', 'usage' => [ 'truncate FILEHANDLE,LENGTH', 'truncate EXPR,LENGTH', ] }, ); };

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

      update

      °) I'm pretty sure such code was included in PBP.

        About perltidy in Emacs:
        I'm not sure I understand, isn't that just a shell-command-on-region command after a mark-whole-buffer?

        Yes, these are parts of the solution. The other parts are:

        • Be able to restrict the perltidy-run to the current function, or the current region (i.e. avoid cosmetic changes in untouched places of the file which mess up VC history)
        • Don't let .tdy and .ERR files mess up your source directories
        • Present the source before and after tidying in an ediff session (with a bit of fine print like re-using an existing ediff session, so that you can re-run the command from within the ediff session, e.g. after accepting some changes)

        ...And indeed, indenting can be a mess. But it is improving. That's what I get with "hot" cperl-mode.el and PBP settings. The closing braces are under the first nonspace character of the line containing the opening braces, which I find ok.

        Note the newline before the last semicolon. This indicates that this semicolon is a new statement (or superfluous)!

        for my $x (@x) { my %h = ( 'truncate' => { 'desc' => 'shorten a file', 'usage' => [ 'truncate FILEHANDLE,LENGTH', 'truncate EXPR,LENGTH', ] } ); } ;

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (1)
As of 2024-04-19 18:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found