@@ -267,9 +267,10 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatBlock(std::shared_ptr<LuaAstN
267267 case LuaAstNodeType::AssignStatement:
268268 case LuaAstNodeType::LocalStatement:
269269 {
270- if (NextMatch (it, LuaAstNodeType::AssignStatement, statements)
271- || NextMatch (it, LuaAstNodeType::LocalStatement, statements)
272- || NextMatch (it, LuaAstNodeType::Comment, statements))
270+ if (!indentEnv->IsDisableEnv ()
271+ && (NextMatch (it, LuaAstNodeType::AssignStatement, statements)
272+ || NextMatch (it, LuaAstNodeType::LocalStatement, statements)
273+ || NextMatch (it, LuaAstNodeType::Comment, statements)))
273274 {
274275 indentEnv->AddChild (FormatAlignStatement (it, statements));
275276 }
@@ -331,6 +332,28 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatBlock(std::shared_ptr<LuaAstN
331332 commentStatement->AddChild (comment);
332333 indentEnv->AddChild (commentStatement);
333334 indentEnv->Add <KeepLineElement>();
335+
336+ // emmylua doc ---@format
337+ auto shortComment = statement->FindFirstOf (LuaAstNodeType::ShortComment);
338+ if (shortComment)
339+ {
340+ auto docTagFormat = shortComment->FindFirstOf (LuaAstNodeType::DocTagFormat);
341+ if (docTagFormat)
342+ {
343+ auto disableKeyWorld = docTagFormat->FindFirstOf (LuaAstNodeType::KeyWord);
344+ if (disableKeyWorld)
345+ {
346+ if (disableKeyWorld->GetTokenType () == TK_DOC_DISABLE)
347+ {
348+ indentEnv->EnableDisableFormat ();
349+ }
350+ else if (disableKeyWorld->GetTokenType () == TK_DOC_DISABLE_NEXT)
351+ {
352+ indentEnv->EnableDisableNext ();
353+ }
354+ }
355+ }
356+ }
334357 }
335358 break ;
336359 }
@@ -1261,7 +1284,7 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatCallArgList(std::shared_ptr<L
12611284 if (!expression->GetChildren ().empty ())
12621285 {
12631286 auto first = expression->GetChildren ().front ();
1264- if (first->GetType () == LuaAstNodeType::ClosureExpression
1287+ if (first->GetType () == LuaAstNodeType::ClosureExpression
12651288 || first->GetType () == LuaAstNodeType::TableExpression
12661289 || _options.align_call_args == AlignCallArgs::OnlyNotExistCrossExpression)
12671290 {
@@ -1273,10 +1296,10 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatCallArgList(std::shared_ptr<L
12731296 }
12741297 }
12751298
1276- if (canAligned
1299+ if (canAligned
12771300 && _options.align_call_args == AlignCallArgs::OnlyAfterMoreIndentionStatement
12781301 && (!ast_util::IsNodeAfterMoreIndentionStatement (child))
1279- )
1302+ )
12801303 {
12811304 canAligned = false ;
12821305 }
@@ -1786,6 +1809,11 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatAlignStatement(LuaAstNode::Ch
17861809 break ;
17871810 }
17881811
1812+ if (nextChild->GetType () == LuaAstNodeType::Comment && ast_util::IsTagFormat (nextChild))
1813+ {
1814+ break ;
1815+ }
1816+
17891817 // 检查是否会是内联注释 比如 local t = 123 -- inline comment
17901818 if ((currentChild->GetType () == LuaAstNodeType::LocalStatement || currentChild->GetType () ==
17911819 LuaAstNodeType::AssignStatement) && nextChild->GetType () == LuaAstNodeType::Comment
0 commit comments