2010-02-12 9 views
8

¿Hay alguna manera de usar pliegues u otra magia negra de Vim-script para ocultar bloques de licencia en la parte superior de los archivos? No me gusta que ocupen una sección tan grande de mi panel de edición; Me gusta tener una idea de lo que está haciendo un archivo cuando lo abro por primera vez, en lugar de una carátula completa.¿Puedo hacer que Vim ignore un bloque de licencia en la parte superior de un archivo?

+0

Cuál es el formato del texto que desea ignorar? –

Respuesta

4

probar este en un AutoCommand.

function! FoldCopyright 
    if !exists("b:foldedCopyright") 
    let b:foldedCopyright = 1 
    1,15fold 
    endif 
endfunction 

Ajuste el rango en la línea 4 adecuadamente. En el peor de los casos donde el derecho de autor se inicia en diferentes lugares y es una longitud variable este patrón debe hacer:

1,/Beginning of copyright/;/End of copyright/ 
+2

Recomiendo usar 'silent!' Delante del comando fold para que si el bloque de licencia no existe, Vim no se queja. – ereOn

0

¿Qué tal si los borramos? Seriamente.

El código fuente está protegido por derechos de propiedad y licencias, no es el texto estándar. No es necesario que esté allí, al menos en la mayoría de los casos.

En el caso de GPL y otros esquemas similares que realmente requieren que el texto esté presente, se puede mover al final del archivo o lo que sea.

+0

¿Y qué pasa si se quiere que las personas lean la información relevante de la licencia ** primero **? Vim es lo suficientemente potente como para doblarlo de forma automática y fácil, así que no es gran cosa ... – ereOn

2

Depende de si hay una forma coherente para el bloque de la licencia y en qué idioma está programando. Por ejemplo, python tiende a usar un 'foldexpr' para definir el plegado, por lo que para agregar esto, debe reemplazar la función existente con una nueva (o deshacerse del plegado existente). Creo que el valor predeterminado en C es usar plegado manual (aunque es posible que yo mismo lo haya configurado de esa manera: no recuerdo), por lo que es mucho más fácil agregar plegado adicional.

Con un simple mensaje de copyright de GPL como el que se encuentra al final de esta publicación, puede establecer foldmethod en manual y tener una función simple que crea un pliegue. Todo depende de la forma del copyright y de la importancia de mantener el plegado existente. Me temo que necesitaría un poco más de detalle para dar una respuesta más útil. De todos modos, aquí está un script de ejemplo que podría ser utilizado para doblar el aviso de copyright al final de este post:

function! CreateCopyrightFold() 
    let InCopyright = 0 
    set foldmethod=manual 
    for Line in range(1,line('$')) 
     let LineContents = getline(Line) 
     if LineContents !~ "^#" 
      if InCopyright 
       let CopyrightEnd = Line - 1 
       exe CopyrightStart . ',' . CopyrightEnd . 'fold' 
      endif 
      break 
     elseif LineContents =~ "Copyright" 
      let InCopyright = 1 
      let CopyrightStart = Line 
     endif 
    endfor 
endfunction 
au BufRead *.py call CreateCopyrightFold() 

Suponiendo un aviso de copyright como la siguiente:

# Copyright (C) 2009 Some Company or Something 
# 
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 

import sys 
# Code continues... 
2

he creado un pequeño plugin para este vim. Adivina cuándo debe doblarse el primer comentario de la página. Funcionó en mis casos de prueba, pero, por supuesto, cualquier mejora es bienvenida. Debería ser fácil agregar otros identificadores de línea individuales o múltiples.

Obten here. Para instalar, como cualquier otro complemento, simplemente colócalo en tu ~/.vim/plugin.

Editar: Se ha cambiado el enlace a vim.org y limpió la respuesta

+0

¿Por qué no enviar este vim.org como un script? –

+0

buena pregunta. no parece muy útil. – fotanus

Cuestiones relacionadas