2011-10-20 19 views
18

Próbuję uruchomić IntelliJ na linii poleceń w Mac OS X, aby użyć jego narzędzia diff. Teoretycznie powinien działać idea.sh diff file1 file2. W praktyce są pewne problemy z plikiem, który myślę, że pracowałem (usunięcie niektórych argumentów do readlink itp.).
Jednak kiedy się uruchomi, chce, żebym podał informacje o licencji (mimo że instancja Intellij jest już uruchomiona, a licencja tam jest). Co prowadzi mnie do przekonania, że ​​istnieje jakiś rodzaj oddzielenia świata linii poleceń od świata poza linią poleceń na Mac OS X? Czy to prawda?
Również kiedy wybrać 30 dni eval przebiega dać mi następujący wyjątek:linia poleceń IntelliJ na Mac OS X

java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.getProviders must not be null 
    at com.intellij.openapi.fileEditor.impl.FileEditorProviderManagerImpl.getProviders(FileEditorProviderManagerImpl.java) 
    at com.intellij.openapi.diff.impl.highlighting.EditorPlaceHolder.setContent(EditorPlaceHolder.java:73) 
    at com.intellij.openapi.diff.impl.highlighting.DiffPanelState$1.run(DiffPanelState.java:38) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:864) 
... 

Odpowiedz

20

Spróbuj uruchomić /Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea zamiast. idea.sh nie jest przeznaczony dla komputerów Macintosh i nie będzie działać bez ręcznych zmian.

+0

Lepiej - żadne problemy licencyjne, ale wciąż daje mi ten sam błąd (w oknie dialogowym teraz): Błąd pokazując diff: Argument 0 dla parametru @NotNull COM/IntelliJ/OpenAPI/fileEditor/impl/FileEditorProviderManagerImpl.getProviders nie może mieć wartości null –

+0

ah, nieważne, plik musi mieć rozszerzenie! –

+0

więc to działa dla diff, ale chciałbym wywołać funkcję łączenia (być w stanie zapisać po rozwiązaniu konfliktów). Czy to jest wykonalne? –

6

Idea oczekuje, że ścieżki są w pełni kwalifikowane, dlatego napisałem mały skrypt pomocniczy. Powołać jak:

$ idiff foo.txt bar.txt 

Kod dla idiff:

#!/bin/bash 
idea='/Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea' 
left=`abspath $1` 
right=`abspath $2` 
"$idea" diff $left $right 

Jest prawdopodobnie prawdziwy abspath narzędzie gdzieś, ale mam prosty ręcznie zwijane jeden:

$ cat `which abspath` 
#!/bin/bash 
ORIG_DIR=`pwd` 
for fn in $* ; do 
    if [ -e $fn ]; then 
    d=`dirname $fn` 
    if [ -z $d ]; then 
     echo `pwd`/$fn 
    else 
     cd $d 
     echo `pwd`"/"`basename $fn` 
    fi 
    else 
    echo "Don't know how to process $fn" 1>&2 
    exit 1 
    fi 
    cd $ORIG_DIR 
done 
52

IntelliJ może zainstaluj dla ciebie program uruchamiający wiersz poleceń, a dodanie go do katalogu PATH spowoduje, że będzie to jak każde inne polecenie w systemie. Komendą jest "idea".

IntelliJ Command-line Launcher