11import json , os , re , sublime , sublime_plugin , threading
2- from . import cs_common , cs_conn , cs_eval , cs_parser
2+ from . import cs_common , cs_conn , cs_eval , cs_eval_status , cs_parser
33
44def lines (socket ):
55 buffer = b''
@@ -63,6 +63,24 @@ def send(self, msg):
6363 cs_common .debug ('SND {}' , msg )
6464 self .socket .sendall (msg .encode ())
6565
66+ def eval_impl (self , form ):
67+ msg = ('{' +
68+ f'"id" { form .id } , ' +
69+ f'"op" "eval", ' +
70+ f'"code" "{ form .code } ", ' +
71+ f'"ns" "{ form .ns } "' )
72+ if form .file :
73+ msg += f', "file" "{ form .file } "'
74+
75+ if form .line is not None :
76+ msg += f', "line" { form .line } '
77+
78+ if form .column is not None :
79+ msg += f', "column" { form .column } '
80+
81+ msg += '}'
82+ self .send (msg )
83+
6684 def eval (self , view , sel ):
6785 for region in sel :
6886 # find regions to eval
@@ -84,20 +102,21 @@ def eval(self, view, sel):
84102
85103 # send msg
86104 (line , column ) = view .rowcol_utf16 (region .begin ())
87- line = line + 1
88- code = view .substr (region ).replace ('\\ ' , '\\ \\ ' ).replace ('"' , '\\ "' )
89- ns = cs_parser .namespace (view , region .begin ()) or 'user'
90- file = view .file_name ()
91- msg = ('{' +
92- f'"id" { batch_id } , ' +
93- f'"op" "eval", ' +
94- f'"code" "{ code } ", ' +
95- f'"ns" "{ ns } ", ' +
96- f'"file" "{ file } ", ' +
97- f'"line" { line } , ' +
98- f'"column" { column } ' +
99- '}' )
100- self .send (msg )
105+ form = cs_common .Form (
106+ id = batch_id ,
107+ code = view .substr (region ).replace ('\\ ' , '\\ \\ ' ).replace ('"' , '\\ "' ),
108+ ns = cs_parser .namespace (view , region .begin ()) or 'user' ,
109+ line = line + 1 ,
110+ column = column ,
111+ file = view .file_name ()
112+ )
113+ self .eval_impl (form )
114+
115+ def eval_status (self , code , ns ):
116+ batch_id = cs_eval .Eval .next_id ()
117+ eval = cs_eval_status .StatusEval (code , id = f'{ batch_id } .0' , batch_id = batch_id )
118+ form = cs_common .Form (id = batch_id , code = code , ns = ns )
119+ self .eval_impl (form )
101120
102121 def load_file (self , view ):
103122 self .eval (view , [sublime .Region (0 , view .size ())])
0 commit comments