chore: Move ApplicationUtil to common
This commit is contained in:
parent
66aef224b2
commit
845af09e29
16 changed files with 43 additions and 51 deletions
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.falsepattern.zigbrains.lsp.utils;
|
||||
package com.falsepattern.zigbrains.common.util;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
|
@ -24,7 +24,7 @@ import com.intellij.openapi.util.Condition;
|
|||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class ApplicationUtils {
|
||||
public class ApplicationUtil {
|
||||
|
||||
private final static ExecutorService EXECUTOR_SERVICE;
|
||||
|
|
@ -44,7 +44,7 @@ import java.util.Set;
|
|||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.pool;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.pool;
|
||||
|
||||
public class IntellijLanguageClient {
|
||||
|
||||
|
|
|
@ -19,13 +19,10 @@ package com.falsepattern.zigbrains.lsp.actions;
|
|||
import com.falsepattern.zigbrains.lsp.IntellijLanguageClient;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManager;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManagerBase;
|
||||
import com.falsepattern.zigbrains.lsp.requests.ReformatHandler;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.intellij.codeInsight.navigation.actions.GotoDeclarationAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
|
|
|
@ -17,12 +17,10 @@ package com.falsepattern.zigbrains.lsp.actions;
|
|||
|
||||
import com.falsepattern.zigbrains.lsp.IntellijLanguageClient;
|
||||
import com.falsepattern.zigbrains.lsp.requests.ReformatHandler;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.intellij.codeInsight.actions.ReformatCodeAction;
|
||||
import com.intellij.lang.LanguageFormatting;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
|
@ -51,7 +49,7 @@ public class LSPReformatAction extends ReformatCodeAction implements DumbAware {
|
|||
super.actionPerformed(e);
|
||||
return;
|
||||
}
|
||||
ApplicationUtils.writeAction(() -> FileDocumentManager.getInstance().saveDocument(editor.getDocument()));
|
||||
ApplicationUtil.writeAction(() -> FileDocumentManager.getInstance().saveDocument(editor.getDocument()));
|
||||
// if editor hasSelection, only reformat selection, not reformat the whole file
|
||||
if (editor.getSelectionModel().hasSelection()) {
|
||||
ReformatHandler.reformatSelection(editor);
|
||||
|
|
|
@ -18,7 +18,7 @@ package com.falsepattern.zigbrains.lsp.client;
|
|||
import com.falsepattern.zigbrains.common.util.FileUtil;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManagerBase;
|
||||
import com.falsepattern.zigbrains.lsp.requests.WorkspaceEditHandler;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationAction;
|
||||
import com.intellij.notification.NotificationGroup;
|
||||
|
@ -134,7 +134,7 @@ public class DefaultLanguageClient implements LanguageClient {
|
|||
String message = messageParams.getMessage();
|
||||
|
||||
if (isModal) {
|
||||
ApplicationUtils.invokeLater(() -> {
|
||||
ApplicationUtil.invokeLater(() -> {
|
||||
MessageType msgType = messageParams.getType();
|
||||
switch (msgType) {
|
||||
case Error:
|
||||
|
|
|
@ -33,7 +33,7 @@ import com.falsepattern.zigbrains.lsp.requests.Timeout;
|
|||
import com.falsepattern.zigbrains.lsp.requests.Timeouts;
|
||||
import com.falsepattern.zigbrains.lsp.statusbar.LSPServerStatusWidget;
|
||||
import com.falsepattern.zigbrains.lsp.statusbar.LSPServerStatusWidgetFactory;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.LSPException;
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
||||
|
@ -237,7 +237,7 @@ public class LanguageServerWrapper {
|
|||
String msg = String.format("%s \n is not initialized after %d seconds",
|
||||
serverDefinition.toString(), Timeout.getTimeout(Timeouts.INIT) / 1000);
|
||||
LOG.warn(msg, e);
|
||||
ApplicationUtils.invokeLater(() -> {
|
||||
ApplicationUtil.invokeLater(() -> {
|
||||
if (!alreadyShownTimeout) {
|
||||
notifier.showMessage(msg, MessageType.WARNING);
|
||||
alreadyShownTimeout = true;
|
||||
|
@ -396,7 +396,7 @@ public class LanguageServerWrapper {
|
|||
}
|
||||
// Triggers annotators since this is the first editor which starts the LS
|
||||
// and annotators are executed before LS is bootstrap to provide diagnostics.
|
||||
ApplicationUtils.computableReadAction(() -> {
|
||||
ApplicationUtil.computableReadAction(() -> {
|
||||
PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
|
||||
if (psiFile != null) {
|
||||
DaemonCodeAnalyzer.getInstance(project).restart(psiFile);
|
||||
|
@ -540,7 +540,7 @@ public class LanguageServerWrapper {
|
|||
});
|
||||
} catch (LSPException | IOException | URISyntaxException e) {
|
||||
LOG.warn(e);
|
||||
ApplicationUtils.invokeLater(() ->
|
||||
ApplicationUtil.invokeLater(() ->
|
||||
notifier.showMessage(String.format("Can't start server due to %s", e.getMessage()),
|
||||
MessageType.WARNING));
|
||||
removeServerWrapper();
|
||||
|
@ -639,7 +639,7 @@ public class LanguageServerWrapper {
|
|||
if (crashCount <= 3) {
|
||||
reconnect();
|
||||
} else {
|
||||
ApplicationUtils.invokeLater(() -> {
|
||||
ApplicationUtil.invokeLater(() -> {
|
||||
if (alreadyShownCrash) {
|
||||
reconnect();
|
||||
} else {
|
||||
|
@ -787,7 +787,7 @@ public class LanguageServerWrapper {
|
|||
* Reset language server wrapper state so it can be started again if it was failed earlier.
|
||||
*/
|
||||
public void restart() {
|
||||
ApplicationUtils.pool(() -> {
|
||||
ApplicationUtil.pool(() -> {
|
||||
if (isRestartable()) {
|
||||
alreadyShownCrash = false;
|
||||
alreadyShownTimeout = false;
|
||||
|
|
|
@ -20,7 +20,7 @@ import com.falsepattern.zigbrains.lsp.editor.EditorEventManagerBase;
|
|||
import com.falsepattern.zigbrains.lsp.requests.HoverHandler;
|
||||
import com.falsepattern.zigbrains.lsp.requests.Timeout;
|
||||
import com.falsepattern.zigbrains.lsp.requests.Timeouts;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.DocumentUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.intellij.model.Pointer;
|
||||
|
@ -86,7 +86,7 @@ public class LSPDocumentationTargetProvider implements DocumentationTargetProvid
|
|||
return null;
|
||||
}
|
||||
var caretPos = editor.offsetToLogicalPosition(offset);
|
||||
var serverPos = ApplicationUtils.computableReadAction(() -> DocumentUtils.logicalToLSPPos(caretPos, editor));
|
||||
var serverPos = ApplicationUtil.computableReadAction(() -> DocumentUtils.logicalToLSPPos(caretPos, editor));
|
||||
return DocumentationResult.asyncDocumentation(() -> {
|
||||
var identifier = manager.getIdentifier();
|
||||
var request = wrapper.getRequestManager().hover(new HoverParams(identifier, serverPos));
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package com.falsepattern.zigbrains.lsp.contributors.psi;
|
||||
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.Language;
|
||||
|
@ -700,7 +700,7 @@ public class LSPPsiElement extends PsiElementBase implements PsiNameIdentifierOw
|
|||
if (editor == null) {
|
||||
OpenFileDescriptor descriptor = new OpenFileDescriptor(getProject(), getContainingFile().getVirtualFile(),
|
||||
getTextOffset());
|
||||
ApplicationUtils.invokeLater(() -> ApplicationUtils
|
||||
ApplicationUtil.invokeLater(() -> ApplicationUtil
|
||||
.writeAction(() -> FileEditorManager.getInstance(getProject()).openTextEditor(descriptor, false)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
package com.falsepattern.zigbrains.lsp.editor;
|
||||
|
||||
import com.falsepattern.zigbrains.lsp.client.languageserver.wrapper.LanguageServerWrapper;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.DocumentUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
|
@ -120,7 +120,7 @@ public class DocumentEventManager {
|
|||
} else if (syncKind == TextDocumentSyncKind.Full) {
|
||||
changesParams.getContentChanges().get(0).setText(document.getText());
|
||||
}
|
||||
ApplicationUtils.pool(() -> wrapper.getRequestManager().didChange(changesParams));
|
||||
ApplicationUtil.pool(() -> wrapper.getRequestManager().didChange(changesParams));
|
||||
}
|
||||
|
||||
public void documentOpened() {
|
||||
|
|
|
@ -29,7 +29,7 @@ import com.falsepattern.zigbrains.lsp.listeners.LSPCaretListenerImpl;
|
|||
import com.falsepattern.zigbrains.lsp.requests.Timeout;
|
||||
import com.falsepattern.zigbrains.lsp.requests.Timeouts;
|
||||
import com.falsepattern.zigbrains.lsp.requests.WorkspaceEditHandler;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.DocumentUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.GUIUtils;
|
||||
|
@ -138,11 +138,11 @@ import java.util.function.BiFunction;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.computableReadAction;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.computableWriteAction;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.invokeLater;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.pool;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.writeAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.computableReadAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.computableWriteAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.invokeLater;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.pool;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.writeAction;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.DocumentUtils.toEither;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.GUIUtils.createAndShowEditorHint;
|
||||
|
||||
|
@ -1218,7 +1218,7 @@ public class EditorEventManager {
|
|||
}
|
||||
|
||||
public List<InlayHint> inlayHint() {
|
||||
var range = ApplicationUtils.computableReadAction(() -> {
|
||||
var range = ApplicationUtil.computableReadAction(() -> {
|
||||
var start = DocumentUtils.offsetToLSPPos(editor, 0);
|
||||
var end = DocumentUtils.offsetToLSPPos(editor, editor.getDocument().getTextLength());
|
||||
return new Range(start, end);
|
||||
|
|
|
@ -15,15 +15,12 @@
|
|||
*/
|
||||
package com.falsepattern.zigbrains.lsp.editor;
|
||||
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.OSUtils;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import lombok.val;
|
||||
import org.eclipse.lsp4j.Diagnostic;
|
||||
|
||||
import java.awt.KeyboardFocusManager;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
@ -86,7 +83,7 @@ public class EditorEventManagerBase {
|
|||
if (runOnRegistry.containsKey(manager.editor)) {
|
||||
var tasks = runOnRegistry.remove(manager.editor);
|
||||
for (var task: tasks) {
|
||||
ApplicationUtils.invokeLater(task);
|
||||
ApplicationUtil.invokeLater(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -97,7 +94,7 @@ public class EditorEventManagerBase {
|
|||
var manager = forEditor(editor);
|
||||
if (manager != null) {
|
||||
for (var task: runnables) {
|
||||
ApplicationUtils.invokeLater(task);
|
||||
ApplicationUtil.invokeLater(task);
|
||||
}
|
||||
} else {
|
||||
runOnRegistry.computeIfAbsent(editor, (ignored) -> new ArrayList<>()).addAll(List.of(runnables));
|
||||
|
|
|
@ -20,7 +20,7 @@ import com.falsepattern.zigbrains.lsp.IntellijLanguageClient;
|
|||
import com.falsepattern.zigbrains.lsp.client.languageserver.ServerStatus;
|
||||
import com.falsepattern.zigbrains.lsp.client.languageserver.wrapper.LanguageServerWrapper;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManagerBase;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
|
@ -78,7 +78,7 @@ class LSPFileEventManager {
|
|||
return;
|
||||
}
|
||||
|
||||
ApplicationUtils.invokeAfterPsiEvents(() -> {
|
||||
ApplicationUtil.invokeAfterPsiEvents(() -> {
|
||||
EditorEventManagerBase.documentSaved(uri);
|
||||
FileUtils.findProjectsFor(file).forEach(p -> changedConfiguration(uri,
|
||||
FileUtils.projectToUri(p), FileChangeType.Changed));
|
||||
|
@ -122,7 +122,7 @@ class LSPFileEventManager {
|
|||
if (uri == null) {
|
||||
return;
|
||||
}
|
||||
ApplicationUtils.invokeAfterPsiEvents(() -> {
|
||||
ApplicationUtil.invokeAfterPsiEvents(() -> {
|
||||
FileUtils.findProjectsFor(file).forEach(p -> changedConfiguration(uri,
|
||||
FileUtils.projectToUri(p), FileChangeType.Deleted));
|
||||
});
|
||||
|
@ -135,7 +135,7 @@ class LSPFileEventManager {
|
|||
* @param newFileName the new file name
|
||||
*/
|
||||
static void fileRenamed(String oldFileName, String newFileName) {
|
||||
ApplicationUtils.invokeAfterPsiEvents(() -> {
|
||||
ApplicationUtil.invokeAfterPsiEvents(() -> {
|
||||
try {
|
||||
// Getting the right file is not trivial here since we only have the file name. Since we have to iterate over
|
||||
// all opened projects and filter based on the file name.
|
||||
|
@ -173,7 +173,7 @@ class LSPFileEventManager {
|
|||
if (!newFileUri.equals(oldFileUri)) {
|
||||
// Re-open file to so that the new editor will be connected to the language server.
|
||||
FileEditorManager fileEditorManager = FileEditorManager.getInstance(p);
|
||||
ApplicationUtils.invokeLater(() -> {
|
||||
ApplicationUtil.invokeLater(() -> {
|
||||
fileEditorManager.closeFile(file);
|
||||
fileEditorManager.openFile(file, true);
|
||||
});
|
||||
|
@ -192,7 +192,7 @@ class LSPFileEventManager {
|
|||
}
|
||||
String uri = FileUtil.URIFromVirtualFile(file);
|
||||
if (uri != null) {
|
||||
ApplicationUtils.invokeAfterPsiEvents(() -> {
|
||||
ApplicationUtil.invokeAfterPsiEvents(() -> {
|
||||
FileUtils.findProjectsFor(file).forEach(p -> changedConfiguration(uri,
|
||||
FileUtils.projectToUri(p), FileChangeType.Created));
|
||||
});
|
||||
|
@ -200,7 +200,7 @@ class LSPFileEventManager {
|
|||
}
|
||||
|
||||
private static void changedConfiguration(String uri, String projectUri, FileChangeType typ) {
|
||||
ApplicationUtils.pool(() -> {
|
||||
ApplicationUtil.pool(() -> {
|
||||
DidChangeWatchedFilesParams params = getDidChangeWatchedFilesParams(uri, typ);
|
||||
Set<LanguageServerWrapper> wrappers = IntellijLanguageClient.getAllServerWrappersFor(projectUri);
|
||||
if (wrappers == null) {
|
||||
|
|
|
@ -19,7 +19,7 @@ import com.falsepattern.zigbrains.common.util.FileUtil;
|
|||
import com.falsepattern.zigbrains.lsp.contributors.psi.LSPPsiElement;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManager;
|
||||
import com.falsepattern.zigbrains.lsp.editor.EditorEventManagerBase;
|
||||
import com.falsepattern.zigbrains.lsp.utils.ApplicationUtils;
|
||||
import com.falsepattern.zigbrains.common.util.ApplicationUtil;
|
||||
import com.falsepattern.zigbrains.lsp.utils.DocumentUtils;
|
||||
import com.falsepattern.zigbrains.lsp.utils.FileUtils;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
|
@ -58,8 +58,8 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.invokeLater;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.writeAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.invokeLater;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.writeAction;
|
||||
import static com.falsepattern.zigbrains.lsp.utils.DocumentUtils.toEither;
|
||||
|
||||
/**
|
||||
|
@ -210,7 +210,7 @@ public class WorkspaceEditHandler {
|
|||
}
|
||||
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
|
||||
OpenFileDescriptor descriptor = new OpenFileDescriptor(project, file);
|
||||
Editor editor = ApplicationUtils
|
||||
Editor editor = ApplicationUtil
|
||||
.computableWriteAction(() -> fileEditorManager.openTextEditor(descriptor, false));
|
||||
openedEditors.add(file);
|
||||
curProject[0] = editor.getProject();
|
||||
|
|
|
@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable;
|
|||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.computableReadAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.computableReadAction;
|
||||
import static java.lang.Math.max;
|
||||
import static java.lang.Math.min;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.computableReadAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.computableReadAction;
|
||||
|
||||
/**
|
||||
* Various file / uri related methods
|
||||
|
|
|
@ -46,7 +46,7 @@ import java.net.URISyntaxException;
|
|||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.falsepattern.zigbrains.lsp.utils.ApplicationUtils.writeAction;
|
||||
import static com.falsepattern.zigbrains.common.util.ApplicationUtil.writeAction;
|
||||
|
||||
public final class GUIUtils {
|
||||
private static final LSPDefaultIconProvider DEFAULT_ICON_PROVIDER = new LSPDefaultIconProvider();
|
||||
|
|
Loading…
Add table
Reference in a new issue