11package processing .mode .java .lsp ;
22
3+ import java .io .File ;
4+ import java .net .URI ;
5+ import java .util .AbstractMap ;
6+ import java .util .Arrays ;
7+ import java .util .Collections ;
38import java .util .concurrent .CompletableFuture ;
4-
9+ import java .util .HashSet ;
10+ import java .util .List ;
11+ import java .util .Map ;
12+ import java .util .Optional ;
13+ import java .util .Set ;
14+ import java .util .stream .Collectors ;
15+ import java .util .stream .IntStream ;
516import org .eclipse .lsp4j .CompletionItem ;
17+ import org .eclipse .lsp4j .CompletionItemKind ;
18+ import org .eclipse .lsp4j .Diagnostic ;
19+ import org .eclipse .lsp4j .DiagnosticSeverity ;
20+ import org .eclipse .lsp4j .InsertTextFormat ;
621import org .eclipse .lsp4j .jsonrpc .CompletableFutures ;
7- import java .util .List ;
22+ import org .eclipse .lsp4j .Position ;
23+ import org .eclipse .lsp4j .PublishDiagnosticsParams ;
24+ import org .eclipse .lsp4j .Range ;
25+ import org .eclipse .lsp4j .services .LanguageClient ;
26+ import org .eclipse .lsp4j .TextEdit ;
27+ import org .jsoup .Jsoup ;
828import processing .app .Base ;
29+ import processing .app .contrib .ModeContribution ;
930import processing .app .Platform ;
1031import processing .app .Preferences ;
11- import processing .app .contrib .ModeContribution ;
12- import processing .mode .java .JavaMode ;
13- import java .io .File ;
32+ import processing .app .Problem ;
1433import processing .app .Sketch ;
34+ import processing .app .SketchCode ;
35+ import processing .mode .java .AutoFormat ;
36+ import processing .mode .java .CompletionCandidate ;
1537import processing .mode .java .CompletionGenerator ;
16- import processing .mode .java .PreprocService ;
17- import org .eclipse .lsp4j .services .LanguageClient ;
1838import processing .mode .java .ErrorChecker ;
19- import processing .app .Problem ;
20- import org .eclipse .lsp4j .PublishDiagnosticsParams ;
21- import org .eclipse .lsp4j .Diagnostic ;
22- import org .eclipse .lsp4j .Range ;
23- import org .eclipse .lsp4j .Position ;
24- import org .eclipse .lsp4j .DiagnosticSeverity ;
25- import processing .mode .java .PreprocSketch ;
39+ import processing .mode .java .JavaMode ;
2640import processing .mode .java .JavaTextArea ;
27- import java .util .Collections ;
28- import processing .mode .java .CompletionCandidate ;
29- import org .eclipse .lsp4j .InsertTextFormat ;
30- import org .eclipse .lsp4j .CompletionItemKind ;
31- import org .jsoup .Jsoup ;
32- import java .net .URI ;
33- import processing .app .SketchCode ;
34- import org .eclipse .lsp4j .TextEdit ;
35- import processing .mode .java .AutoFormat ;
36- import java .util .Optional ;
37- import java .util .HashSet ;
38- import java .util .Arrays ;
39- import java .util .stream .Collectors ;
40- import java .util .stream .IntStream ;
41- import java .util .Map ;
42- import java .util .AbstractMap ;
43- import java .util .Set ;
44-
45- class Offset {
46- int line ;
47- int col ;
41+ import processing .mode .java .PreprocService ;
42+ import processing .mode .java .PreprocSketch ;
4843
49- Offset (int line , int col ) {
50- this .line = line ;
51- this .col = col ;
52- }
53- }
5444
5545class PdeAdapter {
5646 File rootPath ;
@@ -63,7 +53,7 @@ class PdeAdapter {
6353 ErrorChecker errorChecker ;
6454 CompletableFuture <PreprocSketch > cps ;
6555 CompletionGenerator suggestionGenerator ;
66- Set <URI > prevDiagnosticReportUris = new HashSet <URI >();
56+ Set <URI > prevDiagnosticReportUris = new HashSet <>();
6757
6858
6959 PdeAdapter (File rootPath , LanguageClient client ) {
@@ -100,6 +90,7 @@ static Optional<File> uriToPath(URI uri) {
10090 }
10191 }
10292
93+
10394 static URI pathToUri (File path ) {
10495 return path .toURI ();
10596 }
@@ -118,16 +109,14 @@ static void init() {
118109 }
119110
120111 void notifySketchChanged () {
121- CompletableFuture <PreprocSketch > cps = new CompletableFuture <PreprocSketch >();
112+ CompletableFuture <PreprocSketch > cps = new CompletableFuture <>();
122113 this .cps = cps ;
123114 preprocService .notifySketchChanged ();
124115 errorChecker .notifySketchChanged ();
125- preprocService .whenDone (ps -> {
126- cps .complete (ps );
127- });
116+ preprocService .whenDone (cps ::complete );
128117 }
129118
130- Optional <SketchCode > findCodeByUri (URI uri ) {
119+ Optional <SketchCode > findCodeByUri (URI uri ) {
131120 return PdeAdapter .uriToPath (uri )
132121 .flatMap (path -> Arrays .stream (sketch .getCode ())
133122 .filter (code -> code .getFile ().equals (path ))
@@ -161,7 +150,7 @@ void updateProblems(List<Problem> probs) {
161150 ? DiagnosticSeverity .Error
162151 : DiagnosticSeverity .Warning
163152 );
164- return new AbstractMap .SimpleEntry <URI , Diagnostic >(
153+ return new AbstractMap .SimpleEntry <>(
165154 PdeAdapter .pathToUri (code .getFile ()),
166155 dia
167156 );
@@ -204,42 +193,31 @@ CompletionItem convertCompletionCandidate(CompletionCandidate c) {
204193 char [] chs = insert .replace ("(," , "($1," ).toCharArray ();
205194 insert = "" ;
206195 for (char ch : chs ) {
207- switch (ch ) {
208- case ',' : {
209- n += 1 ;
210- insert += ",$" + n ;
211- }
212- default : insert += ch ;
196+ if (ch == ',' ) {
197+ n += 1 ;
198+ insert += ",$" + n ;
213199 }
200+ insert += ch ;
214201 }
215202 }
216203 item .setInsertText (insert );
217- CompletionItemKind kind ;
218- switch (c .getType ()) {
219- case 0 : // PREDEF_CLASS
220- kind = CompletionItemKind .Class ;
221- break ;
222- case 1 : // PREDEF_FIELD
223- kind = CompletionItemKind .Constant ;
224- break ;
225- case 2 : // PREDEF_METHOD
226- kind = CompletionItemKind .Function ;
227- break ;
228- case 3 : // LOCAL_CLASS
229- kind = CompletionItemKind .Class ;
230- break ;
231- case 4 : // LOCAL_METHOD
232- kind = CompletionItemKind .Method ;
233- break ;
234- case 5 : // LOCAL_FIELD
235- kind = CompletionItemKind .Field ;
236- break ;
237- case 6 : // LOCAL_VARIABLE
238- kind = CompletionItemKind .Variable ;
239- break ;
240- default :
241- throw new IllegalArgumentException ("Unknown completion type: " + c .getType ());
242- }
204+ CompletionItemKind kind = switch (c .getType ()) {
205+ case 0 -> // PREDEF_CLASS
206+ CompletionItemKind .Class ;
207+ case 1 -> // PREDEF_FIELD
208+ CompletionItemKind .Constant ;
209+ case 2 -> // PREDEF_METHOD
210+ CompletionItemKind .Function ;
211+ case 3 -> // LOCAL_CLASS
212+ CompletionItemKind .Class ;
213+ case 4 -> // LOCAL_METHOD
214+ CompletionItemKind .Method ;
215+ case 5 -> // LOCAL_FIELD
216+ CompletionItemKind .Field ;
217+ case 6 -> // LOCAL_VARIABLE
218+ CompletionItemKind .Variable ;
219+ default -> throw new IllegalArgumentException ("Unknown completion type: " + c .getType ());
220+ };
243221 item .setKind (kind );
244222 item .setDetail (Jsoup .parse (c .getLabel ()).text ());
245223 return item ;
@@ -327,4 +305,15 @@ Optional<TextEdit> format(URI uri) {
327305 );
328306 });
329307 }
308+
309+
310+ static class Offset {
311+ int line ;
312+ int col ;
313+
314+ Offset (int line , int col ) {
315+ this .line = line ;
316+ this .col = col ;
317+ }
318+ }
330319}
0 commit comments