hooks – before-save-hook para modo cc

Pregunta:

Quiero personalizar cc-mode para ejecutar una función antes de guardar. Una solución sería modificar el mapa de teclas del cc-mode para vincular Cx Cs a una función que realiza el trabajo que necesito y luego lo guarda.

Mi pregunta es si hay un gancho que pueda personalizar para esto. Losdocumentos CC Hooks no mencionan un before-save-hook específicamente para cc-mode . ¿Cómo se debe hacer esto a través de un gancho?

Alternativamente, ¿cómo hago esto a través de defadvice ? Al leer el manual, la única forma que pude ver fue habilitar los consejos antes de guardar y luego deshabilitarlos después de que el trabajo está terminado. Suena engorroso. ¿Cuál sería la forma idiomática de utilizar los advice ?

Respuesta:

Una forma bastante común de restringir la acción de un gancho a un modo mayor en particular es verificar el valor del major-mode .

Por ejemplo, este gancho imprime un mensaje antes de guardar búferes usando el modo c++-mode :

(defun my-c++-mode-before-save-hook ()
  (when (eq major-mode 'c++-mode)
    (message "It's never too early to start saving (C++ code)!")))

(add-hook 'before-save-hook #'my-c++-mode-before-save-hook)

Como nota al margen: a veces puede ser útil comprobar si un modo principal se deriva del modo CC; podemos hacer esto comprobando si c-buffer-is-cc-mode no es nil :

(defun my-cc-mode-before-save-hook ()
  (when c-buffer-is-cc-mode
    (message "Saving a buffer with a major-mode derived from CC Mode.")))

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım