2011-12-24 8 views
18

"vim haskell indent"をSOで検索してください。 Haskellインデント用にVimを設定する方法には、多くの答えがあります。彼らの誰も本当に "働かない"。 Haskell indentation wiki pageで推奨されているコードは提供していません。たとえば、doブロックまたはletブロックの文のアライメント、データ型の=および|などHaskellとVim:適切なインデント

wikiのようなコードを生成するVimソリューションは存在しますか?

答えて

7

これはあなたが探している答えではないかもしれませんが、インデントのwikiガイドに従って、ほとんどのエディタと互換性がある方法があります。

例えば

、やるブロック

代わりの

myFunc x = do y <- bar 
       return $ x + y 

あなたはこの

myFunx x = do 
    y <- bar 
    return $ x + y 

このようにそれをインデントすることができますが、明示的にインデントウィキで許容できる代替手段として言及されています。

同様に、書式設定できるデータ型

data FooBar 
    = Foo 
    | Bar 
    | Asdf 

ガード

myFunc x 
    | x < 0  = 0 
    | otherwise = x 

どこ-条項

myFunc x = x + y + c where 
    y = x + 5 
    c = x * y 

のように...

I個人的にこの種の使用を始めました。あなたが言ったように、そうでなければコードをインデントできる信頼できるエディタがないからです。これは、インデントが常に4の倍数(または、あなたがあなたのベースのインデントレベルのために選んだ他のもの)であるので、すべてのエディタでうまく機能します。私はこのスタイルを使用していたので、この一貫したインデントレベルを視覚的に好むようになりました。エディタがスマートになったとしても、この時点では戻っていません。

+1

Shang、この時点で、私はvimを使用するすべての人がこの妥協に落ち着いていると思っています。私は長い間これを変えてきました。 – Ana

+0

必ずしも妥協ではありません。 'where'バージョンを除いて、これは私の目が好むスタイルです(マイナーなバリエーションはいつもありました)。 – luqui