Beispiel #1
0
    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")
Beispiel #3
0
    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")
Beispiel #4
0
    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")
Beispiel #5
0
 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)
Beispiel #6
0
    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")
Beispiel #8
0
    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")
Beispiel #10
0
    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
Beispiel #11
0
 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)
Beispiel #12
0
    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