Question

Y at-il un moyen d'utiliser des plis ou une autre magie noire Vim-script pour cacher des blocs de licence en haut des fichiers? Je n'aime pas qu'ils prennent une telle grande partie de mon volet d'édition; J'aime avoir une idée de ce qu'un fichier est en train de faire quand je l'ouvre, plutôt que d'une face pleine de passe-partout.

Était-ce utile?

La solution

Essayez ceci dans une autocommande.

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

Régler la portée de la ligne 4 de manière appropriée. Dans le pire des cas où le droit d'auteur commence à différents endroits et une longueur variable ce modèle devrait faire:

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

Autres conseils

Cela dépend s'il y a une forme cohérente au bloc de licence et la langue que vous la programmation. Par exemple, python a tendance à utiliser un « foldexpr » pour définir le pliage, afin d'ajouter ce que vous auriez à remplacer la fonction existante par un nouveau (ou de se débarrasser du pliage existant). Je crois que la valeur par défaut dans C est d'utiliser le pliage manuel (bien qu'il soit possible que je configuré de cette façon moi-même: je ne me souviens pas), donc ce qui est beaucoup plus facile d'ajouter de pliage supplémentaire

.

Avec un simple message de copyright GPL comme celui à la fin de ce poste, vous pouvez définir foldmethod manuel et une fonction simple qui crée un pli. Tout dépend de la forme du droit d'auteur et combien il est important pour vous de maintenir le pliage existant. Je crains que je besoin d'un peu plus de détails pour donner une réponse plus utile. Quoi qu'il en soit, voici un exemple de script qui pourrait être utilisé pour plier l'avis du droit d'auteur à la fin de ce 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()

En supposant un avis de droit d'auteur comme celui-ci:

# 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...

J'ai créé un petit plugin vim pour cela. Il devine quand le premier commentaire de la page doit être plié. Il a travaillé sur mes cas de test, mais, bien sûr, toute amélioration est la bienvenue. Il devrait être facile d'ajouter d'autres identifiants de ligne unique ou multiple.

. Pour installer, comme tout autre plug-in, déposez simplement dans votre ~ / .vim / plug-in.

Edit: Changé le lien vers vim.org et nettoyé la réponse

Qu'en est-il de les supprimer? Sérieusement.

Le code source est protégé par des droits de propriété et les licences, pas le passe-partout. Il n'a pas besoin d'être là au moins dans la plupart des cas.

Dans le cas de GPL et d'autres régimes similaires qui ne nécessitent effectivement le texte soit présent, il peut être déplacé vers le bas du fichier ou autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top