@@ -192,8 +192,7 @@ def scan_error(self):
192192 finally :
193193 self .release_lock ()
194194
195- @property
196- def blob_from_lang (self ):
195+ def get_blob_from_lang (self , reporter = None ):
197196 self .acquire_lock ()
198197 try :
199198 if self ._blob_from_lang_cache is None :
@@ -202,14 +201,18 @@ def blob_from_lang(self):
202201 except NotFoundInDatabase :
203202 self .release_lock ()
204203 try :
205- self .scan ()
204+ self .scan (reporter = reporter )
206205 finally :
207206 self .acquire_lock ()
208207 self ._load_buf_data_once (True )
209208 return self ._blob_from_lang_cache
210209 finally :
211210 self .release_lock ()
212211
212+ @property
213+ def blob_from_lang (self ):
214+ return self .get_blob_from_lang ()
215+
213216 @property
214217 def tree (self ):
215218 """The CIX tree for this buffer. Will lazily scan if necessary."""
@@ -239,7 +242,7 @@ def cix(self):
239242 """The CIX for this buffer. Will lazily scan if necessary."""
240243 return ET .tostring (self .tree )
241244
242- def scan (self , mtime = None , skip_scan_time_check = False ):
245+ def scan (self , mtime = None , skip_scan_time_check = False , reporter = None ):
243246 """Scan the current buffer.
244247
245248 "mtime" is the modification time of the buffer content. If
@@ -257,6 +260,9 @@ def scan(self, mtime=None, skip_scan_time_check=False):
257260 if mtime is None :
258261 mtime = time .time ()
259262
263+ if reporter :
264+ reporter ("Scanning %s file '%s'" % (self .lang , self .path ))
265+
260266 #TODO: Eventually would like the CILEDriver scan methods to have
261267 # a signature more inline with
262268 # blob_from_lang/scan_time/scan_error. I.e. drop
@@ -350,9 +356,9 @@ def scoperef_from_blob_and_line(self, blob, line): # line is 1-based
350356 break
351357 return (blob , lpath )
352358
353- def scan_if_necessary (self ):
359+ def scan_if_necessary (self , reporter = None ):
354360 # SIDE-EFFECT: results in `self.scan()` if not in the db.
355- self .blob_from_lang
361+ self .get_blob_from_lang ( reporter = reporter )
356362
357363 def unload (self ):
358364 """Remove this buffer from the database."""
@@ -367,7 +373,7 @@ def __init__(self, lang, mgr, env, path):
367373 self .lang = lang
368374 super (BinaryBuffer , self ).__init__ (mgr , None , env , path , None )
369375
370- def scan (self , mtime = None , skip_scan_time_check = False ):
376+ def scan (self , mtime = None , skip_scan_time_check = False , reporter = None ):
371377 if self .path is None :
372378 raise CodeIntelError ("cannot scan %s buffer: 'path' is not set (setting "
373379 "a fake path starting with '<Unsaved>' is okay)"
@@ -377,6 +383,9 @@ def scan(self, mtime=None, skip_scan_time_check=False):
377383 if mtime is None :
378384 mtime = time .time ()
379385
386+ if reporter :
387+ reporter ("Scanning %s file '%s'" % (self .lang , self .path ))
388+
380389 scan_tree = None
381390 try :
382391 scan_tree = cile_driver .scan_binary (self )
0 commit comments