Skip to content

Commit fb1c86b

Browse files
committed
Clear Eval Code status in non-active views (closes #32)
1 parent 43dcf86 commit fb1c86b

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

package.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ def region(self):
121121
return None
122122

123123
def active_view(self):
124-
if sublime.active_window():
125-
return sublime.active_window().active_view()
124+
if window := sublime.active_window():
125+
return window.active_view()
126126

127127
def update(self, status, value, region = None):
128128
self.status = status
@@ -147,28 +147,32 @@ class Connection:
147147
port: str
148148
status: str
149149
evals: Dict[int, Eval]
150+
last_view: sublime.View
150151

151152
def __init__(self):
152153
self.host = 'localhost'
153154
self.port = None
154155
self.evals = {}
155156
self.reset()
157+
self.last_view = window.active_view() if (window := sublime.active_window()) else None
156158

157159
def set_status(self, status):
158160
self.status = status
159161
self.refresh_status()
160162

161163
def refresh_status(self):
162-
if sublime.active_window():
163-
view = sublime.active_window().active_view()
164-
if view:
164+
if window := sublime.active_window():
165+
if view := window.active_view():
165166
if self.status:
166167
view.set_status(ns, self.status)
167168
else:
168169
view.erase_status(ns)
169170
for eval in self.evals.values():
170171
if isinstance(eval, StatusEval):
171-
eval.update(eval.status, eval.value)
172+
if self.last_view and view != self.last_view:
173+
self.last_view.erase_status(eval.value_key())
174+
eval.update(eval.status, eval.value)
175+
conn.last_view = view
172176

173177
def send(self, msg):
174178
if settings().get("debug"):
@@ -290,8 +294,7 @@ def run_loop(self):
290294
break
291295
time.sleep(self.interval / 1000.0)
292296
updated = False
293-
if sublime.active_window() and sublime.active_window().active_view():
294-
view = sublime.active_window().active_view()
297+
if (window := sublime.active_window()) and (view := window.active_view()):
295298
for eval in list(conn.evals.values()):
296299
if eval.view == view and eval.status == "pending":
297300
eval.update(eval.status, self.phase())
@@ -636,8 +639,8 @@ def connect(host, port):
636639
except Exception as e:
637640
conn.socket = None
638641
conn.set_status(None)
639-
if sublime.active_window():
640-
sublime.active_window().status_message(f"Failed to connect to {host}:{port}")
642+
if window := sublime.active_window():
643+
window.status_message(f"Failed to connect to {host}:{port}")
641644

642645
class SublimeClojureHostPortInputHandler(sublime_plugin.TextInputHandler):
643646
def placeholder(self):
@@ -647,8 +650,7 @@ def initial_text(self):
647650
port = ''
648651
if conn.port:
649652
port = str(conn.port)
650-
window = sublime.active_window()
651-
if window:
653+
if window := sublime.active_window():
652654
for folder in window.folders():
653655
if os.path.exists(folder + "/.nrepl-port"):
654656
with open(folder + "/.nrepl-port", "rt") as f:

0 commit comments

Comments
 (0)