Я разрабатываю плагин для завершения кода, например copilot для eclipse. Для этого я использовал расширение org.eclipse.lsp4e.languageServer в своем плагине.xml и сопоставил с ним Java-файлы, как показано ниже
< /code>
Но это вызывает CodecompprocessStreamConnectionProvider всякий раз, когда я создаю новый файл Java. Кроме того, когда я создаю новый файл Java, существующий сервер получает запрос на выключение, а потоки закрыты, но не из моего кода, его сделано косвенно, а затем этот класс вызывается для каждого нового файла Java. < /P>
Как сделать сервер таким общим для всех файлов, и он не должен быть повторно повторно для каждого файла Java. Я сделал класс Singleton, как ниже, но без помощи < /p>
public class CodecompProcessStreamConnectionProvider extends
ProcessStreamConnectionProvider {
private static CodecompProcessStreamConnectionProvider instance;
private boolean isInitialized = false;
private final CountDownLatch latch = new CountDownLatch(1);
private static final long INIT_SERVER_TIMEOUT_SECONDS = 180;
// Private constructor to prevent direct instantiation
public CodecompProcessStreamConnectionProvider() {
this.init();
}
// Public method to provide a global access point to the singleton instance
public static synchronized CodecompProcessStreamConnectionProvider getInstance() {
if (instance == null) {
instance = new CodecompProcessStreamConnectionProvider();
}
return instance;
}
protected void init() {
Logger.debug("Initializing chat server asynchronously");
try {
AsyncExecutor.executeWithTimeout(() -> {
try {
CodecompLocator locator = new CodecompLocator();
this.isInitialized = false;
List commands = new ArrayList();
String CodecompAgentFolderPath = locator.findAgent().toFile().getParent();
Logger.debug("Codecomp agent location: " + CodecompAgentFolderPath);
File file = new File(CodecompAgentFolderPath + "/node");
file.setReadable(true);
file.setExecutable(true);
commands.add(CodecompAgentFolderPath + "/node");
commands.add("language-server.js");
commands.add("--stdio");
this.setCommands(commands);
this.setWorkingDirectory(CodecompAgentFolderPath);
this.isInitialized = true;
Logger.debug("Chat server initialized successfully");
} catch (Exception e) {
Logger.error(e, Messages.CodecompProcessStreamConnectionProvider_ErrorStartingChatLanguageServer);
throw new RuntimeException("Error initializing chat server", e);
}
}, INIT_SERVER_TIMEOUT_SECONDS, TimeUnit.SECONDS);
} catch (TimeoutException e) {
Logger.error(e, Messages.CodecompProcessStreamConnectionProvider_ErrorStartingChatLanguageServer);
} catch (ExecutionException | InterruptedException e) {
Logger.error(e, Messages.CodecompProcessStreamConnectionProvider_ErrorStartingChatLanguageServer);
}
}
@Override
public void start() throws IOException {
super.start(); // Proceed with starting the server
}
protected ProcessBuilder createProcessBuilder() {
ProcessBuilder builder = super.createProcessBuilder();
builder.environment().put("Codecomp_AGENT_LOGMESSAGE", "true");
Map proxySettings = CodecompProxyUtil.getProxyVars();
proxySettings.forEach(builder.environment()::put);
return builder;
}
public Object getInitializationOptions(URI rootUri) {
CodecompInitializationOptions options = CodecompManager.getInstance().createInitializationOptions();
return options;
}
public void handleMessage(Message message, LanguageServer languageServer, URI rootURI) {
super.handleMessage(message, languageServer, rootURI);
}
}
может ли кто-нибудь помочь инициализировать сервер lsp4e один раз для сеанса и избежать нескольких экземпляров.
Я разрабатываю плагин для завершения кода, например copilot для eclipse. Для этого я использовал расширение org.eclipse.lsp4e.languageServer в своем плагине.xml и сопоставил с ним Java-файлы, как показано ниже [code]
< /code> Но это вызывает CodecompprocessStreamConnectionProvider всякий раз, когда я создаю новый файл Java. Кроме того, когда я создаю новый файл Java, существующий сервер получает запрос на выключение, а потоки закрыты, но не из моего кода, его сделано косвенно, а затем этот класс вызывается для каждого нового файла Java. < /P> Как сделать сервер таким общим для всех файлов, и он не должен быть повторно повторно для каждого файла Java. Я сделал класс Singleton, как ниже, но без помощи < /p> public class CodecompProcessStreamConnectionProvider extends ProcessStreamConnectionProvider { private static CodecompProcessStreamConnectionProvider instance; private boolean isInitialized = false; private final CountDownLatch latch = new CountDownLatch(1); private static final long INIT_SERVER_TIMEOUT_SECONDS = 180;
// Private constructor to prevent direct instantiation public CodecompProcessStreamConnectionProvider() { this.init(); }
// Public method to provide a global access point to the singleton instance public static synchronized CodecompProcessStreamConnectionProvider getInstance() { if (instance == null) { instance = new CodecompProcessStreamConnectionProvider(); } return instance; }
protected void init() { Logger.debug("Initializing chat server asynchronously");
public void handleMessage(Message message, LanguageServer languageServer, URI rootURI) { super.handleMessage(message, languageServer, rootURI); } } [/code] может ли кто-нибудь помочь инициализировать сервер lsp4e один раз для сеанса и избежать нескольких экземпляров.
Я пытаюсь настроить редактор Monaco в веб-проекте с работающим C#/.NET IntelliSense. Отсутствие доступных ресурсов по этой теме является для меня серьезной проблемой.
Методом проб и ошибок и некоторых случайных фрагментов кода из Интернета мне...
Я пытаюсь добавить поддержку intellisense для Python в редакторе Monaco. Все примеры, которые я нашел, включают использование языкового сервера Python, работающего на сервере, и взаимодействие с интерфейсом с помощью веб-сокета; однако языковой...
Мне нужно взаимодействовать с языковым сервером (Eclipse JDT LS), реализующим протокол языкового сервера (LSP), и он нужен мне для проекта Python, который будет использоваться для анализа различных языков программирования, начиная с Java. >
Я искал...
Мне нужно взаимодействовать с языковым сервером (Eclipse JDT LS), реализующим протокол языкового сервера (LSP), и он нужен мне для проекта Python, который будет использоваться для анализа различных языков программирования, начиная с Java. >
Я искал...
Я пытаюсь отобразить код IL для метода asp.net Core ReadUnalined , как определено здесь в .NET Framework с использованием DynamicMethod после этого примера. /> Мой код:
private delegate T ReadUnalignedInvoker(ref byte input);