2012-05-23 18 views
5

Estoy editando mis archivos fuente Haskell con Vim y he configurado la opción 'textwidth' para ajustar automáticamente las líneas de longitud excesiva. Así que mi ~/.vimrc aspecto:Continuar automáticamente guiones principales en comentarios de Haskell en el ajuste de texto con Vim

set tw=78 

Ahora, cuando escribo una línea que es más largo que 78 caracteres la última palabra es llevado automáticamente a la siguiente línea. Esto es muy útil para escribir comentarios en archivos fuente. Lo bueno es que, en los comentarios, los símbolos de comentarios principales se insertan automáticamente al comienzo de cada línea cuando la última línea era demasiado larga y se ajustaba automáticamente. Pero esto funciona solo para los comentarios al estilo C, pero desafortunadamente no para los guiones principales de Haskell.

Así, por ejemplo, en un JS archivo de

/** 
* This is a very long comment which is longer than 78 chars, yeah really 
* longer than 78 chars... 

se envuelve muy bien, así como

// This is a very long comment which is longer than 78 chars, yeah really 
// longer than 78 chars... 

Así que ahora sería bueno si lo mismo sucede en los comentarios Haskell, como

------------------------------------------------------------------------------ 
-- | This is a very long module description which is longer than 78 chars, 
-- yeah really longer than 78 chars... 

¿Alguien sabe si esto es posible? ¿Dónde se especifica este comportamiento? Hace: establecer formatexpr o: establecer formatoptions ¿me ayudan?

Gracias de antemano por su ayuda!

= < < Johannes

/edit: por cierto yo uso vim 7.3.x

+1

Esto sucede automáticamente en mi caso. Es posible que desee comprobar qué podría estar sobreescribiendo sus opciones. Asegúrate de tener la bandera 'c' en' 'formatoptions'' como @daniel kullmann dijo. El mecanismo que Vim usa para reconocer comentarios se describe en la sección 30.6 del manual del usuario y también con mayor profundidad bajo el tema 'format-comments'. – sidyll

+0

Gracias por la sugerencia de RTFM. :) Eso casi solucionó mi pregunta. Como el [manual] (http://vimdoc.sourceforge.net/htmldoc/change.html#format-comments) describe, es posible establecer comentarios personalizados. Así que agregué esto a mi archivo de sintaxis haskell.vim: 'set comments = s1: - \ \ |, m: -, e: -' Pero esto parece funcionar para los comentarios estilo C como Vim es tan "inteligente" y entra en un espacio en blanco al comienzo de la parte "e" y "m" del comentario. ¿Alguna idea de dónde se puede configurar esto? – JHannes

+1

Vim recientemente (en el último año o dos) comenzó a enviar archivos de sintaxis para Haskell; tal vez deberías actualizar –

Respuesta

2

No soy un usuario vim (y haskell-mode para emacs por lo general sólo "hace lo correcto", la adaptación de gracia a un cierto estilo de sangría), pero el siguiente parecía funcionar para mi prueba rápida:

:set comments=:--\ ,sr:{-,m:\ ,ex:-} 

esto no maneja -- | específicamente, pero que en realidad nunca he visto algo en Haskell sangría así:

-- | Bla Bla 
-- continues right under the Bla 

Es mucho más común que yo sepa a sangrar un comentario como este:

-- | Usually a one-line short description. 
-- 
-- Continued like this, with a longer description. 

O, esta variante:

-- | Bla bla slightly longer than one line description 
-- bla bla. 
-- 
-- Bla bla additional details. 

Si quieres un cuerpo de larga duración de texto que describe su declaración, que pueda comience por un comentario multilínea en su lugar:

{-| 
The definition of 'myfunc', Act I, Chapter 1. Bla bla bla bla 
bla bla... 
-} 
+0

Siempre utilizo el primer estilo de comentario basado en Haddock que mencionaste en mi código ... Me parece más limpio :) – ivanm

3

Debe comprobar el ajuste formatoptions; para mí, tiene el valor croql. c significa que los comentarios continúan en la siguiente línea. Ver :help 'formatoptions'

:set formatoptions=croql 
+1

Gracias por su respuesta, ': set formatoptions?' Muestra 'tcq'. Establecerlo en 'croql' puede ser aconsejable, pero no resuelve mi problema, ya que Vim no puede reconocer el comentario en sí (ver mi comentario anterior). Pero de todos modos, ¡gracias! : D – JHannes

Cuestiones relacionadas