Exemple #1
0
    def get_completions(self):
        index = self.model.index("insert")

        script = Script(self.model.get_text(), line=index.line, column=index.col, path=self.model.document.get_path())
        create_completion = lambda j, t="": JediCompletion(j,t, line=index.line, column=index.col)
        try:
            call_signatures = script.call_signatures()
        except SyntaxError:
            return ("", [])
        if not call_signatures:
            char  = self.model.get("insert - 1c")
            if not char or not char in set(session.config.get('wchars')+"."):
                return ("", [])

            completions = sorted(script.completions(), key=comparator_key)
            return ("", (create_completion(completion) for completion in completions))
        else:
            call_signature = "%(name)s(%(args)s)"% {
               'name' : call_signatures[0].name,
               'args' : ",".join(p.name for p in call_signatures[0].params)
            }
            if call_signatures[0].index is None:
                return (call_signature, [])
            char  = self.model.get("insert - 1c")
            if not char or not char in set(session.config.get('wchars')+"."):
                return (call_signature, [])

            param_def = call_signatures[0].params[call_signatures[0].index]
            completions = sorted(script.completions(), key=comparator_key)
            return (call_signature, (create_completion(completion) for completion in completions))