2011-04-25 14 views
5

Ok, no se trata de compilar exactamente, pero recientemente descubrí el comando :compiler en Vim. La ayuda se incluye en la documentación quickfix, y con la mayor exactitud entendí que podía correr:Compilando Perl en Vim con quickfix

:compiler perl 

Para seleccionar el intérprete Perl. A continuación, la ayuda dice:

El compilador de Perl plugin en realidad no compilar, pero invoca función de comprobación de sintaxis interno de Perl y analiza la salida de los posibles errores para que pueda corregirlos en el modo de solución rápida.

Pero como no está claro qué debería ejecutar realmente el programa. ¿Puedo ejecutar :make, incluso sin un archivo make? Eso tiene sentido para mí, ya que:

echo &makeprg 

devoluciones perl -Wc %. Sin embargo ...

Haciendo eso en un programa de prueba falso, solo devuelve la salida de formato de errores estándar, no se abre ninguna ventana de revisión. ¿Que me estoy perdiendo aqui?

+1

buena pregunta posando. gracias por proporcionar detalles de lo que sabes y de lo que probaste – sehe

+0

@sehe: ¡Bien, gracias por responder! Solo hice mi deber de investigar antes de simplemente preguntar. – sidyll

Respuesta

4

Sólo tiene que abrir la ventana quickfix con

:copen 

errores navegar con

:crew 
:cnext 
:cprev 

Tenga en cuenta que una trampa común con quickfixing utilizando un no es del proyecto marca (es decir, donde el makeprg variable generalmente incluye el nombre del búfer actual (expansión de %)), es que cuando el foco está en la ventana de revisión, La emisión de :make volverá a fallar, porque el búfer quickfix no tiene ningún nombre de archivo asociado. Quizás esto podría solucionarse suministrando un nombre artificial para la ventana de revisión rápida en, por ejemplo, el modo de compilador Perl para vim?

+0

Ahh, obviamente, si quiero ver la ventana de revisión, tengo que abrirla. Acerca de la expansión '%', gracias por señalarlo. De hecho, lo primero que me vino a la mente fue incluir algo en '.../compilers/perl.vim', pero creo que no sería posible nombrar la ventana quickfix. Intenté pasar '#' para hacer como argumento, ya que aparentemente parece que '%' se expande a nada, pero tampoco funcionó. Dice "No se debe hacer nada por {perlfile}". – sidyll

1

Usando el siguiente código, y F6 puede ejecutar script perl y se muestra en quickfix.

func! checkPerlSyntax() 
    let map = &makeprg 
    let ef = &errorformat 
    let exeFile = expand("%:t") 
    setlocal makeprg=perl 
    set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m 
    silent make % 
    copen 
    let &makeprg  = mp 
    let &errorformat = ef 
endfunc 

nmap pl :!perl %<.pl<CR> 
map <F6> :call checkPerlSyntax()<CR>