2016-07-15 8 views
0

매번 페이지 하단에 프롬프트를 표시하고 싶습니다. The prompt not displaying properlyJLine 3 - 항상 아래쪽에 프롬프트를 유지하십시오.

코드 읽기 라인이다 :

@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); 
     } 
    } 
} 

그것은 스레드에서의

는 그의 GIF 있습니다.

그리고 다른 스레드가 : Full source of the program

답변

1

I posted a workaround : JLine 2와 은, 코드 (! 그러나이 buggued 된) 전체 소스에 대한

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); 
     } 
    } 
} 

하단에있는 프롬프트를 유지는 현재 코드 (사용자가 여러 줄 입력을 사용하지 않는 한 작동)

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