xref-backend-functions为啥不像说明中的那样把function list都执行呢?

这么改一下试试:

            (defun zjy/xref-find-backends ()
              (let (backends
                    backend)
                (dolist (f (append xref-backend-functions (default-value 'xref-backend-functions)))
                  (when (functionp f)
                    (setq backend (funcall f))
                    (when backend
                      (cl-pushnew backend backends))))
                (reverse (delete-dups backends))))