У меня может быть Vim, игнорируют блок лицензии наверху файла?

Существует ли способ использовать сгибы или некоторую другую черную магию сценария Vim скрыть блоки лицензии наверху файлов? Мне не нравится это, они поднимают такой большой раздел моей области редактирования; мне нравится получать смысл для того, что делает файл, когда я сначала открываю его, а не полная поверхность шаблона.

9
задан Steven Dee 11 February 2010 в 20:18
поделиться

3 ответа

Попробуйте сделать это в автокоманде.

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

Отрегулируйте диапазон в строке 4 соответствующим образом. В худшем случае, когда авторские права начинаются в разных местах и имеют переменную длину, этот шаблон должен выглядеть так:

1,/Beginning of copyright/;/End of copyright/
4
ответ дан 3 November 2019 в 03:47
поделиться

Это зависит от того, существует ли согласованная форма лицензионного блока и от того, на каком языке вы программируете. Например, python имеет тенденцию использовать 'foldexpr' для определения сворачивания, поэтому, чтобы добавить это, вам нужно будет заменить существующую функцию с новой (или избавиться от существующей сворачивания). Я считаю, что по умолчанию в C используется ручное складывание (хотя возможно, что я сам настроил его таким образом: я не помню), поэтому намного проще добавить дополнительное складывание.

С помощью простого сообщения об авторских правах GPL, подобного тому, что приведено в конце этого поста, вы можете установить метод сворачивания вручную и иметь простую функцию, которая создает свертку. Все зависит от формы авторских прав и от того, насколько важно для вас сохранить существующую фальцовку. Боюсь, мне понадобится немного больше подробностей, чтобы дать более полезный ответ. В любом случае, вот пример сценария, который можно использовать для свертывания уведомления об авторских правах в конце этого сообщения:

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()

Предполагая уведомление об авторских правах, подобное этому:

# 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
ответ дан 3 November 2019 в 03:47
поделиться

Как насчет их удаления? Шутки в сторону.

Исходный код защищен правами собственности и лицензированием, а не шаблоном. Этого не должно быть - по крайней мере, в большинстве случаев.

В случае GPL и других подобных схем, которые действительно требуют наличия текста, его можно переместить в конец файла или что-то еще.

0
ответ дан 3 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: