Skip to content

Commit bac36ff

Browse files
author
Peter Vanusanik
committed
massive refactor to service
1 parent 1d05443 commit bac36ff

30 files changed

+544
-360
lines changed

src/main/java/com/en_circle/slt/plugin/SltDocumentationProvider.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.en_circle.slt.plugin.lisp.psi.LispList;
66
import com.en_circle.slt.plugin.lisp.psi.LispSymbol;
77
import com.en_circle.slt.plugin.lisp.psi.impl.LispPsiImplUtil;
8+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService;
89
import com.intellij.lang.documentation.AbstractDocumentationProvider;
910
import com.intellij.openapi.util.text.HtmlBuilder;
1011
import com.intellij.openapi.util.text.HtmlChunk;
@@ -20,7 +21,7 @@ public class SltDocumentationProvider extends AbstractDocumentationProvider {
2021
String text = LispPsiImplUtil.getSExpressionHead(element);
2122
if (text != null) {
2223
String packageName = LispParserUtil.getPackage(element);
23-
SymbolState state = SltLispEnvironmentProvider.getInstance().refreshSymbolFromServer(packageName, text, element);
24+
SymbolState state = LispEnvironmentService.getInstance(element.getProject()).refreshSymbolFromServer(packageName, text, element);
2425
switch (state.binding) {
2526
case NONE:
2627
return SltBundle.message("slt.documentation.types.symbol") + " " + text;
@@ -50,7 +51,7 @@ public class SltDocumentationProvider extends AbstractDocumentationProvider {
5051
if (element instanceof LispSymbol) {
5152
String text = element.getText();
5253
String packageName = LispParserUtil.getPackage(element);
53-
SymbolState state = SltLispEnvironmentProvider.getInstance().refreshSymbolFromServer(packageName, text, element);
54+
SymbolState state = LispEnvironmentService.getInstance(element.getProject()).refreshSymbolFromServer(packageName, text, element);
5455
return asHtml(state, packageName, element, originalElement);
5556
}
5657
return null;
@@ -64,7 +65,7 @@ private String asHtml(SymbolState state, String packageName, PsiElement element,
6465

6566
LispList form = LispParserUtil.getIfHead(element);
6667
if (form != null && state.binding == SymbolBinding.MACRO) {
67-
String macroExpand = SltLispEnvironmentProvider.getInstance().macroexpand(form, packageName);
68+
String macroExpand = LispEnvironmentService.getInstance(element.getProject()).macroexpand(form, packageName);
6869
if (macroExpand != null) {
6970
macroExpand = StringUtils.replace(StringUtils.replace(macroExpand, " ", " "),
7071
"\n", HtmlChunk.br().toString());

src/main/java/com/en_circle/slt/plugin/SltLispEnvironmentProvider.java

Lines changed: 0 additions & 196 deletions
This file was deleted.

src/main/java/com/en_circle/slt/plugin/actions/EvalActionBase.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.en_circle.slt.plugin.SltBundle;
44
import com.en_circle.slt.plugin.SltCommonLispFileType;
5-
import com.en_circle.slt.plugin.SltLispEnvironmentProvider;
5+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService;
66
import com.en_circle.slt.plugin.swank.requests.Eval;
77
import com.en_circle.slt.plugin.swank.requests.EvalFromVirtualFile;
88
import com.en_circle.slt.plugin.swank.requests.LoadFile;
@@ -33,14 +33,14 @@ public void update(@NotNull AnActionEvent event) {
3333
if (editor != null && event.getProject() != null) {
3434
PsiFile file = PsiDocumentManager.getInstance(Objects.requireNonNull(editor.getProject())).getPsiFile(editor.getDocument());
3535
if (file != null && SltCommonLispFileType.INSTANCE.equals(file.getFileType())) {
36-
event.getPresentation().setEnabledAndVisible(SltLispEnvironmentProvider.getInstance().hasEventsSet());
36+
event.getPresentation().setEnabledAndVisible(true);
3737
}
3838
}
3939
}
4040

4141
protected void evaluate(Project project, String buffer, String packageName, Runnable callback) {
4242
try {
43-
SltLispEnvironmentProvider.getInstance().sendToLisp(Eval.eval(buffer, packageName, result -> callback.run()), true);
43+
LispEnvironmentService.getInstance(project).sendToLisp(Eval.eval(buffer, packageName, result -> callback.run()), true);
4444
} catch (Exception e) {
4545
log.warn(SltBundle.message("slt.error.sbclstart"), e);
4646
Messages.showErrorDialog(project, e.getMessage(), SltBundle.message("slt.ui.errors.sbcl.start"));
@@ -49,7 +49,7 @@ protected void evaluate(Project project, String buffer, String packageName, Runn
4949

5050
protected void evaluateRegion(Project project, String buffer, String packageName, String filename, int bufferPosition, int lineno, int charno, Runnable callback) {
5151
try {
52-
SltLispEnvironmentProvider.getInstance().sendToLisp(EvalFromVirtualFile
52+
LispEnvironmentService.getInstance(project).sendToLisp(EvalFromVirtualFile
5353
.eval(buffer, filename, bufferPosition, lineno, charno, packageName, result -> callback.run()), true);
5454
} catch (Exception e) {
5555
log.warn(SltBundle.message("slt.error.sbclstart"), e);
@@ -59,7 +59,7 @@ protected void evaluateRegion(Project project, String buffer, String packageName
5959

6060
protected void evaluateFile(Project project, String filename, VirtualFile virtualFile) {
6161
try {
62-
SltLispEnvironmentProvider.getInstance().sendToLisp(LoadFile.loadFile(filename), true);
62+
LispEnvironmentService.getInstance(project).sendToLisp(LoadFile.loadFile(filename), true);
6363
FileContentUtilCore.reparseFiles(virtualFile);
6464
} catch (Exception e) {
6565
log.warn(SltBundle.message("slt.error.sbclstart"), e);

src/main/java/com/en_circle/slt/plugin/actions/EvalFile.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.en_circle.slt.plugin.SltBundle;
44
import com.en_circle.slt.plugin.SltCommonLispFileType;
5-
import com.en_circle.slt.plugin.SltLispEnvironmentProvider;
65
import com.intellij.openapi.actionSystem.AnActionEvent;
76
import com.intellij.openapi.actionSystem.CommonDataKeys;
87
import com.intellij.openapi.fileEditor.FileEditorManager;
@@ -35,7 +34,7 @@ public void update(@NotNull AnActionEvent event) {
3534
VirtualFile vf = event.getData(CommonDataKeys.VIRTUAL_FILE);
3635
if (vf != null) {
3736
if (vf.getFileType().equals(SltCommonLispFileType.INSTANCE)) {
38-
event.getPresentation().setEnabledAndVisible(SltLispEnvironmentProvider.getInstance().hasEventsSet());
37+
event.getPresentation().setEnabledAndVisible(true);
3938
}
4039
}
4140
}

src/main/java/com/en_circle/slt/plugin/actions/EvalRegionAction.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.en_circle.slt.plugin.actions;
22

33
import com.en_circle.slt.plugin.SltBundle;
4-
import com.en_circle.slt.plugin.SltLispEnvironmentProvider;
54
import com.en_circle.slt.plugin.lisp.LispParserUtil;
5+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService;
66
import com.intellij.openapi.actionSystem.AnActionEvent;
77
import com.intellij.openapi.actionSystem.CommonDataKeys;
88
import com.intellij.openapi.editor.Caret;
@@ -59,7 +59,7 @@ public void actionPerformed(@NotNull AnActionEvent event) {
5959
int offset = editor.getSelectionModel().getSelectionStart();
6060
evaluate(editor.getProject(), selectedText, LispParserUtil.getPackage(psiFile, offset), () -> { });
6161
} else {
62-
evaluate(editor.getProject(), selectedText, SltLispEnvironmentProvider.getInstance().getGlobalPackage(), () -> { });
62+
evaluate(editor.getProject(), selectedText, LispEnvironmentService.getInstance(editor.getProject()).getGlobalPackage(), () -> { });
6363
}
6464
}
6565
}
@@ -84,7 +84,7 @@ private void evalEachCaret(Editor editor, String filename, List<Caret> carets) {
8484
PsiDocumentManager psiMgr = PsiDocumentManager.getInstance(Objects.requireNonNull(editor.getProject()));
8585
psiMgr.commitDocument(editor.getDocument());
8686
PsiFile psiFile = psiMgr.getPsiFile(editor.getDocument());
87-
String packageName = SltLispEnvironmentProvider.getInstance().getGlobalPackage();
87+
String packageName = LispEnvironmentService.getInstance(editor.getProject()).getGlobalPackage();
8888
if (psiFile != null) {
8989
packageName = LispParserUtil.getPackage(psiFile, offset);
9090
}

src/main/java/com/en_circle/slt/plugin/autocomplete/HeadCompletionProvider.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package com.en_circle.slt.plugin.autocomplete;
22

3-
import com.en_circle.slt.plugin.SltLispEnvironmentProvider;
43
import com.en_circle.slt.plugin.SymbolState;
54
import com.en_circle.slt.plugin.SymbolState.SymbolBinding;
65
import com.en_circle.slt.plugin.lisp.LispParserUtil;
76
import com.en_circle.slt.plugin.lisp.lisp.LispContainer;
87
import com.en_circle.slt.plugin.lisp.lisp.LispElement;
98
import com.en_circle.slt.plugin.lisp.lisp.LispString;
9+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService;
10+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService.LispEnvironmentState;
1011
import com.en_circle.slt.plugin.swank.requests.SimpleCompletion;
1112
import com.en_circle.slt.tools.SltApplicationUtils;
1213
import com.intellij.codeInsight.completion.CompletionParameters;
1314
import com.intellij.codeInsight.completion.CompletionProvider;
1415
import com.intellij.codeInsight.completion.CompletionResultSet;
1516
import com.intellij.codeInsight.lookup.LookupElementBuilder;
1617
import com.intellij.icons.AllIcons.Nodes;
18+
import com.intellij.openapi.project.Project;
1719
import com.intellij.util.ProcessingContext;
1820
import org.jetbrains.annotations.NotNull;
1921

@@ -23,18 +25,21 @@
2325
public class HeadCompletionProvider extends CompletionProvider<CompletionParameters> {
2426
@Override
2527
protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet result) {
26-
if (SltLispEnvironmentProvider.getInstance().isLispEnvironmentActive()) {
28+
Project project = parameters.getEditor().getProject();
29+
assert project != null;
30+
31+
if (LispEnvironmentService.getInstance(project).getState() == LispEnvironmentState.READY) {
2732
String startedSymbol = result.getPrefixMatcher().getPrefix();
2833
String packageName = LispParserUtil.getPackage(parameters.getOriginalFile(), parameters.getOffset());
29-
List<LookupElementBuilder> builderList = SltApplicationUtils.getAsyncResultNoThrow(finishRequest -> SimpleCompletion
34+
List<LookupElementBuilder> builderList = SltApplicationUtils.getAsyncResultNoThrow(project, finishRequest -> SimpleCompletion
3035
.simpleCompletion(startedSymbol, packageName, lr -> {
3136
List<LookupElementBuilder> builders = new ArrayList<>();
3237
try {
3338
if (lr instanceof LispContainer container) {
3439
if (container.getItems().get(0) instanceof LispContainer innerList) {
3540
for (LispElement element : innerList.getItems()) {
3641
if (element instanceof LispString str) {
37-
SymbolState state = SltLispEnvironmentProvider.getInstance()
42+
SymbolState state = LispEnvironmentService.getInstance(project)
3843
.refreshSymbolFromServer(null, str.getValue(), null);
3944
LookupElementBuilder builder = LookupElementBuilder.create(str.getValue());
4045
if (state.binding == SymbolBinding.MACRO) {

src/main/java/com/en_circle/slt/plugin/highlights/annotators/SymbolAnnotator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.en_circle.slt.plugin.highlights.annotators;
22

3-
import com.en_circle.slt.plugin.SltLispEnvironmentProvider;
43
import com.en_circle.slt.plugin.SymbolState;
54
import com.en_circle.slt.plugin.highlights.SltHighlighterColors;
65
import com.en_circle.slt.plugin.lisp.LispParserUtil;
76
import com.en_circle.slt.plugin.lisp.psi.LispSymbol;
7+
import com.en_circle.slt.plugin.services.lisp.LispEnvironmentService;
88
import com.intellij.lang.annotation.AnnotationHolder;
99
import com.intellij.lang.annotation.Annotator;
1010
import com.intellij.psi.PsiElement;
@@ -17,7 +17,7 @@ public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder hold
1717
if (element instanceof LispSymbol) {
1818
String text = element.getText();
1919
String packageName = LispParserUtil.getPackage(element);
20-
SymbolState state = SltLispEnvironmentProvider.getInstance().refreshSymbolFromServer(packageName, text, element);
20+
SymbolState state = LispEnvironmentService.getInstance(element.getProject()).refreshSymbolFromServer(packageName, text, element);
2121
setHighlight(element, text, holder, state);
2222
}
2323
}

0 commit comments

Comments
 (0)