Domanda

Esiste un modo per utilizzare pieghe o qualche altra magia nera di Vim-script per nascondere i blocchi di licenza nella parte superiore dei file?Non mi piace che occupino una sezione così ampia del mio riquadro di modifica;Mi piace avere un'idea di cosa sta facendo un file quando lo apro per la prima volta, piuttosto che un mucchio di boilerplate.

È stato utile?

Soluzione

Prova questo in un autocomando.

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

Regolare la gamma sulla linea 4 opportunamente. Nel peggiore dei casi in cui i diritti d'autore inizia in luoghi diversi ed è una lunghezza variabile questo modello dovrebbe fare:

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

Altri suggerimenti

Dipende se c'è una forma coerente al blocco di licenza e che lingua si sta programmando. Ad esempio, python tende ad utilizzare un 'foldexpr' per definire pieghevole, in modo di aggiungere questo che ci si deve sostituire il funzione esistente con uno nuovo (o eliminare la piegatura esistente). Credo che il default in C è quello di utilizzare la piegatura manuale (anche se è possibile che ho configurato in questo modo io: non mi ricordo), quindi questo è molto più facile aggiungere pieghevole extra

.

Con un semplice messaggio di copyright GPL come quello alla fine di questo post, è possibile impostare foldmethod al manuale ed avere una semplice funzione che crea una piega. Tutto dipende dalla forma del diritto d'autore e di quanto sia importante per voi per mantenere la piegatura esistente. Ho paura che ci vorrebbe un po 'più in dettaglio per dare una risposta più utile. Comunque, ecco uno script di esempio che potrebbe essere utilizzato per piegare l'avviso di copyright, alla fine di questo 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()

Supponendo un avviso di copyright come questa:

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

Ho creato un piccolo plugin Vim per questo.Prevede quando piegare il primo commento della pagina.Ha funzionato sui miei casi di test, ma, ovviamente, qualsiasi miglioramento è il benvenuto.Dovrebbe essere facile aggiungere altri identificatori di riga singoli o multipli.

Prendilo Qui.Per installarlo, come qualsiasi altro plugin, basta inserirlo nel tuo ~/.vim/plugin.

Modificare:Modificato il collegamento a vim.org e ripulito la risposta

Come sull'eliminazione di loro? Scherzi a parte.

Il codice sorgente è protetto da diritti di proprietà e licenze, non il testo costante. Non ha bisogno di essere lì, almeno nella maggior parte dei casi.

Nel caso del GPL e di altri sistemi analoghi che non richiedono in modo efficace il testo sia presente, può essere spostato alla fine del file o qualsiasi altra cosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top