2011-12-24 15 views
18

Buscar "vim haskell indent" en SO. Hay muchas respuestas sobre cómo configurar Vim para la sangría de Haskell. Ninguno de ellos realmente "funciona". No proporcionan el código recomendado por el Haskell indentation wiki page. Por ejemplo, alineación de instrucciones en un bloque do o let, = y | de un tipo de datos, etc.Haskell y Vim: sangría correcta

¿Existe una solución Vim que genere código como el wiki?

Respuesta

7

Puede que esta no sea la respuesta que está buscando, pero hay una manera de seguir la guía wiki de sangría y ser compatible con la mayoría de los editores.

Por ejemplo, hacer bloques

En lugar de

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

puede aplicar sangría en ello como esto

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

Esto se menciona explícitamente como una alternativa aceptable en la muesca wiki.

De la misma manera, puede dar formato a tipos de datos

data FooBar 
    = Foo 
    | Bar 
    | Asdf 

Guardia

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

Dónde-cláusulas

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

y así sucesivamente ...

I personalmente comenzó a usar este tipo de estilo f porque, como dijiste, ningún editor podría sangrar el código de otra manera. Esto funciona mejor en todos los editores, ya que la sangría es siempre un múltiplo de cuatro (o lo que sea que elija para su nivel de sangría base). A medida que usaba este estilo, también comencé a preferir visualmente este nivel de indentación constante, por lo que no volvería en este punto, incluso si los editores fueran más inteligentes.

+1

Shang, en este momento estoy sospechando que todos los que usan vim se conforman con este compromiso. He estado haciendo una variación de esto durante mucho tiempo. – Ana

+0

No es necesariamente un compromiso. Excepto por la versión 'where', este es el estilo que prefieren mis ojos (y, con pequeñas variaciones, siempre lo ha sido). – luqui

Cuestiones relacionadas