On Thu, Nov 6, 2025 at 12:31 AM Arash Esbati <[email protected]> wrote: > > Hongyi Zhao <[email protected]> writes: > > > The most significant advantage I've found is the on-the-fly > > diagnostics. The server flags issues like undefined labels, incorrect > > command usage, or missing packages as you type, often before you even > > think about compiling. This shortens the feedback cycle dramatically > > and catches small mistakes instantly. > > Thanks. In my workflow, these were non-issues: I added and referenced > labels/citations exclusively with RefTeX, so there were no undefined > labels, commands were provided by AUCTeX-completion, and I was happy > that the editor didn't add any new packages to my file behind my back. > > > Modern LSPs also add seamless "go to definition" for labels/citations > > and richer context-aware autocompletion (e.g., showing abstracts for > > \cite candidates), which feels very much like a modern IDE. > > Check `reftex-view-crossref'. > > > Many people now seem to be adopting a hybrid approach: > > > > 1. Using LSP for the live error-checking and smart navigation. > > 2. Still relying on AUCTeX for its superior compilation process (C-c > > C-c) and the amazing preview-latex feature, which LSP can't replace. > > > > It's less of a replacement and more of a powerful enhancement. Just > > thought I'd share my perspective on how things have evolved recently. > > Yes, this seems to the reality now. Don't get me wrong, I'm not arguing > against a LSP-server, I think it just didn't fit the way I wrote LaTeX > files. > > Personally, I think the killer feature of AUCTeX (or Emacs in general) > is bound to M-q.
But in my case, I only found that: ```C-h k M q RET M-q runs the command fill-paragraph (found in global-map), which is an interactive native-comp-function in ‘fill.el’. It is bound to M-q. (fill-paragraph &optional JUSTIFY REGION) Inferred type: (function (&optional t t) t) Fill paragraph at or after point. If JUSTIFY is non-nil (interactively, with prefix argument), justify as well. If ‘sentence-end-double-space’ is non-nil, then period followed by one space does not end a sentence, so don’t break a line there. The variable ‘fill-column’ controls the width for filling. If ‘fill-paragraph-function’ is non-nil, we call it (passing our argument to it), and if it returns non-nil, we simply return its value. If ‘fill-paragraph-function’ is nil, return the ‘fill-prefix’ used for filling. The REGION argument is non-nil if called interactively; in that case, if Transient Mark mode is enabled and the mark is active, call ‘fill-region’ to fill each of the paragraphs in the active region, instead of just filling the current paragraph. Probably introduced at or before Emacs version 1.1. ``` > Best, Arash Regards, Zhao
