• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wurstscript / WurstScript / 210

26 Oct 2023 10:10PM UTC coverage: 62.609% (-1.1%) from 63.756%
210

push

circleci

web-flow
Jass And Wurst Formatter (#620)

Support for formatting .wurst and .j files.

Thanks @karlek 

Co-authored-by: Frotty <Frotty@users.noreply.github.com>
Co-authored-by: Peter Zeller <Peter.peq@googlemail.com>

17297 of 27627 relevant lines covered (62.61%)

0.63 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/languageserver/WurstLanguageServer.java
1
package de.peeeq.wurstio.languageserver;
2

3
import de.peeeq.wurstscript.CompileTimeInfo;
4
import de.peeeq.wurstscript.WLogger;
5
import org.eclipse.lsp4j.*;
6
import org.eclipse.lsp4j.jsonrpc.messages.Either;
7
import org.eclipse.lsp4j.services.LanguageClient;
8
import org.eclipse.lsp4j.services.LanguageClientAware;
9
import org.eclipse.lsp4j.services.TextDocumentService;
10
import org.eclipse.lsp4j.services.WorkspaceService;
11

12
import java.io.FileDescriptor;
13
import java.io.FileOutputStream;
14
import java.io.PrintStream;
15
import java.io.UnsupportedEncodingException;
16
import java.util.Arrays;
17
import java.util.Collections;
18
import java.util.concurrent.CompletableFuture;
19

20
/**
21
 *
22
 */
23
public class WurstLanguageServer implements org.eclipse.lsp4j.services.LanguageServer, LanguageClientAware {
×
24
    private WFile rootUri;
25
    private de.peeeq.wurstio.languageserver.LanguageWorker languageWorker = new de.peeeq.wurstio.languageserver.LanguageWorker();
×
26
    private LanguageClient languageClient;
27

28
    @Override
29
    public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
30
        System.err.println("Loading Wurst version " + CompileTimeInfo.version);
×
31
        setupLogger();
×
32
        try {
33
            System.setErr(new PrintStream(new FileOutputStream(FileDescriptor.err), true, "UTF-8"));
×
34
        } catch (UnsupportedEncodingException e) {
×
35
            System.err.println("Your JVM doesn't support UTF-8 encoding. Output defaults to system encoding.");
×
36
        }
×
37
        if (params.getRootUri() == null) {
×
38
            System.err.println("Workspace null. Make sure to open a valid project root using File->Open Folder, before opening code files.");
×
39
            return CompletableFuture.completedFuture(null);
×
40
        }
41
        WLogger.info("initialize " + params.getRootUri());
×
42
        rootUri = WFile.create(params.getRootUri());
×
43
        languageWorker.setRootPath(rootUri);
×
44

45
        ServerCapabilities capabilities = new ServerCapabilities();
×
46
        capabilities.setCompletionProvider(new CompletionOptions(false, Collections.singletonList(".")));
×
47
        capabilities.setHoverProvider(true);
×
48
        capabilities.setDefinitionProvider(true);
×
49
        capabilities.setSignatureHelpProvider(new SignatureHelpOptions(Arrays.asList("(", ".")));
×
50
        capabilities.setDocumentHighlightProvider(true);
×
51
        capabilities.setReferencesProvider(true);
×
52
        capabilities.setExecuteCommandProvider(new ExecuteCommandOptions(WurstCommands.providedCommands()));
×
53
        capabilities.setRenameProvider(true);
×
54

55

56
        capabilities.setTextDocumentSync(Either.forLeft(TextDocumentSyncKind.Full));
×
57
        capabilities.setCodeActionProvider(true);
×
58
        capabilities.setDocumentSymbolProvider(true);
×
59
        capabilities.setWorkspaceSymbolProvider(true);
×
60
        capabilities.setDocumentFormattingProvider(true);
×
61
        capabilities.setColorProvider(true);
×
62
        capabilities.setCodeLensProvider(new CodeLensOptions(true));
×
63
        capabilities.setFoldingRangeProvider(true);
×
64

65

66
        InitializeResult res = new InitializeResult(capabilities);
×
67
        WLogger.info("initialization done: " + params.getRootUri());
×
68
        System.err.println("initialization done!");
×
69
        return CompletableFuture.completedFuture(res);
×
70
    }
71
    private void setupLogger() {
72
        WLogger.setLogger("languageServer");
×
73
    }
×
74

75
    @Override
76
    public CompletableFuture<Object> shutdown() {
77
        WLogger.info("shutdown");
×
78
        languageWorker.stop();
×
79
        return CompletableFuture.completedFuture("ok");
×
80
    }
81

82
    @Override
83
    public void exit() {
84
        System.exit(0);
×
85
    }
×
86

87
    @Override
88
    public TextDocumentService getTextDocumentService() {
89
        WLogger.info("getTextDocumentService");
×
90
        return new WurstTextDocumentService(languageWorker);
×
91
    }
92

93
    @Override
94
    public WorkspaceService getWorkspaceService() {
95
        WLogger.info("getWorkspaceService");
×
96
        return new WurstWorkspaceService(this);
×
97
    }
98

99
    @Override
100
    public void connect(LanguageClient client) {
101
        WLogger.info("connect to LanguageClient");
×
102
        this.languageClient = client;
×
103
        languageWorker.setLanguageClient(client);
×
104
    }
×
105

106
    public LanguageWorker worker() {
107
        return languageWorker;
×
108
    }
109

110
    public WFile getRootUri() {
111
        return rootUri;
×
112
    }
113

114
    public LanguageClient getLanguageClient() {
115
        return languageClient;
×
116
    }
117

118
    public ConfigProvider getConfigProvider() {
119
        return new ConfigProvider(languageClient);
×
120
    }
121
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc