2011-12-24 3 views
18

Поиск "vim haskell indent" на SO. Есть много ответов, как настроить Vim для отступов Haskell. Ни один из них не «работает». Они не предоставляют код, рекомендованный Haskell indentation wiki page. Например, выравнивание операторов в блоке do или let, = и | типа данных и т. Д.Haskell and Vim: Правильный отступ

Существует ли решение 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 лично начал использовать этот вид o f style, потому что, как вы сказали, ни один редактор не смог бы надежно отложить код в противном случае. Это работает лучше во всех редакторах, так как отступ всегда кратен четырем (или что-то еще, что вы выбираете для базового уровня отступов). Поскольку я использовал этот стиль, я также стал предпочитать этот последовательный уровень отступов визуально, поэтому я бы не стал возвращаться в этот момент, даже если редакторы стали умнее.

+1

Шан, в этот момент я подозреваю, что все, кто использует vim, оседают на этом компромиссе. Я делаю вариацию этого в течение длительного времени. – Ana

+0

Это не обязательно компромисс. За исключением версии 'where', это стиль, который предпочитают мои глаза (и, с небольшими вариациями, всегда был). – luqui

Смежные вопросы