Skip to content

Commit 085a642

Browse files
committed
temp save
1 parent b88d612 commit 085a642

File tree

9 files changed

+6242
-3810
lines changed

9 files changed

+6242
-3810
lines changed

Preferences.sublime-settings

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"typescript_auto_format": true,
33
"auto_complete_commit_on_tab": true,
4-
"project_error_list": false
4+
"project_error_list": true
55
}

tsserver/tsserver.js

Lines changed: 6152 additions & 3782 deletions
Large diffs are not rendered by default.

tsserver/tsserver.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

typescript/libs/editor_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .reference import RefInfo
1+
from .reference import RefInfo
22
from .node_client import NodeCommClient
33
from .service_proxy import ServiceProxy
44
from .global_vars import *

typescript/libs/node_client.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def __init__(self, scriptPath):
6262
# start node process
6363
pref_settings = sublime.load_settings('Preferences.sublime-settings')
6464
node_path = pref_settings.get('node_path')
65+
project_error_list_enabled = pref_settings.get('project_error_list')
6566
if node_path:
6667
node_path = os.path.expandvars(node_path)
6768
if not node_path:
@@ -85,14 +86,20 @@ def __init__(self, scriptPath):
8586
si.dwFlags |= subprocess.SW_HIDE | subprocess.STARTF_USESHOWWINDOW
8687
self.__serverProc = subprocess.Popen([node_path, scriptPath],
8788
stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si)
88-
self.__workerProc = subprocess.Popen([node_path, scriptPath],
89-
stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si)
89+
if project_error_list_enabled:
90+
self.__workerProc = subprocess.Popen([node_path, scriptPath],
91+
stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si)
92+
else:
93+
self.__workerProc = None
9094
else:
9195
log.debug("opening " + node_path + " " + scriptPath)
9296
self.__serverProc = subprocess.Popen([node_path, scriptPath],
9397
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
94-
self.__workerProc = subprocess.Popen([node_path, scriptPath],
95-
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
98+
if project_error_list_enabled:
99+
self.__workerProc = subprocess.Popen([node_path, scriptPath],
100+
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
101+
else:
102+
self.__workerProc = None
96103
except:
97104
self.__serverProc = None
98105
self.__workerProc = None
@@ -105,7 +112,7 @@ def __init__(self, scriptPath):
105112
readerThread.daemon = True
106113
readerThread.start()
107114

108-
if pref_settings.get('project_error_list'):
115+
if project_error_list_enabled:
109116
# start the worker thread
110117
if self.__workerProc and not self.__workerProc.poll():
111118
log.debug("worker proc {0}".format(self.__workerProc))

typescript/libs/service_proxy.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
import collections
2-
31
from . import json_helpers
42
from .node_client import CommClient
53
from .text_helpers import Location
6-
from .editor_client import cli
74

85

96
class ServiceProxy:

typescript/listeners/completion.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import sublime
1+
import sublime
22

33
from ..libs.view_helpers import *
44
from ..libs.text_helpers import *

typescript/listeners/idle.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
from ..libs import log
44
from .event_hub import EventHub
55

6-
from ..commands import TypescriptProjectErrorList
7-
86

97
class IdleListener:
108
def __init__(self):
@@ -60,8 +58,6 @@ def request_errors(self, view, info, error_delay):
6058
check_update_view(group_active_view)
6159
if len(files) > 0:
6260
cli.service.request_get_err(error_delay, files)
63-
if cli.project_error_list_enabled:
64-
cli.service.request_get_err_for_project(error_delay, active_view().file_name())
6561
self.error_info_requested_not_received = True
6662
self.wait_count = 0
6763
self.set_on_idle_timer(error_delay + 300)
@@ -160,15 +156,6 @@ def handle_time_out(self):
160156
if self.pending_timeout == 0:
161157
self.on_idle()
162158

163-
def update_project_error_list(self):
164-
# Retrieve the project wide errors
165-
test_ev = cli.service.get_event_from_worker()
166-
error_list_panel = TypescriptProjectErrorList.error_list_panel
167-
if is_view_visible(error_list_panel):
168-
while test_ev:
169-
error_list_panel.run_command("append", {"characters": str(test_ev) + "\n"})
170-
test_ev = cli.service.get_event_from_worker()
171-
172159
def on_idle(self):
173160
"""Callback after the idle status is confirmed
174161
@@ -178,9 +165,6 @@ def on_idle(self):
178165
view = active_view()
179166
log.debug("call get_event from on_idle")
180167

181-
if cli.project_error_list_enabled:
182-
self.update_project_error_list()
183-
184168
ev = cli.service.get_event()
185169
if ev is not None:
186170
self.error_info_requested_not_received = False
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
from ..libs.view_helpers import *
2+
from ..libs.text_helpers import *
3+
from ..libs import log
4+
from .event_hub import EventHub
5+
6+
from ..commands import TypescriptProjectErrorList
7+
8+
9+
class ProjectErrorListener:
10+
11+
def __init__(self):
12+
self.just_changed_focus = False
13+
self.modified = False
14+
self.error_info_requested_not_received = False
15+
16+
def on_activated_with_info(self, view, info):
17+
# Ask server for initial error diagnostics
18+
self.request_errors(view, info, 200)
19+
self.set_on_idle_timer(IDLE_TIME_LENGTH)
20+
self.just_changed_focus = True
21+
22+
def post_on_modified(self, view):
23+
if not is_special_view(view):
24+
self.modified = True
25+
self.set_on_idle_timer(100)
26+
27+
def set_on_idle_timer(self, ms):
28+
"""Set timer to go off when file not being modified"""
29+
self.pending_timeout += 1
30+
sublime.set_timeout(self.handle_time_out, ms)
31+
32+
def handle_time_out(self):
33+
self.pending_timeout -= 1
34+
# Only process one idle request during the timeout period
35+
if self.pending_timeout == 0:
36+
self.on_idle()
37+
38+
def on_idle(self):
39+
if cli.project_error_list_enabled:
40+
self.update_project_error_list()
41+
42+
view = active_view()
43+
info = get_info(view)
44+
if info:
45+
log.debug("asking for project errors")
46+
# request errors
47+
self.request_errors(view, info, 500)
48+
49+
def request_errors(self, view, info, error_delay):
50+
if info and cli.project_error_list_enabled and (
51+
self.just_changed_focus or
52+
info.change_count_when_last_err_req_sent < change_count(view)
53+
):
54+
self.just_changed_focus = False
55+
cli.service.request_get_err_for_project(error_delay, view.file_name())
56+
self.set_on_idle_timer(error_delay + 300)
57+
58+
def update_project_error_list(self):
59+
# Retrieve the project wide errors
60+
error_list_panel = TypescriptProjectErrorList.error_list_panel
61+
test_ev = cli.service.get_event_from_worker()
62+
if test_ev:
63+
self.error_info_requested_not_received = False
64+
if is_view_visible(error_list_panel):
65+
while test_ev:
66+
error_list_panel.run_command("append", {"characters": str(test_ev) + "\n"})
67+
test_ev = cli.service.get_event_from_worker()
68+
self.set_on_idle_timer(50)
69+
elif self.error_info_requested_not_received:
70+
self.set_on_idle_timer(50)
71+
72+
listener = ProjectErrorListener()
73+
EventHub.subscribe("on_activated_with_info", listener.on_activated_with_info)
74+
EventHub.subscribe("post_on_modified", listener.post_on_modified)

0 commit comments

Comments
 (0)