'Find a definition location using Jedi
Follows gotos until a definition is found, or it reaches a builtin
module.  Falls back on token lookup if it is in an enaml file or does
not find a match'

def get_definition(self, info):

    (line, filename) = (info['line_num'], info['filename'])
    (def_info, module_path, line_nr) = (None, None, None)
    gotos = self.get_jedi_object('goto_assignments', info)
    if gotos:
        def_info = self.get_definition_info(gotos[0])
    if (def_info and def_info['goto_next']):
        defns = self.get_jedi_object('goto_definitions', info)
        if defns:
            new_info = self.get_definition_info(defns[0])
        if (not new_info['in_builtin']):
            def_info = new_info
    elif (not def_info):
        return
    if (def_info and def_info['in_builtin']):
        (module_path, line_nr) = self.find_in_builtin(def_info)
    elif def_info:
        module_path = def_info['module_path']
        line_nr = def_info['line_nr']
    if ((module_path == filename) and (line_nr == line)):
        return
    return (module_path, line_nr)
