ファイルの上部に長いGPL著作権表示を隠す


10

私は最初に長い著作権表示を含む* cppおよび* hファイルをたくさん扱っています。emacsが実際にテキストを削除せずに、これらのファイルが存在しないかのように表示したいと思います。

これは、これです:

/*
 * Copyright (C) 2006-2008 Author A
 * Copyright (C) 2006-2008 Author B
 * Copyright (C) 2006-2008 Author C
 * Copyright (C) 2006-2008 Author D
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * As a special exception, you may use this file as part of a free
 * software library without restriction. Specifically, if other files
 * instantiate templates or use macros or inline functions from this
 * file, or you compile this file and link it with other files to
 * produce an executable, this file does not by itself cause the
 * resulting executable to be covered by the GNU General Public
 * License. This exception does not however invalidate any other
 * reasons why the executable file might be covered by the GNU Library
 * General Public License.
 * 
 * This library 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
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

 #ifndef FILENAME
 #define FILENAME
 ...

単にこのように見えるはずです

#ifndef FILENAME
#define FILENAME
...

回答:


13

Emacsには、elide-head.elあなたが求めていることを正確に実行するものが付属しています。

それを使用するelide-headには、メジャーモードフックまたはfind-file-hook(あなたの場合c-mode-common-hookは動作するはずです)に追加します。GPLライセンスコメントをすぐに隠すことができます。他の長いヘッダーを非表示にするには、をカスタマイズしelide-head-headers-to-hideます。

バッファーの上部にあるコメントだけを非表示にするのではなく、正規表現を使用してライセンスの開始と終了を一致させることに注意してください。


1
このコマンドが好きです。非常に素晴らしい。
Tu Do

毎回私を打ちます。私が何かを書くときはいつでも、それを最初に考えた人が他にいました:)
wvxvw

12

これを行う1つの方法を次に示します。

これをinitファイルに追加してください:

(defun hide-banner ()
  (save-excursion
    (let* ((start (progn (beginning-of-buffer) (point)))
           (end (progn (forward-comment (buffer-size)) (point)))
           (over (make-overlay start end)))
      (overlay-put over 'invisible t))))

最初のコメントを非表示にするバッファに、次の行を追加します。

// -*- eval: (hide-banner) -*-

または、同じコードをバッファフックに追加します。または、非表示にしたいコメントの識別方法を変更することもできます(#ifndef / #defineペアをピックアップする場合hide-bannerは、最初のコメントの終わりではなく、それを検索するように関数を変更する必要があります。


動作します!これはとても良いです、ありがとう。body elsがこれを必要とする場合、ここに私のフックがあります:(add-hook 'c-mode-common-hook 'hide-banner)
初心者
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.