some code beautifying incl. waitForRx
[pygdb.git] / DbgTerminal.py
index e9a706fffcdb793ba81e7d3d027ef48d010d1c39..6fec9f3e789f40cff60e62de2561d271ca81164e 100644 (file)
@@ -26,7 +26,7 @@ class DbgTerminal (vte.Terminal):
 
                #Set members
                self.childpid = None
-               self.history = []
+               self.history = [""]
                self.isactive = True
 
                #Start debugger
@@ -58,20 +58,20 @@ class DbgTerminal (vte.Terminal):
 
 
        def contents_changed(self, term):
+               assert( self.getHistoryLen()>0 )
+
                c,r = term.get_cursor_position()
-               text = self.get_text_range(max(self.getHistoryLen()-1,0),0,r,-1,lambda *w:True)
+               text = self.get_text_range(self.getHistoryLen()-1,0,r,-1,lambda *w:True)
 
                #Remove annoying \n at the end
                assert(text[-1] == "\n")
                text = text[:-1]
 
-               #Remove the incomplete line
-               if self.getHistoryLen()>0 and self.history[-1]!='\n':
-                       del self.history[-1]
-
                #Get the lines and remove empty lines
                lines = string.split(text, "\n")
 
+               #Remove the incomplete line
+               del self.history[-1]
                #Add lines to history. The last line contains no "\n" at the end!
                self.history += [l+"\n" for l in lines[:-1]]
                self.history += [lines[-1]]
@@ -88,16 +88,16 @@ class DbgTerminal (vte.Terminal):
                return len(self.history)
 
        def waitForRx(self, rx, start): 
-
                curr = start
-
                while True:
-                       for no in range(max(curr-1,start), self.getHistoryLen()):
+                       assert( curr>=start )
+                       for no in range(curr, self.getHistoryLen()):
                                line = self.history[no]
                                if rx.search(line):
                                        return no, line
 
-                       curr = max(start,self.getHistoryLen())
+                       #Do not forget the last line
+                       curr = max(start,self.getHistoryLen()-1)
                        gtk.main_iteration()
 
 
@@ -150,7 +150,6 @@ def quitHandler(*w):
                gtk.main_quit()
        except:
                pass
-       sys.exit(0)