Verstecken Sie den langen GPL-Copyright-Hinweis oben in der Datei

10

Ich arbeite mit vielen * cpp- und * h-Dateien, die am Anfang einen langen Copyright-Hinweis enthalten . Ich möchte, dass Emacs diese Dateien so anzeigt, als ob dies nicht vorhanden wäre, ohne den Text tatsächlich zu entfernen.

Das ist, das:

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

sollte einfach so aussehen

#ifndef FILENAME
#define FILENAME
...
Anfänger
quelle

Antworten:

13

Emacs kommt mit, elide-head.elwas genau das tut, wonach Sie fragen.

Um es zu verwenden, fügen Sie es elide-headzu einem Hauptmodus-Hook hinzu oder find-file-hook(sollte in Ihrem Fall c-mode-common-hookfunktionieren). Es kann GPL-Lizenzkommentare sofort ausblenden. Um andere lange Header auszublenden, passen Sie sie an elide-head-headers-to-hide.

Beachten Sie, dass nicht nur ein Kommentar oben im Puffer ausgeblendet wird, sondern reguläre Ausdrücke verwendet werden, um den Anfang und das Ende einer Lizenz abzugleichen.

Konstantin
quelle
1
Ich mag diesen Befehl. Sehr schön.
Tu Do
Schlägt mich jedes Mal. Wann immer ich etwas schreibe, gab es jemanden, der zuerst daran dachte :)
wvxvw
12

Hier ist eine Möglichkeit, dies zu tun:

Fügen Sie dies Ihrer Init-Datei hinzu:

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

In dem Puffer, in dem Sie den ersten Kommentar ausblenden möchten, fügen Sie Folgendes hinzu:

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

Oder fügen Sie dem Puffer-Hook denselben Code hinzu. Oder Sie können sicherlich die Art und Weise ändern, in der der Kommentar, den Sie ausblenden möchten, identifiziert wird (wenn Sie möchten, dass er das #ifndef / #definePaar aufnimmt, müssen Sie die hide-bannerFunktion ändern, um danach zu suchen, und nicht das Ende des ersten Kommentars.

wvxvw
quelle
Funktioniert! Das ist so viel besser, danke. Für den Fall, dass jemand anderes dies braucht, hier ist mein Haken:(add-hook 'c-mode-common-hook 'hide-banner)
Anfänger