Вы можете написать функцию, которая сужает ваш буфер ко всем, кроме первых 15 строк.
(defun hide-copyright-note()
"Narrows the current buffer so that the first 15 lines are
hidden."
(interactive)
(save-excursion
(goto-char (point-min))
(forward-line 15)
(narrow-to-region (point) (point-max))))
Тогда все, что вам нужно сделать, это убедиться, что эта функция вызывается для каждого файла, содержащего примечание об авторских правах. Это можно сделать, добавив крючок, предпочтительно в основной режим вашего файла. Например, вы могли бы добавить приведенное выше определение функции и следующую строку в файл .emacs:
(add-hook 'c-mode-hook 'hide-copyright-note)
Это вызов функции «скрыть авторские_права_на_документацию-нотная всякий раз, когда вы открываете файл C.
На практике вы, вероятно, захотите сделать вашу функцию крюка более умной, либо проверив, что на самом деле существует скрытая записка об авторских правах, либо запустив скрыть авторское право, только если файл находится в определенном каталоге и т. Д.
Например, придерживаться примере C, вы можете вставить следующий тест в приведенной выше функции:
(defun hide-copyright-note()
"Narrows the current buffer so that the first 15 lines are
hidden."
(interactive)
(when (copyright-message-p)
(save-excursion
(goto-char (point-min))
(forward-line 15)
(narrow-to-region (point) (point-max)))))
(defun copyright-message-p()
"Returns t when the current buffer starts with a Copyright
note inside a C-style comment"
(save-excursion
(goto-char (point-min))
(looking-at "\\s */\\*\\(:?\\s \\|\\*\\)*Copyright\\b")))
Как для других относятся:
Когда я их открываю в emacs, это отнимает много ценного пространства.
... или вы можете просто прокрутить вниз. Для достижения этой цели автоматически, мы могли бы использовать следующую функцию вместо hide-copyright-note
:
(defun scroll-on-copyright()
"Scrolls down to the 16th line when the current buffer starts
with a copyright note."
(interactive)
(when (copyright-message-p)
(goto-char (point-min))
(beginning-of-line 16)
(recenter 0)))
Однако, почему я рекомендовал первый вариант является то, что если вы просто прокрутите вниз автоматически, то всякий раз, когда вы прыгаете на начало буфера (M-<
) вам придется прокручивать вниз вручную. Эта проблема не возникает с сужением решения.
Спасибо, я попробую. – sligocki
@sligocki: Дайте мне знать, если это сработает для вас. – Thomas
Извините за задержку @Thomas, функция отлично работает! Есть ли у вас какие-либо предложения о том, как это сделать, только если файл начинается с уведомления об авторских правах? Например, я был бы рад, если бы это применимо к чему-либо, начиная с ''/* \ n * Copyright. Что касается вашего другого комментария, есть ли способ, чтобы emacs автоматически прокручивал вперед 15 строк при открытии? Это может быть лучшим решением для простоты. Еще раз спасибо. – sligocki