Hi Arash, On Sat, Feb 28, 2026 at 22:17 (+0100), Arash Esbati wrote:
> Jim Diamond <[email protected]> writes: >> A patch to fix this particular bug is attached. I do have a longish >> comment as part of the patch, which some future developer might find >> useful. >> The indentation for ConTeXt still has some issues, but with this patch >> there is one less. > Thanks for the patch. I have some minor comments, see below. >> From bb2eee7fa71539b368b461dee8823c923d7a9903 Mon Sep 17 00:00:00 2001 >> From: Jim Diamond <[email protected]> >> Date: Wed, 25 Feb 2026 18:31:46 -0400 >> Subject: [PATCH] Fix indentation for ConTeXt macros with arguments >> * context.el (ConteXt-find-indent): add a specific case to > ^ Add >> handle macro definitions with arguments where the open brace >> is on the next line, otherwise the indentation is wildly >> incorrect. (Bug#80454) >> --- >> context.el | 19 +++++++++++++++++++ >> 1 file changed, 19 insertions(+) >> diff --git a/context.el b/context.el >> index 25cbeb34..9872bb51 100644 >> --- a/context.el >> +++ b/context.el >> @@ -1412,6 +1412,25 @@ else. There might be text before point." >> (ConTeXt-environment-start-name) >> ConTeXt-text)))) ; other environments? >> (+ indent (current-column) ConTeXt-indent-basic)) >> + ;; This code correctly indents the initial brace of a macro with >> + ;; arguments when the brace is on the following line. >> + ;; JD note: It is unclear to me what the code in the 't' case below >> + ;; is trying to accomplish; modifying it to not incorrectly indent >> + ;; an open brace following the \def line of a macro with argument(s) >> + ;; seems likely to break something else (also for \define). >> + ;; Therefore handle \def and \define with this specific case. >> + ;; Note that \def might be preceded by various combinations of >> + ;; the following modifiers (LMTX): >> + ((or (looking-at >> + (concat "\\(?:" >> + (regexp-opt '("\\enforced" "\\expandafter" "\\frozen" >> + "\\global" "\\instance" "\\immutable" >> + "\\mutable" "\\noaligned" "\\noexpand" >> + "\\overloaded" "\\permanent" >> "\\protected" >> + "\\tolerant" "\\untraced")) >> + "*\\)\\\\def\\\\")) > In case you don't need the match later, you can consider using > `looking-at-p'. Excellent suggestion. There are things I've forgotten, and things I never knew, and I think looking-at-p falls into the second category. > And what do you think about: > (concat "\\(?:\\\\" > (regexp-opt '("enforced" "expandafter" "frozen" > "global" "instance" "immutable" > "mutable" "noaligned" "noexpand" > "overloaded" "permanent" "protected" > "tolerant" "untraced")) > "\\)*\\\\def\\\\") I think it is much nicer. >> + (looking-at "\\\\define[[\\\\]")) > (looking-at-p "\\\\define[[\\]")) > should work; you don't need \\\\ inside the char alternative for a > single backslash. Good catch on that as well. I got so used to doubling my backslashes that I just kept going. Those are all nice improvements, thanks for looking so closely and mentioning them to me. Jim _______________________________________________ bug-auctex mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-auctex
