mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-14 02:16:21 +00:00
PHP: also sleep for definition requests
This commit is contained in:
1 parent
66a94d7274
commit
c44749868d
2 files changed
+26
-18
No files matched your search
@@ -27,7 +27,7 @@ from serena.text_utils import LineType, MatchedConsecutiveLines, TextLine, searc
|
||||
from . import multilspy_types
|
||||
from .lsp_protocol_handler import lsp_types as LSPTypes
|
||||
from .lsp_protocol_handler.lsp_constants import LSPConstants
|
||||
from .lsp_protocol_handler.lsp_types import SymbolKind
|
||||
from .lsp_protocol_handler.lsp_types import Definition, DefinitionParams, LocationLink, SymbolKind
|
||||
from .lsp_protocol_handler.server import (
|
||||
Error,
|
||||
LanguageServerHandler,
|
||||
@@ -495,6 +495,9 @@ class LanguageServer:
|
||||
)
|
||||
return deleted_text
|
||||
|
||||
async def _send_definition_request(self, definition_params: DefinitionParams) -> Union[Definition, List[LocationLink], None]:
|
||||
return await self.server.send.definition(definition_params)
|
||||
|
||||
async def request_definition(
|
||||
self, relative_file_path: str, line: int, column: int
|
||||
) -> List[multilspy_types.Location]:
|
||||
@@ -518,19 +521,18 @@ class LanguageServer:
|
||||
|
||||
with self.open_file(relative_file_path):
|
||||
# sending request to the language server and waiting for response
|
||||
response = await self.server.send.definition(
|
||||
{
|
||||
LSPConstants.TEXT_DOCUMENT: {
|
||||
LSPConstants.URI: pathlib.Path(
|
||||
str(PurePath(self.repository_root_path, relative_file_path))
|
||||
).as_uri()
|
||||
},
|
||||
LSPConstants.POSITION: {
|
||||
LSPConstants.LINE: line,
|
||||
LSPConstants.CHARACTER: column,
|
||||
},
|
||||
}
|
||||
)
|
||||
definition_params = cast(DefinitionParams, {
|
||||
LSPConstants.TEXT_DOCUMENT: {
|
||||
LSPConstants.URI: pathlib.Path(
|
||||
str(PurePath(self.repository_root_path, relative_file_path))
|
||||
).as_uri()
|
||||
},
|
||||
LSPConstants.POSITION: {
|
||||
LSPConstants.LINE: line,
|
||||
LSPConstants.CHARACTER: column,
|
||||
},
|
||||
})
|
||||
response = await self._send_definition_request(definition_params)
|
||||
|
||||
ret: List[multilspy_types.Location] = []
|
||||
if isinstance(response, list):
|
||||
|
||||
@@ -18,7 +18,7 @@ from overrides import override
|
||||
from multilspy.multilspy_logger import MultilspyLogger
|
||||
from multilspy.language_server import LanguageServer
|
||||
from multilspy.lsp_protocol_handler.server import ProcessLaunchInfo
|
||||
from multilspy.lsp_protocol_handler.lsp_types import InitializeParams
|
||||
from multilspy.lsp_protocol_handler.lsp_types import DefinitionParams, InitializeParams
|
||||
from multilspy.multilspy_config import MultilspyConfig
|
||||
from multilspy.multilspy_utils import PlatformUtils, PlatformId
|
||||
|
||||
@@ -191,7 +191,13 @@ class Intelephense(LanguageServer):
|
||||
# TODO: The LS doesn't return references contained in other files if it doesn't sleep. This is
|
||||
# despite the LS having processed requests already. I don't know what causes this, but sleeping
|
||||
# one second helps. It may be that sleeping only once is enough but that's hard to reliably test.
|
||||
# It may be that even this 1sec is not enough in larger TS projects, at some point we should find what
|
||||
# causes this and solve it.
|
||||
# May be related to the time it takes to read the files or something like that.
|
||||
# The sleeping doesn't seem to be needed on all systems
|
||||
sleep(1)
|
||||
return await super()._send_references_request(relative_file_path, line, column)
|
||||
return await super()._send_references_request(relative_file_path, line, column)
|
||||
|
||||
@override
|
||||
async def _send_definition_request(self, definition_params: DefinitionParams):
|
||||
# TODO: same as above, also only a problem if the definition is in another file
|
||||
sleep(1)
|
||||
return await super()._send_definition_request(definition_params)
|
||||
Reference in new issue
Block a user