Nascondi una lunga nota sul copyright GPL nella parte superiore del file


10

Sto lavorando con molti file * cpp e * h che all'inizio contengono un lungo avviso sul copyright . Vorrei che Emacs mostrasse questi file come se non ci fossero, senza rimuovere effettivamente il testo.

Ecco, questo:

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

dovrebbe semplicemente apparire così

#ifndef FILENAME
#define FILENAME
...

Risposte:


13

Emacs arriva con quello elide-head.elche fa esattamente quello che stai chiedendo.

Per usarlo, aggiungi elide-headad un hook modalità principale o find-file-hook(nel tuo caso c-mode-common-hookdovrebbe funzionare). Può nascondere i commenti della licenza GPL fuori dalla scatola; per nascondere altre lunghe intestazioni, personalizzare elide-head-headers-to-hide.

Si noti che non nasconde solo alcun commento nella parte superiore del buffer ma utilizza espressioni regolari per abbinare l'inizio e la fine di una licenza.


1
Mi piace questo comando Molto bella.
Tu Do

Mi batte ogni volta. Ogni volta che scrivo qualcosa, c'era qualcun altro a pensarci prima :)
wvxvw,

12

Ecco un modo per farlo:

Aggiungi questo al tuo file 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))))

Nel buffer in cui si desidera nascondere il commento iniziale aggiungere:

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

Oppure aggiungi lo stesso codice all'hook buffer. Oppure potresti sicuramente cambiare il modo in cui viene identificato il commento che vuoi nascondere (se vuoi che raccolga la #ifndef / #definecoppia, allora dovrai modificare la hide-bannerfunzione per cercarlo piuttosto che la fine del primo commento.


Lavori! È molto meglio, grazie. Nel caso in cui qualche body els ne abbia bisogno, ecco il mio gancio:(add-hook 'c-mode-common-hook 'hide-banner)
Principiante
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.