@@ -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
642645class 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