Przy użyciu inżynierii odwrotnej można dodać nowy język do VSCode. Możesz rzucić okiem na to, jak zaimplementowany jest skrypt maszynowy jako wtyczka JavaScript i jak komunikuje się z node.exe przez potok. Ale to trudne, ponieważ nadchodzi bez dokumentacji. Dostarczę tutaj naprawdę krótką dokumentację:
Możesz zdefiniować nową wtyczkę w folderze wtyczek C:\Users\USER\AppData\Local\Code\app-0.3.0\resources\app\plugins
.
Skopiuj folder wtyczki maszynopisu i zmień nazwy wymienionych rozszerzeń plików i nazw języków we wszystkich plikach na nowy język, aby nowa wtyczka była używana po otwarciu pliku .mylang.
W pliku typescriptServiceClient.js
widać, że proces potomny jest rozwidlany, a jego numer stdout
jest połączony z new WireProtocol.Reader
. Zwiąż swoją własną mylanguage.exe
(prawdopodobnie będziesz musiał napisać ten plik exe na własną rękę). VSCode prosi binarnego, aby uzyskać więcej informacji specyficznych dla języka.
W typescriptMain.js
znajduje się rejestracja funkcji dla tego języka. Usuń każde połączenie do numeru monaco.Modes.XXXXXXSupport.register
z wyjątkiem numeru monaco.Modes.DeclarationSupport.register
.
Teraz otwórz katalog w VSCode zawierający pliki .mylang i otwórz jeden z nich przez CTRL+P + FileName
. Kliknij prawym przyciskiem myszy na identyfikator i wybierz Go to Definition
. VSCode teraz wysyła żądanie takiego pośrednictwem standardowego wejścia do exe
{"seq":1,"type":"request","command":"definition","arguments":{"file":"d:/Projects/MyProj/Source/MyFile.mylang","line":45,"offset":9}}
VSCode spodziewa odpowiedź tak:
Content-Length: 251
[LINE BREAK]
{ "seq" : 1, "type" : "response", "command" : "definition", "request_seq" : 1, "success" : true, "body" : [{ "file" : "d:/Projects/MyProj/Source/MyOtherFile.mylang", "start" : { "line" : 125, "offset" : 3 }, "end" : { "line" : 145, "offset" : 11} }] }
Jeśli wszystko działa VSCode otworzy MyOtherFile.mylang i ustawić kursor w linii 124 kolumna 3.
Wypróbuj go na własną rękę ;-)
wymeldowania Essentials Web repozytorium Mads Kristensen jest na github. –
To jest dla VS, ale nie dla kodu VS. –
Przepraszamy, tęskniłem za tą częścią twojego pytania. ~ AppData \ Local \ Code \ app-0.1.0 \ resources \ app \ plugins Katalog zawiera wtyczki językowe, możesz z nich korzystać. –