def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "placeholders"): ctlr.set_cplns(self._get_all_placeholders_in_buffer(buf, pos)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "tags"): ctlr.set_cplns(self._get_all_tags_in_buffer(buf, pos)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "keywords"): kw_prefix = trg.extra.get("kw_prefix") cplns = [x for x in keywords if x.startswith(kw_prefix)] cplns = [("keyword", x) for x in sorted(cplns, cmp=CompareNPunctLast)] ctlr.set_cplns(cplns) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "placeholders"): ctlr.set_cplns(self._get_all_placeholders_in_buffer(buf, pos)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "tags"): ctlr.set_cplns(self._get_all_tags_in_buffer(buf, pos)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "keywords"): kw_prefix = trg.extra.get("kw_prefix") cplns = [x for x in keywords if x.startswith(kw_prefix)] cplns = [("keyword", x) for x in sorted(cplns, cmp=CompareNPunctLast)] ctlr.set_cplns(cplns) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: if hasattr(trg, "_comobj_"): trg = UnwrapObject(trg) if hasattr(ctlr, "_comobj_"): ctlr = UnwrapObject(ctlr) cplns = None ctlr.start(buf, trg) type = trg.type if type == "tags-and-namespaces": # extract tag hierarchy context -> context # pass context to schema-based-evaluator -> completions cplns = self.cpln_start_tag(buf, trg, True) elif type == "gt-bang": cplns = [ ('doctype', 'DOCTYPE'), ('cdata', '[CDATA['), ('comment', '--'), ] elif type == "end-tag": cplns = self.cpln_end_tag(buf, trg) elif type == "well-known-ns": # this is a hack, we should get this from the catalog, but # prefix names are *not* standardized. cplns = common_namespace_cplns elif type == "well-known-ns-uri": # we get all uri's known to our catalog system uris = getService().resolver.getWellKnownNamspaces() cplns = [('namespace', x) for x in uris] elif type == "ns-tags": plns = self.cpln_start_tag(buf, trg, False) elif type == "ns-tags-attrs": cplns = self.cpln_start_attrribute(buf, trg) elif type == "tag-attrs": cplns = self.cpln_start_attrribute(buf, trg) elif type == "attr-enum-values": cplns = self.cpln_start_attribute_value(buf, trg) else: ctlr.error( "lang_xml.py: async_eval_at_trg:\n Internal error: Unknown UDL-based XML completion type: %r" % (type, )) ctlr.done("error") return if cplns: ctlr.set_cplns(cplns) ctlr.done("success")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: if hasattr(trg, "_comobj_"): trg = UnwrapObject(trg) if hasattr(ctlr, "_comobj_"): ctlr = UnwrapObject(ctlr) cplns = None ctlr.start(buf, trg) type = trg.type if type == "tags-and-namespaces": # extract tag hierarchy context -> context # pass context to schema-based-evaluator -> completions cplns = self.cpln_start_tag(buf, trg, True) elif type == "gt-bang": cplns = [ ('doctype', 'DOCTYPE'), ('cdata', '[CDATA['), ('comment', '--'), ] elif type == "end-tag": cplns = self.cpln_end_tag(buf, trg) elif type == "well-known-ns": # this is a hack, we should get this from the catalog, but # prefix names are *not* standardized. cplns = common_namespace_cplns elif type == "well-known-ns-uri": # we get all uri's known to our catalog system uris = getService().resolver.getWellKnownNamspaces() cplns = [('namespace', x) for x in uris] elif type == "ns-tags": plns = self.cpln_start_tag(buf, trg, False) elif type == "ns-tags-attrs": cplns = self.cpln_start_attrribute(buf, trg) elif type == "tag-attrs": cplns = self.cpln_start_attrribute(buf, trg) elif type == "attr-enum-values": cplns = self.cpln_start_attribute_value(buf, trg) else: ctlr.error( "lang_xml.py: async_eval_at_trg:\n Internal error: Unknown UDL-based XML completion type: %r" % (type,)) ctlr.done("error") return if cplns: ctlr.set_cplns(cplns) ctlr.done("success")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) ctlr.start(buf, trg) if trg.type in ("object-members", "call-signature", "literal-members") or trg.form == TRG_FORM_DEFN: line = buf.accessor.line_from_pos(trg.pos) if trg.type == "literal-members": # We could leave this to citdl_expr_from_trg, but this is a # little bit faster, since we already know the citdl expr. citdl_expr = trg.extra.get("citdl_expr") else: try: citdl_expr = self.citdl_expr_from_trg(buf, trg) except CodeIntelError, ex: ctlr.error(str(ex)) ctlr.done("error") return evalr = PythonTreeEvaluator(ctlr, buf, trg, citdl_expr, line) buf.mgr.request_eval(evalr)
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "identifiers"): word_start = trg.extra.get("word_start") word_end = trg.extra.get("word_end") if word_start is not None and word_end is not None: # Only return keywords that start with the given 2-char prefix. prefix = buf.accessor.text_range(word_start, word_end)[:2] cplns = [x for x in keywords if x.startswith(prefix)] cplns = [("keyword", x) for x in sorted(cplns, cmp=CompareNPunctLast)] ctlr.set_cplns(cplns) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "variables"): # Find all variables in the current file, complete using them. ctlr.set_cplns(self._get_all_variables_in_buffer(buf)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "identifiers"): # Return all known keywords and builtins. ctlr.set_cplns(self._get_all_known_identifiers(buf)) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "identifiers"): word_start = trg.extra.get("word_start") word_end = trg.extra.get("word_end") if word_start is not None and word_end is not None: # Only return keywords that start with the given 2-char prefix. prefix = buf.accessor.text_range(word_start, word_end)[:2] cplns = [x for x in keywords if x.startswith(prefix)] cplns = [("keyword", x) for x in sorted(cplns, cmp=CompareNPunctLast)] ctlr.set_cplns(cplns) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) if trg.id == (self.lang, TRG_FORM_CPLN, "variables"): # Find all variables in the current file, complete using them. ctlr.set_cplns(self._get_all_variables_in_buffer(buf)) ctlr.done("success") return if trg.id == (self.lang, TRG_FORM_CPLN, "identifiers"): # Return all known keywords and builtins. ctlr.set_cplns(self._get_all_known_identifiers(buf)) ctlr.done("success") return ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error")
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) extra = trg.extra if trg.id == (self.lang, TRG_FORM_CPLN, "args") or \ trg.id == (self.lang, TRG_FORM_CPLN, "variable-or-args") : completions = self._get_completions_args( buf.env, extra.get('funcname'), extra.get('firstarg'), extra.get('nargs'), extra.get('argnames'), extra.get("text")) elif trg.id == (self.lang, TRG_FORM_CPLN, "variable") or \ trg.id == (self.lang, TRG_FORM_CPLN, "sub-items") : completions = self._get_completions_default( extra.get('obj_name'), extra.get('cutoff'), buf.env) elif trg.id == (self.lang, TRG_FORM_CPLN, "path"): completions = self._get_completions_path(extra.get('text')) else: ctlr.error("Unknown trigger type: %r" % (trg, )) ctlr.done("error") return if completions is None: ctlr.done("not found") return result, cplns = completions if result == "error": ctlr.error("Nothing found" if completions is None else cplns) ctlr.done("error") return if result == "success": cplns = [x for x in cplns if len(x) == 2] cplns.sort(key = lambda x: x[1].lower() ) ctlr.set_cplns(cplns) ctlr.done(cplns) return
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) ctlr.start(buf, trg) if trg.type in ("object-members", "call-signature", "literal-members") or \ trg.form == TRG_FORM_DEFN: line = buf.accessor.line_from_pos(trg.pos) if trg.type == "literal-members": # We could leave this to citdl_expr_from_trg, but this is a # little bit faster, since we already know the citdl expr. citdl_expr = trg.extra.get("citdl_expr") else: try: citdl_expr = self.citdl_expr_from_trg(buf, trg) except CodeIntelError, ex: ctlr.error(str(ex)) ctlr.done("error") return evalr = PythonTreeEvaluator(ctlr, buf, trg, citdl_expr, line) buf.mgr.request_eval(evalr)
def async_eval_at_trg(self, buf, trg, ctlr): if _xpcom_: trg = UnwrapObject(trg) ctlr = UnwrapObject(ctlr) pos = trg.pos ctlr.start(buf, trg) extra = trg.extra if trg.id == (self.lang, TRG_FORM_CPLN, "args") or trg.id == (self.lang, TRG_FORM_CPLN, "variable-or-args"): completions = self._get_completions_args( extra.get("funcname"), extra.get("firstarg"), extra.get("nargs"), extra.get("argnames"), extra.get("text"), ) elif trg.id == (self.lang, TRG_FORM_CPLN, "variable") or trg.id == (self.lang, TRG_FORM_CPLN, "sub-items"): completions = self._get_completions_default(extra.get("obj_name"), extra.get("cutoff")) elif trg.id == (self.lang, TRG_FORM_CPLN, "path"): completions = self._get_completions_path(extra.get("text")) else: ctlr.error("Unknown trigger type: %r" % (trg,)) ctlr.done("error") return if completions is None: ctlr.done("not found") return if completions[0] == "error": ctlr.error("Nothing found" if completions is None else completions[1]) ctlr.done("error") return if completions[0] == "success": completions[1].sort(key=lambda x: x[1].lower()) ctlr.set_cplns(completions[1]) ctlr.done(completions[0]) return