Hi Keita, Ikumi Keita <[email protected]> writes:
> I think I have figured out the reason. The culprit is the insufficient > capability of pseudo-parent mode facility I discussed in bug#69069[1]. > Eglot finds out the correct server if we extend > `provided-mode-derived-p' so that several our new modes identify > themselves as descended from `tex-mode' as the attached patch. Thanks for digging into this. Your patch LGTM, do you want to install it? > ;; COMPATIBILITY for Emacs<30 > (unless (fboundp 'derived-mode-add-parents) I'm not sure but I think you can add (declare-function TeX--compat-provided-mode-derived-p "tex") here if you want to silence the compiler; `declare-function' doesn't need to be top-level, IIRC. > - (advice-add 'derived-mode-p :after-until > + (advice-add 'provided-mode-derived-p :after-until > ;; Don't quote by #'-style to avoid compiler warning. > - 'TeX--compat-derived-mode-p) > - (defun TeX--compat-derived-mode-p (&rest modes) > - "Add pseudo-parents facility to `derived-mode-p' like Emacs 30. > -Modes registered in `derived-mode-extra-parents' property of the > -current major mode name symbol are regarded as parent modes as > -long as `derived-mode-p' is concerned." > - (let ((extra-parents (get major-mode 'derived-mode-extra-parents))) > - (and extra-parents > - (cl-loop for parent in extra-parents > - thereis (memq parent modes)))))) > + 'TeX--compat-provided-mode-derived-p) > + (defun TeX--compat-provided-mode-derived-p (mode &rest modes) > + "Add pseudo-parents facility to `provided-mode-derived-p' like Emacs 30. > +Modes registered in `derived-mode-extra-parents' property of MODE > +symbol are regarded as parent modes by `provided-mode-derived-p'." > + (when (rassq mode TeX-mode-comparison-alist) > + (let ((extra-parents (get mode 'derived-mode-extra-parents))) > + (and extra-parents > + (cl-loop for parent in extra-parents > + thereis (memq parent modes))))))) Best, Arash
