diff --git a/docs/examples.rst b/docs/examples.rst index d3b4480..cd9cbb9 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -253,7 +253,7 @@ on one line. The action and icon are optional. .. code-block:: menu { - item _("Copy") "app.copy" "copy-symbolic"; + item (_("Copy"), "app.copy", "copy-symbolic") } diff --git a/gtkblueprinttool/extensions/gtk_menu.py b/gtkblueprinttool/extensions/gtk_menu.py index cc43bff..178fb4d 100644 --- a/gtkblueprinttool/extensions/gtk_menu.py +++ b/gtkblueprinttool/extensions/gtk_menu.py @@ -95,19 +95,28 @@ menu_item_shorthand = Group( Sequence( Keyword("item"), UseLiteral("tag", "item"), + OpenParen(), Group( MenuAttribute, Sequence(UseLiteral("name", "label"), value), ), - Optional(Group( - MenuAttribute, - Sequence(UseLiteral("name", "action"), value), + Optional(Sequence( + Comma(), + Optional(Sequence( + Group( + MenuAttribute, + Sequence(UseLiteral("name", "action"), value), + ), + Optional(Sequence( + Comma(), + Group( + MenuAttribute, + Sequence(UseLiteral("name", "icon"), value), + ), + )) + )) )), - Optional(Group( - MenuAttribute, - Sequence(UseLiteral("name", "icon"), value), - )), - StmtEnd().expected("`;`"), + CloseParen().expected("')'"), ) ) @@ -163,7 +172,7 @@ def menu_content_completer(ast_node, match_variables): ) yield Completion( "item (shorthand)", CompletionItemKind.Snippet, - snippet='item _("${1:Label}") "${2:action-name}" "${3:icon-name}";' + snippet='item (_("${1:Label}"), "${2:action-name}", "${3:icon-name}");' ) yield Completion( diff --git a/tests/samples/menu.blp b/tests/samples/menu.blp index d4f25dc..f15dbdb 100644 --- a/tests/samples/menu.blp +++ b/tests/samples/menu.blp @@ -13,8 +13,8 @@ menu { label: "test item"; } - item "test item shorthand 1"; - item "test item shorthand 2" "app.test-action"; - item "test item shorthand 3" "app.test-action" "test-symbolic"; + item ("test item shorthand 1") + item ("test item shorthand 2", "app.test-action") + item ("test item shorthand 3", "app.test-action", "test-symbolic") } }