2017-01-24 16 views
2

javac 명령에 -cp-classpath이라는 이상한 탭 완성이 있습니다. 나는 -cp이라는 별칭으로 -classpath의 별칭이되었습니다. 그러나 -classpath 플래그 뒤에 탭을 누르면 예상대로 파일이 .jar이됩니다. 내가 -classpath로 탭을 누르면 내가 얻을 : 나는 우분투에서 떠들썩한 파티를 -cp이상한 javac 클래스 패스의 탭 완료

javac -cp <tab> 
javac -cp lib/ <tab> 
javac -cp lib/ 

javac -cp .: <tab> 
javac -cp .: 

javac -classpath <tab> 
javac -classpath lib/ <tab> 
javac -classpath lib/test.jar 

및 또는

javac -classpath .: <tab> 
javac -classpath .:lib/ <tab> 
javac -classpath .:lib/test.jar 

, 사용하고 있습니다 16. 04와 javac 1.8.0_111이 필요합니다.

답변

3

이 기능은 bash-completion 패키지로 구현됩니다. 그래서

case $prev in 
    ... 
    -classpath|-bootclasspath|-sourcepath|-extdirs) 
    ... 

당신이 원하는 경우에 당신은 _javac()의 전체 정의를 수행 할 수 있습니다

$ complete -p javac 
complete -F _javac javac # the function `_javac' is used to complete the command `javac' 
$ declare -f _javac .  # this will print the function code 

는 관련 코드는 것을 볼 수 있습니다 : 당신은 너무 같은 관련 기능에 대한 코드를 찾을 수 있습니다 declare -f 명령에서 case 문에 -cp을 포함하도록 수정하고 bash 초기화 파일 (.bashrc 또는 .bash_profile 등)의 에 추가하십시오. 그런 다음 새 셸을 시작하면 _javac()이 사용되어 javac 명령을 완료합니다.

또한 최신 릴리스 코드는 github에도 있습니다. 거기에 정의 된 다른 명령 완료 (java, javadoc)는 간략한 플래그를 이해하므로이 문제에 대한 수정 요청을 보내면 환영 할 것입니다.


업데이트 :이 이제 소스 fixed입니다.