@@ -63,8 +63,24 @@ void AlignAnalyzer::Analyze(FormatState &f, const LuaSyntaxTree &t) {
6363 break ;
6464 }
6565 }
66+ } else {
67+ switch (syntaxNode.GetTokenKind (t)) {
68+ case TK_SHORT_COMMENT: {
69+ if (f.GetStyle ().align_continuous_inline_comment ) {
70+ AnalyzeInlineComment (f, syntaxNode, t);
71+ }
72+ break ;
73+ }
74+ default : {
75+ break ;
76+ }
77+ }
6678 }
6779 }
80+
81+ for (auto &group: _inlineCommentGroup) {
82+ PushAlignGroup (AlignStrategy::AlignComment, group);
83+ }
6884}
6985
7086void AlignAnalyzer::Query (FormatState &f, LuaSyntaxNode &syntaxNode, const LuaSyntaxTree &t, FormatResolve &resolve) {
@@ -91,6 +107,10 @@ void AlignAnalyzer::Query(FormatState &f, LuaSyntaxNode &syntaxNode, const LuaSy
91107 resolve.SetIndent (alignGroup.AlignPos , IndentStrategy::Absolute);
92108 break ;
93109 }
110+ case AlignStrategy::AlignComment: {
111+ resolve.SetAlign (alignGroup.AlignPos );
112+ break ;
113+ }
94114 default : {
95115 break ;
96116 }
@@ -349,6 +369,23 @@ AlignAnalyzer::ResolveAlignGroup(FormatState &f, std::size_t groupIndex, AlignGr
349369 }
350370 break ;
351371 }
372+ case AlignStrategy::AlignComment: {
373+ std::size_t maxDis = 0 ;
374+ auto &file = t.GetFile ();
375+ for (auto i: group.SyntaxGroup ) {
376+ auto comment = LuaSyntaxNode (i);
377+ if (comment.IsToken (t)) {
378+ auto prev = comment.GetPrevToken (t);
379+ auto newPos =
380+ file.GetColumn (prev.GetTextRange (t).EndOffset ) + f.GetStyle ().space_before_inline_comment + 1 ;
381+ if (newPos > maxDis) {
382+ maxDis = newPos;
383+ }
384+ _resolveGroupIndex[comment.GetIndex ()] = groupIndex;
385+ }
386+ }
387+ group.AlignPos = maxDis;
388+ }
352389 default : {
353390 break ;
354391 }
@@ -459,3 +496,31 @@ void
459496AlignAnalyzer::AnalyzeContinuousSimilarCallArgs (FormatState &f, LuaSyntaxNode &syntaxNode, const LuaSyntaxTree &t) {
460497
461498}
499+
500+ void AlignAnalyzer::AnalyzeInlineComment (FormatState &f, LuaSyntaxNode &syntaxNode, const LuaSyntaxTree &t) {
501+ auto prevToken = syntaxNode.GetPrevToken (t);
502+ if (prevToken.IsNull (t)) {
503+ return ;
504+ }
505+ auto currentLine = syntaxNode.GetStartLine (t);
506+ if (prevToken.GetEndLine (t) != currentLine) {
507+ return ;
508+ }
509+ // now it is inline comment
510+ if (_inlineCommentGroup.empty ()) {
511+ _inlineCommentGroup.emplace_back ();
512+ }
513+ auto &topGroup = _inlineCommentGroup.back ();
514+ if (topGroup.empty ()) {
515+ topGroup.push_back (syntaxNode.GetIndex ());
516+ return ;
517+ }
518+
519+ auto lastComment = LuaSyntaxNode (topGroup.back ());
520+ if (currentLine - lastComment.GetEndLine (t) > 2 ) {
521+ auto &newTopGroup = _inlineCommentGroup.emplace_back ();
522+ newTopGroup.push_back (syntaxNode.GetIndex ());
523+ } else {
524+ topGroup.push_back (syntaxNode.GetIndex ());
525+ }
526+ }
0 commit comments