|
32 | 32 | from robotcode.language_server.robotframework.protocol import RobotLanguageServerProtocol # pragma: no cover
|
33 | 33 |
|
34 | 34 |
|
35 |
| -CODEACTIONKINDS_QUICKFIX_CREATEKEYWORD = f"{CodeActionKind.QUICK_FIX.value}.createKeyword" |
| 35 | +CODEACTIONKIND_QUICKFIX_CREATEKEYWORD = f"{CodeActionKind.QUICK_FIX.value}.createKeyword" |
36 | 36 |
|
37 | 37 |
|
38 | 38 | KEYWORD_WITH_ARGS_TEMPLATE = Template(
|
39 | 39 | """\
|
40 | 40 | ${name}
|
41 | 41 | [Arguments] ${args}
|
42 |
| - Fail |
| 42 | + # TODO: implement keyword "${name}". |
| 43 | + Fail Not Implemented |
43 | 44 |
|
44 | 45 | """
|
45 | 46 | )
|
46 | 47 |
|
47 | 48 | KEYWORD_TEMPLATE = Template(
|
48 | 49 | """\
|
49 | 50 | ${name}
|
50 |
| - Fail |
| 51 | + # TODO: implement keyword "${name}". |
| 52 | + Fail Not Implemented |
51 | 53 |
|
52 | 54 | """
|
53 | 55 | )
|
@@ -80,7 +82,7 @@ def __init__(self, parent: RobotLanguageServerProtocol) -> None:
|
80 | 82 | @language_id("robotframework")
|
81 | 83 | @code_action_kinds(
|
82 | 84 | [
|
83 |
| - CODEACTIONKINDS_QUICKFIX_CREATEKEYWORD, |
| 85 | + CODEACTIONKIND_QUICKFIX_CREATEKEYWORD, |
84 | 86 | ]
|
85 | 87 | )
|
86 | 88 | @_logger.call
|
@@ -130,14 +132,21 @@ async def create_keyword(self, document_uri: DocumentUri, range: Range, context:
|
130 | 132 | node = await get_node_at_position(model, range.start)
|
131 | 133 |
|
132 | 134 | if isinstance(node, (KeywordCall, Fixture, TestTemplate, Template)):
|
133 |
| - keyword = ( |
134 |
| - node.value |
135 |
| - if isinstance(node, (TestTemplate, Template)) |
136 |
| - else node.keyword |
137 |
| - if isinstance(node, KeywordCall) |
138 |
| - else node.name |
| 135 | + keyword_token = ( |
| 136 | + node.get_token(RobotToken.NAME) |
| 137 | + if isinstance(node, (TestTemplate, Template, Fixture)) |
| 138 | + else node.get_token(RobotToken.KEYWORD) |
139 | 139 | )
|
140 | 140 |
|
| 141 | + if keyword_token is None: |
| 142 | + return |
| 143 | + |
| 144 | + bdd_token, token = self.split_bdd_prefix(namespace, keyword_token) |
| 145 | + if bdd_token is not None and token is not None: |
| 146 | + keyword = token.value |
| 147 | + else: |
| 148 | + keyword = keyword_token.value |
| 149 | + |
141 | 150 | arguments = []
|
142 | 151 |
|
143 | 152 | for t in node.get_tokens(RobotToken.ARGUMENT):
|
|
0 commit comments