emacs: is before-save-hook a local variable?

前端 未结 5 1409
陌清茗
陌清茗 2021-01-02 04:11

how would I figure this out?

I added delete-trailing-whitespace to the before-save-hook in my c-mode-common-hook, but it loo

5条回答
  •  无人及你
    2021-01-02 04:26

    Use write-contents-function instead:

    write-contents-functions is a variable defined in `files.el'.
    Its value is nil
    
      Automatically becomes buffer-local when set in any fashion.
    
    Documentation:
    List of functions to be called before writing out a buffer to a file.
    If one of them returns non-nil, the file is considered already written
    and the rest are not called and neither are the functions in
    `write-file-functions'.
    
    This variable is meant to be used for hooks that pertain to the
    buffer's contents, not to the particular visited file; thus,
    `set-visited-file-name' does not clear this variable; but changing the
    major mode does clear it.
    
    For hooks that _do_ pertain to the particular visited file, use
    `write-file-functions'.  Both this variable and
    `write-file-functions' relate to how a buffer is saved to file.
    To perform various checks or updates before the buffer is saved,
    use `before-save-hook'.
    

    You should create a wrapper to call delete-trailing-whitespace as you want to ensure that you return nil from the wrapper, so that further processing (and eventual saving) takes place.

提交回复
热议问题