Description
This is a tricky case I want to discuss. Consider following dependencies list of scaffolded Yesod application with three extra dependencies I've added manually at the end:
build-depends: base >= 4 && < 5
, yesod >= 1.4.1 && < 1.5
…
, classy-prelude >= 0.10.2
…
, template-haskell
…
, unordered-containers
, containers
, vector
, time
-- extra
, lambdacms-core
, blaze-html
, wai
Now if I run haskell-cabal-subsection-arrange-lines
it becomes:
build-depends: aeson >= 0.6 && < 0.10
, base >= 4 && < 5
…
, yesod-static >= 1.4.0.3 && < 1.6
-- extra
, lambdacms-core
, blaze-html
, wai
So, as you can see, everything till comment is rearranged as expected, but lines after comment leaved untouched. It is not matter where the point stands when re-arrange command is executed, the result is the same. In my current case I used comment to split dependency list into sections, but others can place comments for other needs. So, in my current case I expect the second section would be sorted independently of first one leaving comment as section separator (there is an easy way — wrap second section by region and call sort-lines
).
Definitely it would be better if haskell-cabal-subsection-arrange-lines
to sort whole list, but it's not clear how to deal with comments. I can think of few scenarios:
- leave current behaviour: sort list until first comment
- sort everything, move comments at the end of the list
- sort comment lines with dependencies, there are at least two options:
- assume comments are related to previous lines
- assume comments are related to following lines
- sort whole list by subsecions, where comment are assumed as subsection delimiters
I think all this scenarios could be covered by some optional parameter, defaulting to current behaviour.
What do you think?