Returns combined matches from several completers
| 280 | |
| 281 | |
| 282 | class CumulativeCompleter(BaseCompletionType): |
| 283 | """Returns combined matches from several completers""" |
| 284 | |
| 285 | def __init__( |
| 286 | self, |
| 287 | completers: Sequence[BaseCompletionType], |
| 288 | mode: AutocompleteModes = AutocompleteModes.SIMPLE, |
| 289 | ) -> None: |
| 290 | if not completers: |
| 291 | raise ValueError( |
| 292 | "CumulativeCompleter requires at least one completer" |
| 293 | ) |
| 294 | self._completers: Sequence[BaseCompletionType] = completers |
| 295 | |
| 296 | super().__init__(True, mode) |
| 297 | |
| 298 | def locate(self, cursor_offset: int, line: str) -> LinePart | None: |
| 299 | for completer in self._completers: |
| 300 | return_value = completer.locate(cursor_offset, line) |
| 301 | if return_value is not None: |
| 302 | return return_value |
| 303 | return None |
| 304 | |
| 305 | def format(self, word: str) -> str: |
| 306 | return self._completers[0].format(word) |
| 307 | |
| 308 | def matches( |
| 309 | self, cursor_offset: int, line: str, **kwargs: Any |
| 310 | ) -> set[str] | None: |
| 311 | return_value = None |
| 312 | all_matches = set() |
| 313 | for completer in self._completers: |
| 314 | matches = completer.matches( |
| 315 | cursor_offset=cursor_offset, line=line, **kwargs |
| 316 | ) |
| 317 | if matches is not None: |
| 318 | all_matches.update(matches) |
| 319 | return_value = all_matches |
| 320 | |
| 321 | return return_value |
| 322 | |
| 323 | |
| 324 | class ImportCompletion(BaseCompletionType): |
no outgoing calls
no test coverage detected