haskell / haskell-mode

Emacs mode for Haskell
http://haskell.github.io/haskell-mode/
GNU General Public License v3.0
1.33k stars 344 forks source link

haskell-cabal: bad indentation with redundant leading comma #1826

Open Commelina opened 1 year ago

Commelina commented 1 year ago

As the Cabal document says, Cabal allows redundant leading (and trailing) commas since 2.2. And some tools such as cabal-fmt use leading commas by default. However, the indentation of such leading commas does not work very well. For example,

build-depends:
        , bar
, foo

When indenting the last line, we may expect

build-depends:
        , bar
        , foo

However, haskell-cabal-indent-line gives

build-depends:
        , bar
      , foo

This is a little annoying. I am not sure if this is caused by my incorrect usage. However, I tried checking if there was a leading comma before indenting and taking different indent strategies, which worked as expected. (Of course, there are still corner cases such as multiple blank lines. But the origin code does not handle them very well either...) I will make a PR if it is OK.