Mosè Giordano <[email protected]> writes:
Hi Mosè,
sorry for being late with this.
>> If you have a sample tex file plus a recipe how to reproduce the
>> error, I could check myself. E.g. a tex file using siunitx with some
>> custom unit definitions, and then I change it not to use siunitx and
>> revert the buffer, so that I hit the undefined function error.
> LaTeX source code:
> ------------------------------------------------------------------------
> \documentclass{article}
>
> \usepackage{siunitx}
>
> \DeclareSIUnit\parsec{pc}
> \DeclareSIUnit\lightyear{ly}
> ------------------------------------------------------------------------
> Save the buffer, parsed file will be written with this content
> ------------------------------------------------------------------------
> (TeX-add-style-hook
> "test"
> (lambda ()
> (TeX-run-style-hooks
> "latex2e"
> ""
> "article"
> "art10"
> "siunitx")
> (LaTeX-add-siunitx-units
> "\\parsec"
> "\\lightyear")))
> ------------------------------------------------------------------------
> Comment or remove `\usepackage{siunitx}', then save the buffer.
> Parsed file will be written, with `LaTeX-add-siunitx-units' function
> but without `siunitx' hook. Close Emacs, then reopen Emacs and the
> LaTeX source. Result: error message in the echo area
> Symbol's function definition is void: LaTeX-add-siunitx-units
Yep, that was easy to reproduce. I've hopefully fixed that in my last
commit. The style hook application in `TeX-run-style-hooks' is now
guarded by a `condition-case' that simply ignores void-function errors.
--8<---------------cut here---------------start------------->8---
Index: tex.el
===================================================================
RCS file: /sources/auctex/auctex/tex.el,v
retrieving revision 5.710
retrieving revision 5.711
diff -u -r5.710 -r5.711
--- tex.el 25 Feb 2013 12:05:10 -0000 5.710
+++ tex.el 26 Feb 2013 08:01:28 -0000 5.711
@@ -2433,8 +2433,15 @@
(TeX-master-directory))
style (substring style
(match-beginning 2) (match-end 2))))
- (mapcar 'funcall
- (cdr-safe (assoc style TeX-style-hook-list))))))
+ (condition-case err
+ (mapcar 'funcall
+ (cdr-safe (assoc style TeX-style-hook-list)))
+ ;; This happens in case some style added a new parser, and
+ ;; now the style isn't used anymore (user deleted
+ ;; \usepackage{style}). Then we're left over with, e.g.,
+ ;; (LaTeX-add-siunitx-units "\\parsec"), but the function is
+ ;; defined in a style siunitx.el that's not loaded anymore.
+ (void-function nil)))))
styles))
(defcustom TeX-parse-self nil
--8<---------------cut here---------------end--------------->8---
The result is that (1) you obviously don't get an error when opening the
sample file again, and (2) the auto file has the contents
--8<---------------cut here---------------start------------->8---
(TeX-add-style-hook
"unit"
(lambda ()
(TeX-run-style-hooks
"latex2e"
""
"article"
"art10")))
--8<---------------cut here---------------end--------------->8---
afterwards, i.e., the problematic code is gone. Basically, everything
is gone. What's there is the result of reparsing.
Bye,
Tassilo
_______________________________________________
auctex-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/auctex-devel