|
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