コード例 #1
0
	def ShowLineNo( self, filename, lineno ):
		wasOpen = editor.editorTemplate.FindOpenDocument(filename) is not None
		if os.path.isfile(filename) and scriptutils.JumpToDocument(filename, lineno):
			if not wasOpen:
				doc = editor.editorTemplate.FindOpenDocument(filename)
				if doc is not None:
					self.UpdateDocumentLineStates(doc)
					return 1
				return 0
			return 1
		else:
			# Can't find the source file - linecache may have it?
			import linecache
			line = linecache.getline(filename, lineno)
			print "%s(%d): %s" % (os.path.basename(filename), lineno, line[:-1].expandtabs(4))
			return 0
コード例 #2
0
def _FindIt(control, searchParams):
    global lastSearch, defaultSearch
    control = _GetControl(control)
    if control is None: return FOUND_NOTHING

    # Move to the next char, so we find the next one.
    flags = 0
    if searchParams.matchWords: flags = flags | win32con.FR_WHOLEWORD
    if searchParams.matchCase: flags = flags | win32con.FR_MATCHCASE
    if searchParams.sel == (-1, -1):
        sel = control.GetSel()
        # If the position is the same as we found last time,
        # then we assume it is a "FindNext"
        if sel == lastSearch.sel:
            sel = sel[0] + 1, sel[0] + 1
    else:
        sel = searchParams.sel

    if sel[0] == sel[1]: sel = sel[0], control.GetTextLength()

    rc = FOUND_NOTHING
    # (Old edit control will fail here!)
    posFind, foundSel = control.FindText(flags, sel, searchParams.findText)
    lastSearch = SearchParams(searchParams)
    if posFind >= 0:
        rc = FOUND_NORMAL
        lineno = control.LineFromChar(posFind)
        control.SCIEnsureVisible(lineno)
        control.SetSel(foundSel)
        control.SetFocus()
        win32ui.SetStatusText(win32ui.LoadString(afxres.AFX_IDS_IDLEMESSAGE))
    if rc == FOUND_NOTHING and lastSearch.acrossFiles:
        # Loop around all documents.  First find this document.
        try:
            try:
                doc = control.GetDocument()
            except AttributeError:
                try:
                    doc = control.GetParent().GetDocument()
                except AttributeError:
                    print "Cant find a document for the control!"
                    doc = None
            if doc is not None:
                template = doc.GetDocTemplate()
                alldocs = template.GetDocumentList()
                mypos = lookpos = alldocs.index(doc)
                while 1:
                    lookpos = (lookpos + 1) % len(alldocs)
                    if lookpos == mypos:
                        break
                    view = alldocs[lookpos].GetFirstView()
                    posFind, foundSel = view.FindText(
                        flags, (0, view.GetTextLength()),
                        searchParams.findText)
                    if posFind >= 0:
                        nChars = foundSel[1] - foundSel[0]
                        lineNo = view.LineFromChar(posFind)  # zero based.
                        lineStart = view.LineIndex(lineNo)
                        colNo = posFind - lineStart  # zero based.
                        scriptutils.JumpToDocument(
                            alldocs[lookpos].GetPathName(), lineNo + 1,
                            colNo + 1, nChars)
                        rc = FOUND_NEXT_FILE
                        break
        except win32ui.error:
            pass
    if rc == FOUND_NOTHING:
        # Loop around this control - attempt to find from the start of the control.
        posFind, foundSel = control.FindText(flags, (0, sel[0] - 1),
                                             searchParams.findText)
        if posFind >= 0:
            control.SCIEnsureVisible(control.LineFromChar(foundSel[0]))
            control.SetSel(foundSel)
            control.SetFocus()
            win32ui.SetStatusText(
                "Not found! Searching from the top of the file.")
            rc = FOUND_LOOPED_BACK
        else:
            lastSearch.sel = -1, -1
            win32ui.SetStatusText("Can not find '%s'" % searchParams.findText)

    if rc != FOUND_NOTHING:
        lastSearch.sel = foundSel

    if lastSearch.remember:
        defaultSearch = lastSearch
    return rc