Могу ли я заставить Vim игнорировать лицензионный блок в верхней части файла?

StackOverflow https://stackoverflow.com/questions/2250011

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Для этого я создал небольшой vim-плагин.Он определяет, когда следует свернуть первый комментарий на странице.Это сработало в моих тестовых примерах, но, конечно, любое улучшение приветствуется.Должно быть легко добавить другие однострочные или многострочные идентификаторы.

Получи это здесь.Чтобы установить, как и любой другой плагин, просто поместите его в свой ~/.vim/plugin.

Редактировать:Изменил ссылку на vim.org и почистил ответ

Как насчет того, чтобы удалить их?Серьезно.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top