diff --git a/src/multilspy/language_servers/typescript_language_server/initialize_params.json b/src/multilspy/language_servers/typescript_language_server/initialize_params.json index 6209ba4..483d0c3 100644 --- a/src/multilspy/language_servers/typescript_language_server/initialize_params.json +++ b/src/multilspy/language_servers/typescript_language_server/initialize_params.json @@ -894,7 +894,8 @@ "scope": "workspace" } } - } + }, + "tsserver": { "useSyntaxServer": "never" } }, "trace": "verbose", "workspaceFolders": [ diff --git a/tests/multilspy/test_sync_multilspy_javascript.py b/tests/multilspy/test_sync_multilspy_javascript.py index 00d1e1c..63b4bf3 100644 --- a/tests/multilspy/test_sync_multilspy_javascript.py +++ b/tests/multilspy/test_sync_multilspy_javascript.py @@ -47,3 +47,53 @@ def test_sync_multilspy_javascript_exceljs() -> None: {'range': {'start': {'line': 180, 'character': 16}, 'end': {'line': 180, 'character': 21}}, 'relativePath': path}, {'range': {'start': {'line': 185, 'character': 15}, 'end': {'line': 185, 'character': 20}}, 'relativePath': path} ] + +def test_sync_multilspy_javascript_violentmonkey_cross_file() -> None: + """ + Test the working of multilspy with javascript repository - violentmonkey + """ + code_language = Language.JAVASCRIPT + params = { + "code_language": code_language, + "repo_url": "https://github.com/violentmonkey/violentmonkey/", + "repo_commit": "e2930510b4fb5f59848ecafcd533d06fc41d4187" + } + with create_test_context(params) as context: + lsp = SyncLanguageServer.create(context.config, context.logger, context.source_directory) + + # All the communication with the language server must be performed inside the context manager + # The server process is started when the context manager is entered and is terminated when the context manager is exited. + with lsp.start_server(): + result = lsp.request_definition("src/common/util.js", 335, 55) + print("Definition", result) + assert isinstance(result, list) + assert len(result) == 1 + + item = result[0] + assert item["relativePath"] == "src/common/consts.js" + assert item["range"] == { + "start": {"line": 46, "character": 13}, + "end": {"line": 46, "character": 21}, + } + + result = lsp.request_references("src/common/consts.js", 46, 13) + print("References", result) + assert isinstance(result, list) + assert len(result) == 10 + + for item in result: + del item["uri"] + del item["absolutePath"] + + assert result == [ + {"range": {"start": {"line": 2, "character": 9}, "end": {"line": 2, "character": 17}}, "relativePath": "src/common/util.js"}, + {"range": {"start": {"line": 335, "character": 51}, "end": {"line": 335, "character": 59}}, "relativePath": "src/common/util.js"}, + {"range": {"start": {"line": 5, "character": 16}, "end": {"line": 5, "character": 24}}, "relativePath": "src/background/sync/base.js"}, + {"range": {"start": {"line": 342, "character": 34}, "end": {"line": 342, "character": 42}}, "relativePath": "src/background/sync/base.js"}, + {"range": {"start": {"line": 4, "character": 36}, "end": {"line": 4, "character": 44}}, "relativePath": "src/background/utils/update.js"}, + {"range": {"start": {"line": 15, "character": 5}, "end": {"line": 15, "character": 13}}, "relativePath": "src/background/utils/update.js"}, + {"range": {"start": {"line": 40, "character": 11}, "end": {"line": 40, "character": 19}}, "relativePath": "src/background/utils/update.js"}, + {"range": {"start": {"line": 123, "character": 48}, "end": {"line": 123, "character": 56}}, "relativePath": "src/background/utils/update.js"}, + {"range": {"start": {"line": 1, "character": 9}, "end": {"line": 1, "character": 17}}, "relativePath": "src/background/utils/storage-fetch.js"}, + {"range": {"start": {"line": 70, "character": 26}, "end": {"line": 70, "character": 34}}, "relativePath": "src/background/utils/storage-fetch.js"} + ] \ No newline at end of file