Utilizzando il reverse engineering è possibile aggiungere una nuova lingua a VSCode. Puoi dare un'occhiata a come il dattiloscritto è implementato come plugin JavaScript e come comunica con node.exe tramite pipe. Ma è una cosa difficile visto che è tutto senza documentazione Fornirò una documentazione molto breve qui:
È possibile definire un nuovo plug-in nella cartella plug-in C:\Users\USER\AppData\Local\Code\app-0.3.0\resources\app\plugins
.
Copia la cartella del dattiloscritto e rinomina le estensioni di file menzionate e i nomi di lingua in tutti i file nella nuova lingua, in modo che il nuovo plug-in venga utilizzato quando viene aperto un file .mylang.
In typescriptServiceClient.js
si vede che un processo figlio viene biforcato e che il suo stdout
è accoppiato a new WireProtocol.Reader
. Associa il tuo mylanguage.exe
(probabilmente dovrai scrivere quel file exe da solo). VSCode chiede che il binario ottenga più informazioni specifiche della lingua.
In typescriptMain.js
si trova la registrazione della funzione per la lingua. Elimina ogni chiamata a monaco.Modes.XXXXXXSupport.register
eccetto monaco.Modes.DeclarationSupport.register
.
Ora aprire una directory in VSCode che contiene i file .mylang e aprirne uno tramite CTRL+P + FileName
. Fare clic con il tasto destro su un identificatore e selezionare Go to Definition
. VSCode invia ora una richiesta del genere tramite StdIn al vostro exe
{"seq":1,"type":"request","command":"definition","arguments":{"file":"d:/Projects/MyProj/Source/MyFile.mylang","line":45,"offset":9}}
VSCode si aspetta una risposta come questa:
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} }] }
Se tutto funziona VSCode aprirà MyOtherFile.mylang e impostare il cursore alla riga 124 in colonna 3.
provarlo sul proprio ;-)
check out Essentials Web repository di Mads Kristensen su github. –
Questo vale per VS, ma non per VS Code. –
Scusa, ho perso quella parte della tua domanda. ~ AppData \ Local \ Code \ app-0.1.0 \ resources \ app \ plugins contiene plug-in di lingua, è possibile utilizzarli. –