Function: run-hook-with-args-until-failure

Run HOOK with the specified arguments ARGS.
HOOK should be a symbol, a hook variable. The value of HOOK
may be nil, a function, or a list of functions. Call each
function in order with arguments ARGS, stopping at the first
one that returns nil, and return nil. Otherwise (if all functions
return non-nil, or if there are no functions to call), return non-nil
(do not rely on the precise return value in this case).

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument. (fn HOOK &rest ARGS)