Puis-je ignorer un bloc Vim de licence en haut d'un fichier?
-
20-09-2019 - |
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.
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.