in reply to Re^3: prettyfy hashes (emacs)
in thread prettyfy hashes

I have the same problem, which I normally solve manually.

But this could be solved with separate rules for = , =~ and => and/or "sections separations".

please note how this works

my $h_periods = { Mercury => { orbital => 0.24, rotation => 58.64 }, Venus => { orbital => 0.62, rotation => -243.02 }, Earth => { orbital => 1.00, rotation => 1.00 }, Mars => { orbital => 1.88, rotation => 1.03 }, Jupiter => { orbital => 11.86, rotation => 0.41 }, Saturn => { orbital => 29.46, rotation => 0.43 }, Uranus => { orbital => 84.01, rotation => -0.72 }, Neptune => { orbital => 164.8, rotation => 0.67 }, };

That's because { is a section separator while ( is not

`separate' Each rule can define its own section separator, which describes how to identify the separation of "sections" within the region to be aligned. Setting the `separate' attribute overrides the value of `align-region-separate' (see the documentation of that variable for possible values), and any separation argument passed to `align'.

using M-x customize-group RET align RET will facilitate customizing (it provides a textual UI for lisp data)

the rule in question in align-rules-list is

Alignment rule: Title: perl-assignment Required attributes: Regexp: (Regular expression to match) Choice: Value Menu Regexp: [^=!^&*-+<>/| ]\(\s-*\)=[~>]?\(\s-*\)\([^>= ]\|$\) Optional attributes: INS DEL Choice: Value Menu Paren group: (Parenthesis group to use) Choice: Value Menu Repeat: INS DEL Integer: 1 INS DEL Integer: 2 INS INS DEL Choice: Value Menu Modes: (Modes where this rule applies) Lisp expression: align-perl-modes INS DEL Choice: Value Menu To Tab Stop: (Should rule align to tab stops) Boolean: Toggle off (nil) INS

this [~>]? part should be deleted or replaced.

(BTW: not sure what the -* is intended to do...)

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!

Replies are listed 'Best First'.
Re^5: prettyfy hashes (emacs)
by choroba (Cardinal) on Apr 03, 2016 at 14:08 UTC
    > BTW: not sure what the -* is intended to do...

    \s- is whitespace, asterisk is the same as in Perl. Emacs uses \sC where C is a character class, i.e. \sw corresponds to \w , etc.

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,