2016-07-15 5 views
0

プロンプトを毎回ページの下部に表示します。JLine 3 - プロンプトを常に下に維持する

私はそれのGIF持っている:

@Override 
public void run() 
{ 
    while (((ElytraServer) ElytraAPI.getServer()).isRunning()) 
    { 
     String cmd; 
     ((ElytraServer) ElytraAPI.getServer()).getReader().getTerminal().writer().flush(); 
     cmd = ((ElytraServer) ElytraAPI.getServer()).getReader().readLine("> "); 
     if (!cmd.isEmpty()) 
     { 
      String[] aCMD = cmd.split(" "); 
      String[] arguments = Arrays.copyOfRange(aCMD, 1, aCMD.length); 
      ElytraAPI.getCommandRegistry().dispatch(ElytraAPI.getConsole(), aCMD[0], arguments); 
     } 
    } 
} 

それがスレッドにあります:The prompt not displaying properly

コードを読み取りラインのためということです。

、別のスレッドがあります:JLine 2、コード付き が下部にプロンプ​​トを保つ完全なソースについては

public void run() 
{ 
    while (((ElytraServer) ElytraAPI.getServer()).isRunning()) 
    { 
     try 
     { 
      if (useJline) 
      { 
       /* 
       JLine 2/Old: 
       reader.print(Ansi.ansi().eraseLine(Erase.ALL).toString() + '\n'); 
       reader.flush(); 
       */ 
       reader.getBuffer().down(); 
       reader.getTerminal().flush(); 
       output.write("".getBytes()); 
       output.flush(); 

       /* // For JLine2 
       try 
       { 
        reader.drawLine(); 
       } 
       catch (Throwable throwable) 
       { 
        reader.getCursorBuffer().clear(); 
       }*/ 

       reader.getTerminal().flush(); 
      } 
      else 
      { 
       output.write("".getBytes()); 
       output.flush(); 
      } 
     } 
     catch (IOException ioexception) 
     { 
      Logger.getLogger(TerminalConsoleWriterThread.class.getName()).log(Level.SEVERE, null, ioexception); 
     } 
    } 
} 

(しかし、それはbugguedたが!): Full source of the program

答えて

1

I posted a workaround現在のコード(ユーザーが複数行の入力を使用しない限り機能します)を使用します。

reader.getTerminal().puts(Capability.carriage_return); 
reader.getTerminal().writer().println("World!"); 
reader.callWidget(LineReader.REDRAW_LINE); 
reader.callWidget(LineReader.REDISPLAY); 
reader.getTerminal().writer().flush(); 

次のjlineバージョン(3.2)には、より良い修正が含まれています。参照:https://github.com/jline/jline3/issues/75