Skip to content

Commit 9b19548

Browse files
committed
codeintel2 updated
1 parent 2a996be commit 9b19548

24 files changed

+9303
-1263
lines changed

libs/codeintel2/constants_css3.py

Lines changed: 190 additions & 159 deletions
Large diffs are not rendered by default.

libs/codeintel2/database/database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def __init__(self, mgr, base_dir=None, catalog_dirs=None,
398398
self.event_reporter = event_reporter
399399

400400
if import_everything_langs is None:
401-
self.import_everything_langs = set(["JavaScript", "Node.js", "PHP"])
401+
self.import_everything_langs = set(["JavaScript", "PHP"])
402402
else:
403403
self.import_everything_langs = import_everything_langs
404404
assert isinstance(self.import_everything_langs, set)

libs/codeintel2/database/langlib.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,39 @@ def get_blob_imports(self, prefix):
180180
finally:
181181
self._release_lock()
182182

183+
def blobs_with_basename(self, basename, ctlr=None):
184+
"""Return all blobs that match the given base path.
185+
186+
I.e. a filename lookup across all files in the dirs of this lib.
187+
188+
"basename" is a string, e.g. 'Http.js'
189+
"ctlr" (optional) is an EvalController instance. If
190+
specified it should be used in the normal way (logging,
191+
checking .is_aborted()).
192+
193+
A "blob" is a global scope-tag hit in all of the blobs for the execution
194+
set buffers.
195+
196+
Returns the empty list if no hits.
197+
"""
198+
blobs = []
199+
# we can't use self.get_blob because that only returns one answer; we
200+
# we need all of them.
201+
202+
self._acquire_lock()
203+
try:
204+
for dir in self.dirs:
205+
self.ensure_dir_scanned(dir)
206+
dbfile_from_blobname = self.lang_zone.dfb_from_dir(dir, {})
207+
blobbase = dbfile_from_blobname.get(basename)
208+
if blobbase is not None:
209+
dhash = self.lang_zone.dhash_from_dir(dir)
210+
dbsubpath = join(dhash, blobbase)
211+
blobs.append(self.lang_zone.load_blob(dbsubpath))
212+
finally:
213+
self._release_lock()
214+
return blobs
215+
183216
def hits_from_lpath(self, lpath, ctlr=None, curr_buf=None):
184217
"""Return all hits of the given lookup path.
185218

libs/codeintel2/database/stdlib.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -576,39 +576,36 @@ def _add_res(self, res, lang, name, ver):
576576
LEN_PREFIX = self.db.LEN_PREFIX
577577
is_hits_from_lpath_lang = lang in self.db.import_everything_langs
578578
blob_index = {} # {blobname -> dbfile}
579-
if is_hits_from_lpath_lang:
580-
toplevelname_index = {} # {ilk -> toplevelname -> blobnames}
581-
toplevelprefix_index = {} # {ilk -> prefix -> toplevelnames}
579+
toplevelname_index = {} # {ilk -> toplevelname -> blobnames}
580+
toplevelprefix_index = {} # {ilk -> prefix -> toplevelnames}
582581
for blob in tree.findall("file/scope"):
583582
assert lang == blob.get("lang")
584583
blobname = blob.get("name")
585584
dbfile = self.db.bhash_from_blob_info(cix_path, lang, blobname)
586585
blob_index[blobname] = dbfile
587586
ET.ElementTree(blob).write(join(dbdir, dbfile+".blob"))
588-
if is_hits_from_lpath_lang:
589-
for toplevelname, elem in blob.names.iteritems():
590-
if "__local__" in elem.get("attributes", "").split():
591-
# this is internal to the stdlib
592-
continue
593-
ilk = elem.get("ilk") or elem.tag
594-
bft = toplevelname_index.setdefault(ilk, {})
595-
if toplevelname not in bft:
596-
bft[toplevelname] = set([blobname])
597-
else:
598-
bft[toplevelname].add(blobname)
599-
prefix = toplevelname[:LEN_PREFIX]
600-
tfp = toplevelprefix_index.setdefault(ilk, {})
601-
if prefix not in tfp:
602-
tfp[prefix] = set([toplevelname])
603-
else:
604-
tfp[prefix].add(toplevelname)
587+
for toplevelname, elem in blob.names.iteritems():
588+
if "__local__" in elem.get("attributes", "").split():
589+
# this is internal to the stdlib
590+
continue
591+
ilk = elem.get("ilk") or elem.tag
592+
bft = toplevelname_index.setdefault(ilk, {})
593+
if toplevelname not in bft:
594+
bft[toplevelname] = set([blobname])
595+
else:
596+
bft[toplevelname].add(blobname)
597+
prefix = toplevelname[:LEN_PREFIX]
598+
tfp = toplevelprefix_index.setdefault(ilk, {})
599+
if prefix not in tfp:
600+
tfp[prefix] = set([toplevelname])
601+
else:
602+
tfp[prefix].add(toplevelname)
605603

606604
self.db.save_pickle(join(dbdir, "blob_index"), blob_index)
607-
if is_hits_from_lpath_lang:
608-
self.db.save_pickle(join(dbdir, "toplevelname_index"),
609-
toplevelname_index)
610-
self.db.save_pickle(join(dbdir, "toplevelprefix_index"),
611-
toplevelprefix_index)
605+
self.db.save_pickle(join(dbdir, "toplevelname_index"),
606+
toplevelname_index)
607+
self.db.save_pickle(join(dbdir, "toplevelprefix_index"),
608+
toplevelprefix_index)
612609

613610
mtime = os.stat(cix_path).st_mtime
614611
self.res_index[res.area_path] = mtime

0 commit comments

Comments
 (0)