Скрыть длинное уведомление об авторских правах 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
Мне нравится эта команда. Очень хорошо.
Ту До

Бьет меня каждый раз. Всякий раз, когда я что-то пишу, кто-то первым об этом думал :)
wvxvw

12

Вот один из способов сделать это:

Добавьте это в ваш файл инициализации:

(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функцию для поиска этого, а не в конце первого комментария).


Работает! Это намного лучше, спасибо. В случае каких - либо ELS тело нуждается в этом, вот мой крюк:(add-hook 'c-mode-common-hook 'hide-banner)
начальный
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.