def run(self, edit, **kw): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} with ctx.js() as c: refs = c.locals.ternFindRefs(view, proj.get("id", "empty")) # do rename for local references only regions = [] file_name = file_name_from_view(view) caret_pos = view.sel()[0].begin() ctx_region = None for r in refs["refs"]: if file_name == r["file"]: rg = sublime.Region(r["start"], r["end"]) if rg.contains(caret_pos): ctx_region = len(regions) regions.append(rg) if regions: sel = view.sel() sel.clear() for r in regions: sel.add(r) view.add_regions(rename_region_key, regions, "string", flags=sublime.HIDDEN) # create rename session globals()["_rename_session"] = { "old_name": view.substr(view.sel()[0]), "ctx_region": ctx_region, "caret_pos": caret_pos, }
def run(self, edit, **kw): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} dfn = ctx.js().locals.ternJumpToDefinition(view, proj.get('id', 'empty')) if dfn: target_file = dfn['file'] # resolve target file if not os.path.isabs(target_file) and proj.get('id', 'empty') != 'empty': target_file = os.path.join(os.path.dirname(proj['id']), target_file) dfn['file'] = target_file if target_file != file_name_from_view(view): target_view = view.window().open_file(target_file) if not target_view.is_loading(): apply_jump_def(target_view, dfn) else: globals()['_jump_def'] = dfn return else: apply_jump_def(view, dfn)
def run(self, edit, **kw): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} with ctx.js() as c: dfn = c.locals.ternJumpToDefinition(view, proj.get("id", "empty")) if dfn: target_file = dfn["file"] # resolve target file if not os.path.isabs(target_file) and proj.get("id", "empty") != "empty": target_file = os.path.join(proj["dir"], target_file) dfn["file"] = target_file if target_file != file_name_from_view(view): target_view = view.window().open_file(target_file) if not target_view.is_loading(): apply_jump_def(target_view, dfn) else: globals()["_jump_def"] = dfn return else: apply_jump_def(view, dfn)
def run(self, edit, **kw): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} refs = ctx.js().locals.ternFindRefs(view, proj.get('id', 'empty')) # do rename for local references only regions = [] file_name = file_name_from_view(view) caret_pos = view.sel()[0].begin() ctx_region = None for r in refs['refs']: if file_name == r['file']: rg = sublime.Region(r['start'], r['end']) if rg.contains(caret_pos): ctx_region = len(regions) regions.append(rg) if regions: sel = view.sel() sel.clear() for r in regions: sel.add(r) view.add_regions(rename_region_key, regions, 'string', flags=sublime.HIDDEN) # create rename session globals()['_rename_session'] = { 'old_name': view.substr(view.sel()[0]), 'ctx_region': ctx_region, 'caret_pos': caret_pos }
def on_post_save(self, view): file_name = view.file_name() if file_name and file_name.endswith('.sublime-project'): # Project file was updated, re-scan all projects return reload_ternjs() if is_js_view(view): p = project.project_for_view(view) if p: sublime.set_timeout(lambda: ctx.js().locals.forceFileUpdate(view, p['id']), 1) return
def on_post_save(self, view): file_name = view.file_name() if file_name and file_name.endswith('.sublime-project'): # Project file was updated, re-scan all projects return reload_ternjs() if is_js_view(view): p = project.project_for_view(view) if p: sublime.set_timeout( lambda: ctx.js().locals.forceFileUpdate(view, p['id']), 1) return
def on_query_completions(self, view, prefix, locations): if not can_run() or not completions_allowed(view) or view.get_regions( rename_region_key): return None proj = project.project_for_view(view) or {} completions = ctx.js().locals.ternHints(view, proj.get('id', 'empty')) if completions and hasattr(completions, 'list'): cmpl = [completion_item(c) for c in completions['list']] # print(cmpl) return cmpl return None
def on_query_completions(self, view, prefix, locations): if not can_run() or not completions_allowed(view) or view.get_regions(rename_region_key): return None proj = project.project_for_view(view) or {} completions = ctx.js().locals.ternHints(view, proj.get('id', 'empty')) if completions and hasattr(completions, 'list'): cmpl = [completion_item(c) for c in completions['list']] # print(cmpl) return cmpl return None
def on_query_completions(self, view, prefix, locations): if not completions_allowed(view) or view.get_regions(rename_region_key) or not can_run(): return None proj = project.project_for_view(view) or {} with ctx.js() as c: completions = c.locals.ternHints(view, proj.get("id", "empty")) if completions and hasattr(completions, "list"): cmpl = [completion_item(_c) for _c in completions["list"]] # print(cmpl) return cmpl return None
def on_post_save(self, view): file_name = view.file_name() if file_name and file_name.endswith(".sublime-project"): # Project file was updated, re-scan all projects return reload_ternjs() if is_js_view(view): p = project.project_for_view(view) if p: def _callback(): with ctx.js() as c: c.locals.forceFileUpdate(view, p["id"]) sublime.set_timeout(_callback, 1) return
def get_regions(self, direction='next'): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} refs = ctx.js().locals.ternFindRefs(view, proj.get('id', 'empty')) # use local references only regions = [] file_name = file_name_from_view(view) for r in refs['refs']: if file_name == r['file']: regions.append(sublime.Region(r['start'], r['end'])) return regions
def completions_allowed(view): "Check if TernJS completions allowed for given view" caret_pos = view.sel()[0].begin() if not is_js_view(view) or not view.score_selector(caret_pos, "-string -comment"): return False proj = project.project_for_view(view) if proj and "disable_completions" in proj["config"]: patterns = proj["config"]["disable_completions"] if not isinstance(patterns, list): patterns = [patterns] for p in patterns: if fnmatch.fnmatch(view.file_name(), p): return False return True
def get_regions(self, direction="next"): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} with ctx.js() as c: refs = c.locals.ternFindRefs(view, proj.get("id", "empty")) # use local references only regions = [] file_name = file_name_from_view(view) for r in refs["refs"]: if file_name == r["file"]: regions.append(sublime.Region(r["start"], r["end"])) return regions
def completions_allowed(view): "Check if TernJS completions allowed for given view" caret_pos = view.sel()[0].begin() if not is_js_view(view) or not view.score_selector(caret_pos, '-string -comment'): return False proj = project.project_for_view(view) if proj and 'disable_completions' in proj['config']: patterns = proj['config']['disable_completions'] if not isinstance(patterns, list): patterns = [patterns] for p in patterns: if fnmatch.fnmatch(view.file_name(), p): return False return True
def run(self, edit, **kw): if not can_run(): return view = active_view() proj = project.project_for_view(view) or {} with ctx.js() as c: refs = c.locals.ternFindRefs(view, proj.get('id', 'empty')) # do rename for local references only regions = [] file_name = file_name_from_view(view) caret_pos = view.sel()[0].begin() ctx_region = None for r in refs['refs']: if file_name == r['file']: rg = sublime.Region(r['start'], r['end']) if rg.contains(caret_pos): ctx_region = len(regions) regions.append(rg) if regions: sel = view.sel() sel.clear() for r in regions: sel.add(r) view.add_regions(rename_region_key, regions, 'string', flags=sublime.HIDDEN) # create rename session globals()['_rename_session'] = { 'old_name': view.substr(view.sel()[0]), 'ctx_region': ctx_region, 'caret_pos': caret_pos }
def on_load(self, view): if is_js_view(view): apply_jump_def(view) p = project.project_for_view(view) if p: sync_project(p, True)