Skip to content

Commit 17bee57

Browse files
committed
temp save
1 parent 1fd65fd commit 17bee57

File tree

12 files changed

+17696
-10586
lines changed

12 files changed

+17696
-10586
lines changed

tsserver/tsc.js

Lines changed: 5068 additions & 3480 deletions
Large diffs are not rendered by default.

tsserver/tsserver.js

Lines changed: 12513 additions & 6433 deletions
Large diffs are not rendered by default.

typescript/commands/error_list.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
from ..libs import global_vars
1+
from ..libs import cli
2+
from ..libs.view_helpers import active_view, get_info
3+
from ..libs.panel_manager import get_panel_manager
4+
from ..listeners.project_error_list import start_timer
25
from .base_command import TypeScriptBaseWindowCommand
36

47
class TypescriptProjectErrorList(TypeScriptBaseWindowCommand):
58

6-
error_list_panel = None
7-
89
def run(self):
9-
if not TypescriptProjectErrorList.error_list_panel:
10-
TypescriptProjectErrorList.error_list_panel = self.window.create_output_panel("errorList")
11-
1210
if not cli.node_client.workerStarted():
1311
view = active_view()
1412
# start worker process
@@ -17,11 +15,8 @@ def run(self):
1715
get_info(view)
1816
# send the first error request
1917
cli.service.request_get_err_for_project(0, view.file_name())
18+
start_timer()
2019

21-
global_vars._is_worker_active = True
22-
self.window.run_command("show_panel", {"panel": "output.errorList"})
23-
24-
@staticmethod
25-
def is_worker_active():
26-
panel = TypescriptProjectErrorList.error_list_panel
27-
return panel is not None and is_view_visible(panel)
20+
panel_manager = get_panel_manager()
21+
panel_manager.add_panel("errorlist")
22+
panel_manager.show_panel("errorlist")

typescript/libs/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
from .node_client import NodeCommClient
1+
from .node_client import NodeCommClient
22
from .popup_manager import PopupManager
33
from .service_proxy import ServiceProxy
44
from .editor_client import cli, EditorClient
55
from .popup_manager import get_popup_manager
66
from .logger import log
7+
from .panel_manager import get_panel_manager
78
from . import logger
89
__all__ = [
910
'cli',
@@ -15,5 +16,6 @@
1516
'json_helpers',
1617
'PopupManager',
1718
'ServiceProxy',
18-
'work_scheduler'
19+
'work_scheduler',
20+
'get_panel_manager'
1921
]

typescript/libs/editor_client.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ def __init__(self):
3636
self.translate_tab_to_spaces = False
3737
self.ts_auto_format_enabled = True
3838
self.ts_auto_indent_enabled = True
39-
self.project_error_list_enabled = False
4039
self.auto_match_enabled = True
4140

4241
def initialize(self):
@@ -70,9 +69,6 @@ def initialize(self):
7069
settings.add_on_change(setting_name, self.load_format_settings)
7170
self.load_format_settings()
7271

73-
# project_error_list should only be set once.
74-
self.project_error_list_enabled = settings.get('project_error_list')
75-
7672
self.initialized = True
7773

7874
def load_format_settings(self):

typescript/libs/global_vars.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,4 @@ def get_node_path():
5050
VALID_COMPLETION_ID_PATTERN = re.compile("[a-zA-Z_$\.][\w$\.]*\Z")
5151

5252
# idle time length in millisecond
53-
IDLE_TIME_LENGTH = 200
54-
55-
# if the worker process for error list is running
56-
_is_worker_active = False
57-
def is_worker_active():
58-
return _is_worker_active
53+
IDLE_TIME_LENGTH = 200

typescript/libs/node_client.py

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,27 @@ def sendCmdToWorkerAsync(self, cmd, cb): pass
4545

4646
class NodeCommClient(CommClient):
4747
__CONTENT_LENGTH_HEADER = b"Content-Length: "
48+
stop_worker = False
4849

49-
def __init__(self, script_path):
50+
def __init__(self, scriptPath):
5051
"""
5152
Starts a node client (if not already started) and communicate with it.
5253
The script file to run is passed to the constructor.
5354
"""
5455

5556
self.asyncReq = {}
5657
self.__serverProc = None
57-
self.script_path = script_path
58+
self.__workerProc = None
59+
self.script_path = scriptPath
5860

5961
# create response and event queues
6062
self.__msgq = queue.Queue()
6163
self.__eventq = queue.Queue()
6264
self.__worker_eventq = queue.Queue()
6365

64-
# set worker to None at init
65-
self.__workerProc = None
66-
6766
# start node process
6867
pref_settings = sublime.load_settings('Preferences.sublime-settings')
6968
node_path = pref_settings.get('node_path')
70-
project_error_list_enabled = pref_settings.get('project_error_list')
7169
if node_path:
7270
node_path = os.path.expandvars(node_path)
7371
if not node_path:
@@ -89,26 +87,29 @@ def __init__(self, script_path):
8987
# so only use it if on Windows
9088
si = subprocess.STARTUPINFO()
9189
si.dwFlags |= subprocess.SW_HIDE | subprocess.STARTF_USESHOWWINDOW
92-
self.__serverProc = subprocess.Popen([node_path, script_path],
90+
self.__serverProc = subprocess.Popen([node_path, scriptPath],
9391
stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si)
9492
else:
95-
log.debug("opening " + node_path + " " + script_path)
96-
self.__serverProc = subprocess.Popen([node_path, script_path],
93+
log.debug("opening " + node_path + " " + scriptPath)
94+
self.__serverProc = subprocess.Popen([node_path, scriptPath],
9795
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
9896
except:
9997
self.__serverProc = None
10098
# start reader thread
10199
if self.__serverProc and (not self.__serverProc.poll()):
102100
log.debug("server proc " + str(self.__serverProc))
103101
log.debug("starting reader thread")
104-
readerThread = threading.Thread(target=NodeCommClient.__reader, args=(self.__serverProc.stdout, self.__msgq, self.__eventq, self.asyncReq, self.__serverProc))
102+
readerThread = threading.Thread(target=NodeCommClient.__reader, args=(
103+
self.__serverProc.stdout, self.__msgq, self.__eventq, self.asyncReq, self.__serverProc))
105104
readerThread.daemon = True
106105
readerThread.start()
107106

108107
self.__debugProc = None
109108
self.__breakpoints = []
110109

111110
def startWorker(self):
111+
NodeCommClient.stop_worker = False
112+
112113
node_path = global_vars.get_node_path()
113114
if os.name == "nt":
114115
si = subprocess.STARTUPINFO()
@@ -120,14 +121,18 @@ def startWorker(self):
120121
self.__workerProc = subprocess.Popen(
121122
[node_path, self.script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
122123

123-
# start the worker thread
124-
if self.__workerProc and not self.__workerProc.poll():
125-
log.debug("worker proc {0}".format(self.__workerProc))
126-
log.debug("starting worker thread")
127-
self.worker_thread = threading.Thread(target=NodeCommClient.__reader,
128-
args=(self.__workerProc.stdout, self.__msgq, self.__worker_eventq, self.asyncReq, self.__workerProc))
129-
self.worker_thread.daemon = True
130-
self.worker_thread.start()
124+
# start reader thread
125+
if self.__serverProc and (not self.__serverProc.poll()):
126+
log.debug("server proc " + str(self.__serverProc))
127+
log.debug("starting reader thread")
128+
readerThread = threading.Thread(target=NodeCommClient.__reader, args=(
129+
self.__serverProc.stdout, self.__msgq, self.__eventq, self.asyncReq, self.__serverProc))
130+
readerThread.daemon = True
131+
readerThread.start()
132+
log.debug("readerThread.is_alive: {0}".format(readerThread.is_alive()))
133+
134+
def stopWorker(self):
135+
NodeCommClient.stop_worker = True
131136

132137
def serverStarted(self):
133138
return self.__serverProc is not None
@@ -289,7 +294,6 @@ def __readMsg(stream, msgq, eventq, asyncReq, proc):
289294
# header if header else 'None'
290295
# )
291296
# )
292-
293297
if len(header) == 0:
294298
if state == 'init':
295299
# log.info('0 byte line in stream when expecting header')
@@ -326,11 +330,18 @@ def __readMsg(stream, msgq, eventq, asyncReq, proc):
326330

327331
@staticmethod
328332
def __reader(stream, msgq, eventq, asyncReq, proc):
329-
"""
330-
Main function for reader thread
331-
"""
333+
""" Main function for reader thread """
332334
while True:
333335
if NodeCommClient.__readMsg(stream, msgq, eventq, asyncReq, proc):
336+
log.debug("server exited")
337+
return
338+
339+
@staticmethod
340+
def __worker_reader(stream, msgq, eventq, asyncReq, proc):
341+
""" Main function for worker thread """
342+
while True:
343+
if NodeCommClient.__readMsg(stream, msgq, eventq, asyncReq, proc) or NodeCommClient.stop_worker:
344+
log.debug("worker exited")
334345
return
335346

336347
@staticmethod

0 commit comments

Comments
 (0)