@@ -13,10 +13,12 @@ import * as notifications from "./notifications";
1313var savedContext : vscode . ExtensionContext ;
1414var client : LanguageClient ;
1515var activeEditor : vscode . TextEditor ;
16+ var progressBar : vscode . StatusBarItem ;
1617
1718export function activate ( context : vscode . ExtensionContext ) {
1819 console . log ( "emmy lua actived!" ) ;
1920 savedContext = context ;
21+ progressBar = vscode . window . createStatusBarItem ( vscode . StatusBarAlignment . Left ) ;
2022 startClient ( ) ;
2123
2224 vscode . window . onDidChangeActiveTextEditor ( editor => {
@@ -28,6 +30,8 @@ export function activate(context: vscode.ExtensionContext) {
2830 // Annotator.updateDecorations(activeEditor);
2931 // }
3032 // }, null, savedContext.subscriptions);
33+
34+ vscode . commands . registerCommand ( "emmy.restartServer" , restartServer ) ;
3135}
3236
3337// this method is called when your extension is deactivated
@@ -49,31 +53,33 @@ function startClient() {
4953 }
5054 } ;
5155
52- // The server is a started as a separate app and listens on port 5007
53- let connectionInfo = {
54- port : 5007
55- } ;
56- let serverOptions : ServerOptions = ( ) => {
57- // Connect to language server via socket
58- let socket = net . connect ( connectionInfo ) ;
59- let result : StreamInfo = {
60- writer : socket ,
61- reader : socket as NodeJS . ReadableStream
56+ let socketMode = false ;
57+ var serverOptions : ServerOptions ;
58+ if ( socketMode ) {
59+ // The server is a started as a separate app and listens on port 5007
60+ let connectionInfo = {
61+ port : 5007
6262 } ;
63- socket . on ( "close" , ( ) => {
64- console . log ( "client connect error!" ) ;
65- } ) ;
66- return Promise . resolve ( result ) ;
67- } ;
68-
69- // let cp = path.resolve(savedContext.extensionPath, "../language-server/build/libs", "language-server.jar");
70-
71- // let exec: Executable = {
72- // command: "java",
73- // args: ["-cp", cp, "org.emmylua.vscode.MainKt"]
74- // };
75- let progressBar = vscode . window . createStatusBarItem ( vscode . StatusBarAlignment . Left ) ;
76-
63+ serverOptions = ( ) => {
64+ // Connect to language server via socket
65+ let socket = net . connect ( connectionInfo ) ;
66+ let result : StreamInfo = {
67+ writer : socket ,
68+ reader : socket as NodeJS . ReadableStream
69+ } ;
70+ socket . on ( "close" , ( ) => {
71+ console . log ( "client connect error!" ) ;
72+ } ) ;
73+ return Promise . resolve ( result ) ;
74+ } ;
75+ } else {
76+ let cp = path . resolve ( savedContext . extensionPath , "../EmmyLua-LanguageServer/EmmyLua-PSI/build/libs" , "*" ) ;
77+ serverOptions = {
78+ command : "java" ,
79+ args : [ "-cp" , cp , "com.tang.vscode.vscode.MainKt" ]
80+ } ;
81+ }
82+
7783 client = new LanguageClient ( "EmmyLua" , "EmmyLua plugin for vscode." , serverOptions , clientOptions ) ;
7884 client . onReady ( ) . then ( ( ) => {
7985 console . log ( "client ready" ) ;
@@ -101,4 +107,14 @@ function startClient() {
101107 decreaseIndentPattern : / e n d | e l s e | e l s e i f | u n t i l / ,
102108 }
103109 } ) ;
110+ }
111+
112+ function restartServer ( ) {
113+ if ( ! client ) {
114+ startClient ( ) ;
115+ } else {
116+ client . stop ( ) . then ( ( ) => {
117+ startClient ( ) ;
118+ } ) ;
119+ }
104120}
0 commit comments