Fixed tracking of last command when wrapped lines are present.
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/LastCommandTracker.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/LastCommandTracker.java
index f640fe0..c784365 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/LastCommandTracker.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/LastCommandTracker.java
@@ -20,7 +20,8 @@
  * @author alruiz@google.com (Alex Ruiz)
  */
 class LastCommandTracker extends KeyAdapter implements IStreamListener {
-  private static final String CRLF = "\r\n";
+  private static final String CR_LF_CR = "\r\n\r";
+  private static final String CR_LF = "\r\n";
   private static final Pattern WHITE_SPACE_PATTERN = Pattern.compile("[\\s]+");
 
   private final List<String> words = new ArrayList<String>();
@@ -42,10 +43,15 @@
       return;
     }
     String word = text;
-    int index = text.lastIndexOf(CRLF);
+    if (word.endsWith(CR_LF_CR)) {
+      // this happens before a line gets wrapped
+      word = word.substring(0, charCount - CR_LF_CR.length());
+    }
+    // this happens after a line gets wrapped
+    int index = word.lastIndexOf(CR_LF);
     if (index != -1) {
       words.clear();
-      word = text.substring(index + CRLF.length(), charCount);
+      word = word.substring(index + CR_LF.length(), charCount);
     }
     if (!word.isEmpty()) {
       words.add(word);
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
index 62ecdb6..14df3e5 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
@@ -40,7 +40,7 @@
 /**
  * @author alruiz@google.com (Alex Ruiz)
  */
-public class TerminalView extends ViewPart implements LifeCycleListener {
+public class TerminalView extends ViewPart {
   private static final String SCROLL_LOCK_ENABLED = "scrollLock";
   private static final String TITLE_STATE_TYPE = "title";
   private static final String WORKING_DIRECTORY_STATE_TYPE = "workingDirectory";
@@ -75,18 +75,6 @@
     }
   }
 
-  @Override public void executionFinished() {
-    if (closeViewOnExit() && terminalWidget != null && !terminalWidget.isDisposed()) {
-      // must run in UI thread.
-      terminalWidget.getDisplay().asyncExec(new Runnable() {
-        @Override public void run() {
-          IWorkbenchPartSite site = getSite();
-          site.getPage().hideView((IViewPart) site.getPart());
-        }
-      });
-    }
-  }
-
   @Override public void init(IViewSite site, IMemento memento) throws PartInitException {
     super.init(site, memento);
     savedState = memento;
@@ -105,13 +93,17 @@
 
   @Override public void createPartControl(Composite parent) {
     terminalWidget = new TerminalWidget(parent, SWT.NONE);
-    terminalWidget.setLifeCycleListener(this);
     terminalWidget.setCommandListener(new CommandListener() {
-      @Override public void commandIssued(final String command) {
+      @Override public void commandIssued(String command) {
         String title = String.format(VIEW_TITLE_FORMAT, workingDirectory.lastSegment(), command);
         updatePartName(title);
       }
     });
+    terminalWidget.setLifeCycleListener(new LifeCycleListener() {
+      @Override public void executionFinished() {
+        closeViewOnExitIfPossible();
+      }
+    });
     terminalWidget.setTerminalListener(new ITerminalListener() {
       @Override public void setTerminalTitle(final String title) {
         updatePartName(title);
@@ -162,6 +154,18 @@
     enableScrollLock(scrollLockAction.isChecked());
   }
 
+  private void closeViewOnExitIfPossible() {
+    if (closeViewOnExit() && terminalWidget != null && !terminalWidget.isDisposed()) {
+      // must run in UI thread.
+      terminalWidget.getDisplay().asyncExec(new Runnable() {
+        @Override public void run() {
+          IWorkbenchPartSite site = getSite();
+          site.getPage().hideView((IViewPart) site.getPart());
+        }
+      });
+    }
+  }
+
   private void updateColors() {
     terminalWidget.setColors(background(), foreground());
   }