2011-11-29 13 views
12

En realidad, me gustaría mostrar -> con (hay un espacio después de la flecha) en los archivos de Haskell. Pero tengo la impresión de que el mecanismo de ocultación solo funciona para reemplazar -> por un carácter. Un efecto indeseable es una indentación visualmente mala.vim ocultar con más de un carácter

¿Hay alguna manera de lograrlo?

Gracias.

Editar: En realidad yo uso esto, (de haskell.vim (ocultar mejora) plug-in)

syntax match hsNiceOperator "<-" conceal cchar=← 
+0

¿Cuál es su forma de reemplazar un personaje por otro? –

+0

He editado mi respuesta, en realidad utilizo el mecanismo de ocultación utilizado para resaltar la sintaxis – yogsototh

+0

¿se puede publicar la compilación de '" → "' - parece ser esencial para la pregunta? – sehe

Respuesta

16

que hacer exactamente lo que quiere en C. El truco es para ocultar cada personaje por separado, así:

syn match ArrowHead contained ">" conceal cchar=▶ 
syn match ArrowTail contained "-" conceal cchar=─ 
syn match ArrowFull "->" contains=ArrowHead,ArrowTail 

Es posible que ArrowHead o ArrowTail coincidan fuera de ArrowFull, desafortunadamente. Esto se debe a que las reglas de sintaxis existentes usan contains=ALLBUT,... o algo similar.

Para corregir esto en C, agregué ArrowTail y ArrowHead al clúster cParenGroup, lo que parece prevenir cualquier problema.

syn cluster cParenGroup add=ArrowTail,ArrowHead 

Es posible que tenga que hacer algo similar para Haskell.

Como yo no utilizo la función de ocultar en absoluto de lo contrario, le digo a Vim a seguir adelante y "ocultar" las flechas todo el tiempo:

set conceallevel=1 concealcursor=nvic 

Por cierto, si no te gusta los colores por defecto para los caracteres ocultos, puede cambiarlos así:

hi conceal ctermfg=DarkBlue ctermbg=none guifg=DarkBlue guibg=none 
+0

"porque las reglas de sintaxis existentes usan' contiene = ALLBUT, ... 'o algo similar." : use 'containedin = ArrowFull' al final de' syn match ArrowHead [...] 'y' syn match ArrowTail [...] ', entonces. – user2987828

+0

@ user2987828 Esto no funciona para mí en Vim 7.4. Obtengo ArrowHeads y ArrowTails falsos positivos dentro de #defines. – superjer

Cuestiones relacionadas