Puede escribir una función que limite su búfer a todo menos las primeras 15 líneas.
(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))))
Entonces todo lo que necesita hacer es asegurarse de que esta función se llama para cada archivo que contiene una nota de derechos de autor. Esto se puede hacer agregando un gancho, preferiblemente en el modo principal de su archivo. Por ejemplo, podría agregar la definición de la función anterior y la siguiente línea en el fichero .emacs:
(add-hook 'c-mode-hook 'hide-copyright-note)
Esto sería llamar a la función 'ocultar-copyright-nota cada vez que abra un archivo C.
En la práctica, es probable que desee hacer su función de enlace más inteligente, ya sea verificando si existe una nota de copyright para ocultar o ejecutando hide-copyright-note solo si un archivo está en cierto directorio, etc.
por ejemplo, para seguir con el ejemplo C, podría insertar la siguiente prueba en la función anterior:
(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")))
en cuanto a su otra preocupación:
Cuando los tengo abiertos en emacs, eso desperdicia mucho espacio valioso.
... o usted podría desplazarse hacia abajo. Para lograr esto de forma automática, se podría utilizar la siguiente función en lugar de 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)))
Sin embargo, la razón por la que recomienda la primera variación es que si se limita a desplazarse hacia abajo de forma automática, entonces cada vez que salta al principio del búfer (M-<
) tendrás que desplazarte hacia abajo nuevamente de forma manual. Este problema no ocurre con la solución de reducción.
Gracias, intentaré eso. – sligocki
@sligocki: Avíseme si le funcionó. – Thomas
Disculpa la demora @Thomas, ¡la función funciona muy bien! ¿Tiene alguna sugerencia sobre cómo hacer esto solo se aplica a cuando el archivo comienza con un aviso de copyright? Por ejemplo, me gustaría que se aplique a todo lo que comience con '"/* \ n * Copyright "'. En cuanto a su otro comentario, ¿hay alguna forma de hacer que emacs avance automáticamente 15 líneas en abierto? Esa podría ser una mejor solución para la simplicidad. Gracias de nuevo. – sligocki