(...delimiters: string[])
| 151 | } |
| 152 | |
| 153 | export function selectWithTrailingDelimiter(...delimiters: string[]) { |
| 154 | return function (editor: TextEditor, node: SyntaxNode): SelectionWithContext { |
| 155 | const firstSibling = node.nextSibling; |
| 156 | const secondSibling = firstSibling?.nextSibling; |
| 157 | let trailingDelimiterRange; |
| 158 | if (firstSibling) { |
| 159 | if (delimiters.includes(firstSibling.type)) { |
| 160 | if (secondSibling) { |
| 161 | trailingDelimiterRange = makeRangeFromPositions( |
| 162 | node.endPosition, |
| 163 | secondSibling.startPosition |
| 164 | ); |
| 165 | } else { |
| 166 | trailingDelimiterRange = makeRangeFromPositions( |
| 167 | node.endPosition, |
| 168 | firstSibling.endPosition |
| 169 | ); |
| 170 | } |
| 171 | } else { |
| 172 | trailingDelimiterRange = makeRangeFromPositions( |
| 173 | node.endPosition, |
| 174 | firstSibling.startPosition |
| 175 | ); |
| 176 | } |
| 177 | } |
| 178 | return { |
| 179 | ...simpleSelectionExtractor(editor, node), |
| 180 | context: { |
| 181 | trailingDelimiterRange, |
| 182 | }, |
| 183 | }; |
| 184 | }; |
| 185 | } |
| 186 | |
| 187 | function getNextNonDelimiterNode( |
| 188 | startNode: SyntaxNode, |
no test coverage detected