Masquer la longue notice de copyright GPL en haut du fichier

10

Je travaille avec beaucoup de fichiers * cpp et * h qui contiennent une longue notice de copyright au début. Je voudrais qu'emacs montre ces fichiers comme s'ils n'étaient pas là, sans réellement supprimer le texte.

C'est, ceci:

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

devrait simplement ressembler à ceci

#ifndef FILENAME
#define FILENAME
...
Débutant
la source

Réponses:

13

Emacs est fourni avec elide-head.elce qui fait exactement ce que vous demandez.

Pour l'utiliser, ajoutez elide-headà un hook de mode majeur ou find-file-hook(dans votre cas c-mode-common-hookdevrait fonctionner). Il peut masquer les commentaires de licence GPL hors de la boîte; pour masquer d'autres en-têtes longs, personnalisez elide-head-headers-to-hide.

Notez qu'il ne masque pas n'importe quel commentaire en haut du tampon mais utilise des expressions régulières pour faire correspondre le début et la fin d'une licence.

Constantine
la source
1
J'aime cette commande. Très agréable.
Tu Do
Me bat à chaque fois. Chaque fois que j'écris quelque chose, il y a quelqu'un d'autre qui y pense en premier :)
wvxvw
12

Voici une façon de procéder:

Ajoutez ceci à votre fichier 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))))

Dans le tampon où vous souhaitez masquer le commentaire initial, ajoutez:

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

Ou ajoutez le même code au crochet tampon. Ou vous pouvez certainement changer la façon dont le commentaire que vous souhaitez masquer est identifié (si vous vouliez qu'il prenne la #ifndef / #definepaire, alors vous auriez besoin de modifier la hide-bannerfonction pour la rechercher plutôt que la fin du premier commentaire.

wvxvw
la source
Travaux! C'est tellement mieux, merci. Dans le cas où un corps els en aurait besoin, voici mon crochet:(add-hook 'c-mode-common-hook 'hide-banner)
Débutant