On Tue, 2025-05-13 at 12:45 -0700, Yuan Fu wrote: > Hey, sorry for the delay. > > > On May 10, 2025, at 3:16 AM, Eli Zaretskii wrote: > > > > > From: Konstantin Kharlamov > > > Date: Thu, 01 May 2025 20:39:02 +0700 > > > > > > After poking around I wrote a patch (attached). > > Thanks! LGTM. For some reason I can’t apply the patch on either > emacs-30 or master. [1] Oh, interesting. I kind of know where the error is coming from, but only partially. The reason for the error is that the patch I sent was applied over the patch for #78121 (which is pending btw 😊) as I'm using them both for coding. At the same time, I don't really understand the source of the error as the same parameters work for me: ╰─λ git am --3way -- /tmp/1.patch Applying: typescript-ts: align ternary-chain branches (bug#78187) Using index info to reconstruct a base tree... M lisp/progmodes/typescript-ts-mode.el M test/lisp/progmodes/typescript-ts-mode-resources/indent.erts Falling back to patching base and 3-way merge... Auto-merging test/lisp/progmodes/typescript-ts-mode-resources/indent.erts Auto-merging lisp/progmodes/typescript-ts-mode.el Either way, I redone the patch on top of the tree, please try this one > > > Worth noting though, for > > > some reason it doesn't work for ternary without starting colon, > > > e.g.: > > > > > >    const a = cond1 ? 1 : > > >      cond2 ? 2 : > > >      cond3 ? 3 : 4; > > > > > > I'm unclear why, per my understanding the "standalone-parent" of > > > the > > > whole ternary chain (disregarding where the point is) is the > > > `const a > > > =` declaration. > > The standalone rule just keeps going up the parse tree until it finds > a node that starts on a new line. In this case, if you start form > cond3, it’ll go up until reaching the teneray_expression node > containing cond2. This node starts on a new line so standalone-parent > stops here. So the cond3 line uses the cond2 line as the anchor, > instead of the “const a” line. If you add a cond4 line, it’ll use the > cond3 line as anchor. > > There’re several ways to fix it. The best way is to add a new anchor > to the presets that does what standalone-parent does, but > additionally excludes some nodes. Something like (standalone-parent- > excluding “regexp”). Then this can be used for both typescript and > c/c++ (and java, etc). Oh, I see, thank you!