Mosè Giordano <m...@gnu.org> writes: Hi!
> 2014-12-09 10:34 GMT+01:00 Tassilo Horn <t...@gnu.org>: >>> Or matching everything between the opening and the closing brace >>> (allowing at least one level of braces)? >> >> Either that, or we could also rely on syntax tables. I.e., since >> `LaTeX-find-matching-end' already brings us to the end of the >> environment name, >> >> (let ((end (point))) >> (forward-char) >> (backward-sexp) >> (forward-char) >> (buffer-substring-no-properties (point) end)) >> >> gives us the environment name. > > Good idea, except that `LaTeX-find-matching-end' fails to find the > closing brace of \end when the environment name is a macro with > arguments. Ah, indeed. During my testing it always stopped at \end{\whatever{foo}|} with | being point, so I assumed that's where it's supposed to stop, i.e., right after the environment name, not right after the environment. I guess it's better to also test the simple cases, not only the complex ones. ;-) > The attached patch should fix this problem. > `LaTeX-environment-name-regexp' needs to be a function because if it > were a variable it would always keep the original value, also in > buffers with different values for `TeX-grop' and `TeX-grcl' (or not?). Correct. Well, it could also be a variable that's initialized in `LaTeX-common-initialization' or so after a call to `hack-local-variables' to apply file local variables first. But IMO it's better to have it as a function. > Probably `LaTeX-modify-environment' can be simplified following your > suggestion, On a second thought, the syntax-table approach will fail in case the environment name is something unbalanced like \foo[{] which is unlikely but possible. So better stick to the regexp-search. > the patch sketches an idea how to fix `LaTeX-find-matching-end', but > can be improved. Looks good to me. Bye, Tassilo _______________________________________________ bug-auctex mailing list bug-auctex@gnu.org https://lists.gnu.org/mailman/listinfo/bug-auctex