from typing import Tuple try: from pygls.server import LanguageServer from lsprotocol.types import ( TextDocumentItem, Position, ) except ImportError: pass def _locate_cursor(text: str) -> Tuple[str, "Position"]: lines = text.splitlines(keepends=True) for line_no in range(len(lines)): line = lines[line_no] try: c = line.index("") except ValueError: continue line = line.replace("", "") lines[line_no] = line pos = Position(line_no, c) return "".join(lines), pos raise ValueError('Missing "" marker') def put_doc_with_cursor( ls: "LanguageServer", uri: str, language_id: str, content: str, *, doc_version: int = 1, ) -> "Position": cleaned_content, cursor_pos = _locate_cursor(content) ls.workspace.put_text_document( TextDocumentItem( uri, language_id, doc_version, cleaned_content, ) ) return cursor_pos