def test_find_occurrences_and_class_hierarchies(self): mod1 = testutils.create_module(self.project, 'mod1') mod1.write('class A(object):\n def f():\n pass\n' 'class B(A):\n def f():\n pass\n') offset = mod1.read().rindex('f') result1 = find_occurrences(self.project, mod1, offset) result2 = find_occurrences(self.project, mod1, offset, in_hierarchy=True) self.assertEquals(1, len(result1)) self.assertEquals(2, len(result2))
def test_find_occurrences_and_class_hierarchies(self): mod1 = testutils.create_module(self.project, 'mod1') mod1.write('class A(object):\n def f():\n pass\n' 'class B(A):\n def f():\n pass\n') offset = mod1.read().rindex('f') result1 = find_occurrences(self.project, mod1, offset) result2 = find_occurrences(self.project, mod1, offset, in_hierarchy=True) self.assertEquals(1, len(result1)) self.assertEquals(2, len(result2))
def test_finding_occurrences_matching_when_unsure(self): mod1 = testutils.create_module(self.project, 'mod1') mod1.write('class C(object):\n def a_func(self):\n pass\n' 'def f(arg):\n arg.a_func()\n') result = find_occurrences( self.project, mod1, mod1.read().index('a_func'), unsure=True) self.assertEquals(2, len(result))
def test_finding_occurrences_matching_when_unsure(self): mod1 = testutils.create_module(self.project, 'mod1') mod1.write('class C(object):\n def a_func(self):\n pass\n' 'def f(arg):\n arg.a_func()\n') result = find_occurrences( self.project, mod1, mod1.read().index('a_func'), unsure=True) self.assertEquals(2, len(result))
def run(self): self.error = None self.foundList = [] try: resource = self.ropeProject.get_file(self.path) result = find_occurrences(self.ropeProject, resource, self.offset) self.itemsDict = {} if len(result) == 0: self.error = "No usages found." else: for i in result: line = i.lineno path = i.resource.path if path in self.itemsDict: self.itemsDict[path].append(line) else: self.itemsDict[path] = [line] except Exception as err: exc_type, exc_value, exc_traceback = sys.exc_info() logging.error( repr( traceback.format_exception(exc_type, exc_value, exc_traceback))) self.error = str(err)
def test_finding_occurrences(self): mod = testutils.create_module(self.project, 'mod') mod.write('a_var = 1\n') result = find_occurrences(self.project, mod, 1) self.assertEquals(mod, result[0].resource) self.assertEquals(0, result[0].offset) self.assertEquals(False, result[0].unsure)
def test_finding_occurrences(self): mod = testutils.create_module(self.project, "mod") mod.write("a_var = 1\n") result = find_occurrences(self.project, mod, 1) self.assertEqual(mod, result[0].resource) self.assertEqual(0, result[0].offset) self.assertEqual(False, result[0].unsure)
def test_find_occurrences_resources_parameter(self): mod1 = testutils.create_module(self.project, 'mod1') mod2 = testutils.create_module(self.project, 'mod2') mod1.write('a_var = 1\n') mod2.write('import mod1\nmy_var = mod1.a_var') result = find_occurrences(self.project, mod1, 1, resources=[mod1]) self.assertEquals(1, len(result)) self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
def test_find_occurrences_and_class_hierarchies(self): mod1 = testutils.create_module(self.project, "mod1") mod1.write( dedent("""\ class A(object): def f(): pass class B(A): def f(): pass """) ) offset = mod1.read().rindex("f") result1 = find_occurrences(self.project, mod1, offset) result2 = find_occurrences(self.project, mod1, offset, in_hierarchy=True) self.assertEqual(1, len(result1)) self.assertEqual(2, len(result2))
def test_find_occurrences_resources_parameter(self): mod1 = testutils.create_module(self.project, 'mod1') mod2 = testutils.create_module(self.project, 'mod2') mod1.write('a_var = 1\n') mod2.write('import mod1\nmy_var = mod1.a_var') result = find_occurrences(self.project, mod1, 1, resources=[mod1]) self.assertEquals(1, len(result)) self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
def test_finding_occurrences_in_more_than_one_module(self): mod1 = testutils.create_module(self.project, 'mod1') mod2 = testutils.create_module(self.project, 'mod2') mod1.write('a_var = 1\n') mod2.write('import mod1\nmy_var = mod1.a_var') result = find_occurrences(self.project, mod1, 1) self.assertEquals(2, len(result)) modules = (result[0].resource, result[1].resource) self.assertTrue(mod1 in modules and mod2 in modules)
def test_finding_occurrences_in_more_than_one_module(self): mod1 = testutils.create_module(self.project, 'mod1') mod2 = testutils.create_module(self.project, 'mod2') mod1.write('a_var = 1\n') mod2.write('import mod1\nmy_var = mod1.a_var') result = find_occurrences(self.project, mod1, 1) self.assertEquals(2, len(result)) modules = (result[0].resource, result[1].resource) self.assertTrue(mod1 in modules and mod2 in modules)
def test_find_occurrences_resources_parameter(self): mod1 = testutils.create_module(self.project, "mod1") mod2 = testutils.create_module(self.project, "mod2") mod1.write("a_var = 1\n") mod2.write( dedent("""\ import mod1 my_var = mod1.a_var""" ) ) result = find_occurrences(self.project, mod1, 1, resources=[mod1]) self.assertEqual(1, len(result)) self.assertEqual((mod1, 0), (result[0].resource, result[0].offset))
def getOccurencesForFilePosition(fileName, position, throwException): " Provides a list of the token at position occurences " result = [] try: GlobalData().validateRopeProject() ropeProject = GlobalData().getRopeProject(fileName) resource = path_to_resource(ropeProject, fileName) result = find_occurrences(ropeProject, resource, position, True) except: if throwException: raise return _buildOccurrencesImplementationsResult(result)
def getOccurencesForFilePosition( fileName, position, throwException ): " Provides a list of the token at position occurences " result = [] try: GlobalData().validateRopeProject() ropeProject = GlobalData().getRopeProject( fileName ) resource = path_to_resource( ropeProject, fileName ) result = find_occurrences( ropeProject, resource, position, True ) except: if throwException: raise return _buildOccurrencesImplementationsResult( result )
def test_finding_occurrences_in_more_than_one_module(self): mod1 = testutils.create_module(self.project, "mod1") mod2 = testutils.create_module(self.project, "mod2") mod1.write("a_var = 1\n") mod2.write( dedent("""\ import mod1 my_var = mod1.a_var""" ) ) result = find_occurrences(self.project, mod1, 1) self.assertEqual(2, len(result)) modules = (result[0].resource, result[1].resource) self.assertTrue(mod1 in modules and mod2 in modules)
def test_finding_occurrences_matching_when_unsure(self): mod1 = testutils.create_module(self.project, "mod1") mod1.write( dedent("""\ class C(object): def a_func(self): pass def f(arg): arg.a_func() """) ) result = find_occurrences( self.project, mod1, mod1.read().index("a_func"), unsure=True ) self.assertEqual(2, len(result))
def find_it(): """ Find occurrences. """ with RopeContext() as ctx: _, offset = get_assist_params() try: occurrences = findit.find_occurrences( ctx.project, ctx.resource, offset) except exceptions.BadIdentifierError: occurrences = [] lst = [] for oc in occurrences: lst.append(dict( filename=oc.resource.path, lnum=oc.lineno, )) vim.command('let l:output = %s' % json.dumps(lst))
def find_it(): """ Find occurrences. """ with RopeContext() as ctx: _, offset = env.get_offset_params() try: occurrences = findit.find_occurrences( ctx.project, ctx.resource, offset) except exceptions.BadIdentifierError: occurrences = [] lst = [] for oc in occurrences: lst.append(dict( filename=oc.resource.path, text=env.lines[oc.lineno - 1] if oc.resource.real_path == env.curbuf.name else "", # noqa lnum=oc.lineno, )) env.let('loclist._loclist', lst)
def run(self): self.error = None self.foundList = [] try: resource = self.ropeProject.get_file(self.path) result = find_occurrences(self.ropeProject, resource, self.offset) self.itemsDict = {} if len(result) == 0: self.error = "No usages found." else: for i in result: line = i.lineno path = i.resource.path if path in self.itemsDict: self.itemsDict[path].append(line) else: self.itemsDict[path] = [line] except Exception as err: self.error = str(err)
def find_it(): """ Find occurrences. """ with RopeContext() as ctx: _, offset = env.get_offset_params() try: occurrences = findit.find_occurrences( ctx.project, ctx.resource, offset) except exceptions.BadIdentifierError: occurrences = [] lst = [] for oc in occurrences: lst.append(dict( filename=oc.resource.path, text=env.lines[oc.lineno - 1] if oc.resource.real_path == env.curbuf.name else "", # noqa lnum=oc.lineno, type='' )) env.run('g:PymodeLocList.current().extend', lst)
def run(self): self.error = None self.foundList = [] try: resource = self.ropeProject.get_file(self.path) result = find_occurrences(self.ropeProject, resource, self.offset) self.itemsDict = {} if len(result) == 0: self.error = "No usages found." else: for i in result: line = i.lineno path = i.resource.path if path in self.itemsDict: self.itemsDict[path].append(line) else: self.itemsDict[path] = [line] except Exception as err: self.error = str(err)
def getOccurencesForEditor(fileName, editor, throwException): " Provides a list of the current token occurences " temporaryName = "" result = [] nameToSearch = "" try: temporaryName = _switchFileAndBuffer(fileName, editor) GlobalData().validateRopeProject() ropeProject = GlobalData().getRopeProject(fileName) position = editor.currentPosition() resource = path_to_resource(ropeProject, fileName) nameToSearch = worder.get_name_at(resource, position) result = find_occurrences(ropeProject, resource, position, True) except: if throwException: raise _restoreOriginalFile(fileName, temporaryName, editor) return nameToSearch, _buildOccurrencesImplementationsResult(result)
def getOccurencesForEditor( fileName, editor, throwException ): " Provides a list of the current token occurences " temporaryName = "" result = [] nameToSearch = "" try: temporaryName = _switchFileAndBuffer( fileName, editor ) GlobalData().validateRopeProject() ropeProject = GlobalData().getRopeProject( fileName ) position = editor.currentPosition() resource = path_to_resource( ropeProject, fileName ) nameToSearch = worder.get_name_at( resource, position ) result = find_occurrences( ropeProject, resource, position, True ) except: if throwException: raise _restoreOriginalFile( fileName, temporaryName, editor ) return nameToSearch, _buildOccurrencesImplementationsResult( result )
def run(self): self.error = None self.foundList = [] try: resource = self.ropeProject.get_file(self.path) result = find_occurrences(self.ropeProject, resource, self.offset) self.itemsDict = {} if len(result) == 0: self.error = "No usages found." else: for i in result: line = i.lineno path = i.resource.path if path in self.itemsDict: self.itemsDict[path].append(line) else: self.itemsDict[path] = [line] except Exception as err: exc_type, exc_value, exc_traceback = sys.exc_info() logging.error(repr(traceback.format_exception(exc_type, exc_value, exc_traceback))) self.error = str(err)
def find_usages(_, main_project, other_projects, file_path, offset): """ Find usages of symbol under cursor. """ try: occurrences = [] if other_projects: for path in [main_project] + other_projects: prj = Project(path, ropefolder=api.project.FOLDER, fscommands=FileSystemCommands()) prj.validate() mod = libutils.path_to_resource(prj, file_path) occurrences += find_occurrences( prj, mod, offset, unsure=False, in_hierarchy=True) prj.close() else: prj = Project(main_project, ropefolder=api.project.FOLDER, fscommands=FileSystemCommands()) prj.validate() mod = libutils.path_to_resource(prj, file_path) occurrences = find_occurrences(prj, mod, offset, unsure=False, in_hierarchy=True) # transform results to a serialisable list of usages that is ready # to use by the find_results widget. occurrences_map = {} for location in occurrences: path = location.resource.real_path lineno = location.lineno - 1 # convert file region to line region content = location.resource.read() offset = location.offset char = content[offset] while char != '\n': # find start of line offset -= 1 char = content[offset] # update offsets start = location.offset - offset - 1 end = location.region[1] - offset - 1 line_text = content.splitlines()[lineno] data = (lineno, line_text, [(start, end)]) if path not in occurrences_map: occurrences_map[path] = [data] else: occurrences_map[path].append(data) results = [] for key, value in occurrences_map.items(): results.append((key, value)) results = sorted(results, key=lambda x: x[0]) return results except RopeError as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = False return error except Exception as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = True return error
def find_usages(_, main_project, other_projects, file_path, offset): """ Find usages of symbol under cursor. """ try: occurrences = [] if other_projects: for path in [main_project] + other_projects: prj = Project(path, ropefolder=api.project.FOLDER, fscommands=FileSystemCommands()) prj.validate() mod = libutils.path_to_resource(prj, file_path) occurrences += find_occurrences(prj, mod, offset, unsure=False, in_hierarchy=True) prj.close() else: prj = Project(main_project, ropefolder=api.project.FOLDER, fscommands=FileSystemCommands()) prj.validate() mod = libutils.path_to_resource(prj, file_path) occurrences = find_occurrences(prj, mod, offset, unsure=False, in_hierarchy=True) # transform results to a serialisable list of usages that is ready # to use by the find_results widget. occurrences_map = {} for location in occurrences: path = location.resource.real_path lineno = location.lineno - 1 # convert file region to line region content = location.resource.read() offset = location.offset char = content[offset] while char != '\n': # find start of line offset -= 1 char = content[offset] # update offsets start = location.offset - offset - 1 end = location.region[1] - offset - 1 line_text = content.splitlines()[lineno] data = (lineno, line_text, [(start, end)]) if path not in occurrences_map: occurrences_map[path] = [data] else: occurrences_map[path].append(data) results = [] for key, value in occurrences_map.items(): results.append((key, value)) results = sorted(results, key=lambda x: x[0]) return results except RopeError as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = False return error except Exception as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = True return error