2012-07-31 9 views
7

Estoy creando un archivo de sintaxis personalizado para vim, y para que el código sea más fácil de leer, quiero decirle a vim cómo sangrar el código automáticamente. En este momento, mi habitual re-guión gg=G'' en vim simplemente se deshace de todos los espacios en blanco al principio de cada línea:Crear sintaxis vim personalizada: ¿Puedo establecer reglas personalizadas de auto-sangría?

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
countX = 0; 
IF (@("X_19") = "X") THEN 
countX += 1; 
END 
IF (@("X_20") = "X") THEN 
countX += 1; 
END 
IF (@("X_21") = "X") THEN 
countX += 1; 
END 
... 

me gustaría configurarlo de manera que los comentarios (que comienzan con *) no son sangría en absoluto (sin espacios en blanco al comienzo de la línea), pero el resto está sangrado en función de IF y END. El mismo código, adecuadamente sangría (suponer incluso el primero si está dentro de un bloque aún mayor SI/END):

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
     countX = 0; 
     IF (@("X_19") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_20") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_21") = "X") THEN 
      countX += 1; 
     END 
     ... 

tengo la sintaxis higlighting configurar, y palabras clave y funciones incorporadas que ya forman parte de un dal archivo .vim Aquí está el dal.vim actual:

http://pastebin.com/PEcSvqM9

¿Hay una manera de cambiar lo que tengo hasta que el código automáticamente guión dentro de los bloques/END IF, manteniendo todos los comentarios sin espacios en blanco al principio ?

Pregunta adicional: ¿Cómo puedo configurar el doblado de código para seguir esos bloques IF/END? En este momento estoy haciendo zf2j para doblar este código.

+1

Comentarios sin sangrado es una opción muy extraña. Nunca lo preferiría ya que rompe la lectura del código, a menos que no tenga otras variantes, por supuesto. – ZyX

+1

Estoy totalmente de acuerdo, pero no es mi elección. Los scripts de Dal se quejan si los comentarios tienen sangría. – maccam912

Respuesta

2

Tiene que escribir un complemento de sangría y ponerlo en el subdirectorio indent. Más se explica en

:h 'indentexpr' 

, es lo que su plugin debería establecer. Siéntase libre de obtener ejemplos de un centenar de scripts de sangría distribuidos con vim. No escribí dichos complementos yo solo, así que no puedo decir cuál de ellos será más útil como ejemplo.

Para el plegado de código echa un vistazo a

:h :syn-fold 

Ah, y no establecen guión en un archivo de sintaxis. No es imposible, pero no es el lugar correcto para este tipo de trabajo.

Cuestiones relacionadas