lint
authorKevin Lamonte <kevin.lamonte@gmail.com>
Sun, 10 Nov 2019 23:10:54 +0000 (17:10 -0600)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Sun, 10 Nov 2019 23:10:54 +0000 (17:10 -0600)
build.xml
src/jexer/TTerminalWidget.java
src/jexer/TTerminalWindow.java
src/jexer/bits/Cell.java
src/jexer/teditor/Highlighter.java
src/jexer/tterminal/ECMA48.java
src/jexer/tterminal/Sixel.java

index 327793a444029c2b134d517ba66ffe0c667eb394..2e8616763e2e63430d04fee3eb5353867d3fccf5 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -52,6 +52,8 @@
            target="1.6"
            source="1.6"
            >
+      <compilerarg value="-Xlint"/>
+      <compilerarg value="-Xdiags:verbose"/>
       <compilerarg value="-Xlint:deprecation" />
     </javac>
   </target>
index acd1cc2761b94acec9a31b62e054ac0931990e9f..f488320c463ba9e30be64a8c77864762a5418f83 100644 (file)
@@ -999,6 +999,19 @@ public class TTerminalWidget extends TScrollableWidget
         } // synchronized (emulator)
     }
 
+    /**
+     * Wait for a period of time to get output from the launched process.
+     *
+     * @param millis millis to wait for, or 0 to wait forever
+     * @return true if the launched process has emitted something
+     */
+    public boolean waitForOutput(final int millis) {
+        if (emulator == null) {
+            return false;
+        }
+        return emulator.waitForOutput(millis);
+    }
+
     /**
      * Check if a mouse press/release/motion event coordinate is over the
      * emulator.
index e96c50c9921d99603da342e80802c27d0da02e86..bb3e14a9722c909c8af2c3fc21d6bac1a018cab6 100644 (file)
@@ -166,7 +166,7 @@ public class TTerminalWindow extends TScrollableWindow {
         newStatusBar(i18n.getString("statusBarRunning"));
 
         // Spin it up
-        terminal = new TTerminalWidget(this, 0, 0, new TAction() {
+        terminal = new TTerminalWidget(this, 0, 0, command, new TAction() {
             public void DO() {
                 onShellExit();
             }
@@ -452,4 +452,17 @@ public class TTerminalWindow extends TScrollableWindow {
         getApplication().postEvent(new TMenuEvent(TMenu.MID_REPAINT));
     }
 
+    /**
+     * Wait for a period of time to get output from the launched process.
+     *
+     * @param millis millis to wait for, or 0 to wait forever
+     * @return true if the launched process has emitted something
+     */
+    public boolean waitForOutput(final int millis) {
+        if (terminal == null) {
+            return false;
+        }
+        return terminal.waitForOutput(millis);
+    }
+
 }
index a8efa2b3c56465dc7ee93dc76fefa399bed85603..ed3c202a005a8c8a2a4187d08478cf8d62a6191c 100644 (file)
@@ -419,7 +419,7 @@ public final class Cell extends CellAttributes {
         int B = 23;
         int hash = A;
         hash = (B * hash) + super.hashCode();
-        hash = (B * hash) + (int)ch;
+        hash = (B * hash) + ch;
         hash = (B * hash) + width.hashCode();
         if (image != null) {
             /*
index a48419455e541697e12da7dfd81ebb8db52d7e9e..44a2ed08c705a43584aaea1c0e22bd1ab1ff85c7 100644 (file)
@@ -87,7 +87,7 @@ public class Highlighter {
      * @return color associated with name, e.g. bold yellow on blue
      */
     public CellAttributes getColor(final String name) {
-        CellAttributes attr = (CellAttributes) colors.get(name);
+        CellAttributes attr = colors.get(name);
         return attr;
     }
 
index 369eca93005702b700d1ebc2c48ca4a77afa713e..c6aa0b21e7f981ac5a66d7f65fa49ac7aec2e9f8 100644 (file)
@@ -506,6 +506,11 @@ public class ECMA48 implements Runnable {
      */
     private ArrayList<TInputEvent> userQueue = new ArrayList<TInputEvent>();
 
+    /**
+     * Number of bytes/characters passed to consume().
+     */
+    private long readCount = 0;
+
     /**
      * DECSC/DECRC save/restore a subset of the total state.  This class
      * encapsulates those specific flags/modes.
@@ -854,6 +859,34 @@ public class ECMA48 implements Runnable {
     // ECMA48 -----------------------------------------------------------------
     // ------------------------------------------------------------------------
 
+    /**
+     * Wait for a period of time to get output from the launched process.
+     *
+     * @param millis millis to wait for, or 0 to wait forever
+     * @return true if the launched process has emitted something
+     */
+    public boolean waitForOutput(final int millis) {
+        if (millis < 0) {
+            throw new IllegalArgumentException("timeout must be >= 0");
+        }
+        int waitedMillis = millis;
+        final int pollTimeout = 5;
+        while (true) {
+            if (readCount != 0) {
+                return true;
+            }
+            if ((millis > 0) && (waitedMillis < 0)){
+                return false;
+            }
+            try {
+                Thread.sleep(pollTimeout);
+            } catch (InterruptedException e) {
+                // SQUASH
+            }
+            waitedMillis -= pollTimeout;
+        }
+    }
+
     /**
      * Process keyboard and mouse events from the user.
      *
@@ -4971,6 +5004,7 @@ public class ECMA48 implements Runnable {
      * @param ch character from the remote side
      */
     private void consume(final int ch) {
+        readCount++;
 
         // DEBUG
         // System.err.printf("%c STATE = %s\n", ch, scanState);
index a4c00fc67f1da1ca38847b9bb5dad63daac5e006..5768a0f0ed0cbeb4fc3d040e6645aeebe3ae666d 100644 (file)
@@ -574,10 +574,10 @@ public class Sixel {
         case REPEAT:
             if ((ch >= '0') && (ch <= '9')) {
                 if (repeatCount == -1) {
-                    repeatCount = (int) (ch - '0');
+                    repeatCount = (ch - '0');
                 } else {
                     repeatCount *= 10;
-                    repeatCount += (int) (ch - '0');
+                    repeatCount += (ch - '0');
                 }
             }
             return;