aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xisort19
1 files changed, 16 insertions, 3 deletions
diff --git a/isort b/isort
index 27a589d..af7828e 100755
--- a/isort
+++ b/isort
@@ -2,7 +2,20 @@
# isort -- sort C variable declarations separated by commas
-s/([^,]*?)(\S+[,;])/$2/; $prefix = $1;
-s/;$/,/; @words = sort split /\s+/;
+# Extract words, save prefix.
+s/([^,]*?)(\S+[,;])/$2/;
+$prefix = $1;
+
+# Ensure all words end with comma.
+$semicolon = s/;$/,/;
+
+# Sort words.
+@words = sort {
+ ($x = $a) =~ s/^\*//;
+ ($y = $b) =~ s/^\*//;
+ $x cmp $y
+} split /\s+/;
+
+# Join words, add prefix and semicolon.
$_ = $prefix . (join ' ', @words) . "\n";
-s/,$/;/;
+s/,$/;/ if $semicolon;