Hi Keita, Ikumi Keita <ik...@ikumi.que.jp> writes:
> I noticed some of your recent commits broke compatibility with emacs 26 > and 27. > > On the current master branch, "gmake EMACS=emacs-26.1" (or 27.1) gives > ---------------------------------------------------------------------- > In end of data: > latex.el:9045:1:Warning: the following functions are not known to be defined: > string-trim, always > > ... > In end of data: > style/natbib.el:200:1:Warning: the function ‘string-empty-p’ is not known to > be defined. > > ---------------------------------------------------------------------- > (1) `string-trim' and `string-empty-p' > In emacs 26 and 27, `string-trim' and `string-empty-p' are in subr-x.el, > so it seems that we need `(require 'subr-x)'. (On the other hand, they > are available in subr.el and simple.el in emacs 29. So maybe > (unless (and (fboundp 'string-trim) > (fboundp 'string-empty-p)) > (require 'subr-x)) > or something like it?) Thanks for catching these. I should have checked better :-( I checked the sources and what do you think about something like this in latex.el: (eval-when-compile (when (< emacs-major-version 29) (require 'subr-x))) The `eval-when-compile'-thing is recommended by subr-x.el itself. > (2) `always' > According to NEWS.28, `always' was first introduced in emacs 28. So we > have to replace it with lambda or compatibility function like > (defun TeX-always (&rest _) > t) Upps; I thought is was always there. I'll add that to tex.el, maybe something like this: (if (> emacs-major-version 27) (defalias 'TeX-always #'always) (defun TeX-always (&rest _ignore) "Ignore ARGUMENTS, do nothing and return t. This is a compatibility function for Emacs versions prior to v.28" t)) > In addition, > >> + (cl-letf (((symbol-function 'y-or-n-p) #'always)) > > it seems to me that `cl-flet' suits better than `cl-letf' here. Can you elaborate why? I don't see why `cl-flet' suits better in this case. > (By the way, what is mystery to me is that "gmake EMACS=emacs-26.1" > gives > ---------------------------------------------------------------------- > In TeX-current-defun-name: > tex.el:6770:56:Warning: reference to free variable ‘LaTeX-section-label’ > ---------------------------------------------------------------------- > while emacs 27 and later don't. It seems that emacs 27 and later load > latex.el before they compile tex.el, but I don't see the reason why > emacs 26 doesn't then...) I can't tell either. Will try to build Emacs 26 and maybe I can reproduce this. Best, Arash