هل يمكنني الحصول على VIM كتلة ترخيص في الجزء العلوي من الملف؟

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

سؤال

هل هناك طريقة لاستخدام طيات أو بعض السحر الأسود VIM-Script غيرها لإخفاء كتل الترخيص في الجزء العلوي من الملفات؟ لا أحب أن يأخذون هذا القسم الكبير من جزء التحرير؛ أحب أن أحصل على معنى ما يفعله الملف عندما أقوم به أولا، بدلا من وجه مليء بالتراجع.

هل كانت مفيدة؟

المحلول

جرب هذا في أوتوكلاند.

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

اضبط النطاق على السطر 4 بشكل مناسب. في أسوأ الحالات حيث تبدأ حقوق الطبع والنشر في أماكن مختلفة وهي بطول متغير يجب أن يفعله هذا النمط:

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

نصائح أخرى

يعتمد ذلك على ما إذا كان هناك نموذج متسق في كتلة الترخيص وما هي اللغة التي تبرمها. على سبيل المثال، يميل بيثون إلى استخدام "foldexpr" لتحديد قابلة للطي، لذلك لإضافة هذا الذي يجب أن تحل محل الوظيفة الموجودة به جديد واحد (أو التخلص من الطي الحالي). أعتقد أن الافتراضي في C هو استخدام قابلة للطي اليدوي (على الرغم من أنه من الممكن تكوينه بهذه الطريقة بنفس الطريقة: لا أستطيع أن أتذكر)، لذلك هذا أسهل بكثير لإضافة قابلة للطي.

مع رسالة حقوق النشر GPL بسيطة مثل واحد في نهاية هذا المنشور، يمكنك تعيين FoldMethod إلى يدوي ولديك وظيفة بسيطة تقوم بإنشاء طية. كل هذا يتوقف على شكل حقوق الطبع والنشر ومدى أهمية الحفاظ على قابلة للطي الحالية. أخشى أنني بحاجة إلى مزيد من التفاصيل قليلا لإعطاء إجابة أكثر فائدة. على أي حال، إليك برنامج نصي مثال يمكن استخدامه لإضعاف إشعار حقوق الطبع والنشر في نهاية هذا المنشور:

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 / البرنامج المساعد الخاص بك.

تحرير: تغيير الرابط إلى VIM.org وتنظيف الجواب

ماذا عن حذفها؟ بجدية.

تعد شفرة المصدر محمية من خلال ملكية الحقوق والترخيص، وليس الغليان. لا يحتاج إلى أن تكون هناك - على الأقل في معظم الحالات.

في حالة GPL وغيرها من المخططات المماثلة التي تتطلب بفعالية النص موجود، يمكن نقله إلى أسفل الملف أو أيا كان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top