Potrzebujesz pomocy z C, C++, perl, python, itp.
daro
Posty: 11 Rejestracja: 30 września 2007, 22:13
Lokalizacja: Miñsk Mazowiecki
Post
autor: daro » 16 maja 2009, 10:12
Może przedstawię jak działało uzupełnianie wcześniej:
Kod: Zaznacz cały
java p[tab]
java paczka.[tab]
java paczka.HelloWorld
Czyli bash uzupełniał mi ładnie i ułatwiał robienie czegokolwiek. Teraz jedyne co potrafi uzupełnić to polecenie java...
W ~/.bashrc jest
Kod: Zaznacz cały
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
a po wydaniu
Kod: Zaznacz cały
complete|grep java
complete -o filenames -F _java java
complete -o filenames -F _javac javac
complete -o filenames -F _javadoc javadoc
Więc z tego co rozumiem powinno działać, ale niestety tak nie jest...
Jeśli wybrałem zły dział przepraszam
xenix_org
Posty: 69 Rejestracja: 03 maja 2009, 12:25
Lokalizacja: Siedlce
Post
autor: xenix_org » 16 maja 2009, 10:36
Wydaj polecenie jako root i powinno być po temacie:
Za uzupełnianie odpowiada plik /etc/bash_completion
[ Dodano : 2009-05-16, 10:38 ]
na końcu pliku /home/uzytkownik/.bashrc można jeszcze dodać:
Kod: Zaznacz cały
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Sprawdź czy masz w /etc/bash_completion:
Kod: Zaznacz cały
# Java completion
#
# available path elements completion
have java && {
_java_path()
{
cur=${cur##*:}
_filedir '@(jar|zip)'
}
# exact classpath determination
_java_find_classpath()
{
local i
# search first in current options
for (( i=1; i < COMP_CWORD; i++ )); do
if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then
classpath=${COMP_WORDS[i+1]}
break
fi
done
# default to environment
[ -z "$classpath" ] && classpath=$CLASSPATH
# default to current directory
[ -z "$classpath" ] && classpath=.
}
# exact sourcepath determination
_java_find_sourcepath()
{
local i
# search first in current options
for (( i=1; i < COMP_CWORD; i++ )); do
if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then
sourcepath=${COMP_WORDS[i+1]}
break
fi
done
# default to classpath
[ -z "$sourcepath" ] && _java_find_classpath
sourcepath=$classpath
}
# available classes completion
_java_classes()
{
local classpath i
# find which classpath to use
_java_find_classpath
# convert package syntax to path syntax
cur=${cur//.//}
# parse each classpath element for classes
for i in ${classpath//:/ }; do
if [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then
if type zipinfo &> /dev/null; then
COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \
"$i" | grep "^$cur" | grep '\.class$' | \
grep -v "\\$" ) )
else
COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \
"$cur" | grep "\.class$" | grep -v "\\$" ) )
fi
elif [ -d $i ]; then
i=${i%/}
COMPREPLY=( "${COMPREPLY[@]}" $( find "$i" -type f \
-path "$i/$cur*.class" 2>/dev/null | \
grep -v "\\$" | sed -e "s|^$i/||" ) )
fi
done
# remove class extension
COMPREPLY=( ${COMPREPLY[@]%.class} )
# convert path syntax to package syntax
COMPREPLY=( ${COMPREPLY[@]//\//.} )
}
# available packages completion
_java_packages()
{
local sourcepath i
# find which sourcepath to use
_java_find_sourcepath
# convert package syntax to path syntax
cur=${cur//.//}
# parse each sourcepath element for packages
for i in ${sourcepath//:/ }; do
if [ -d $i ]; then
COMPREPLY=( "${COMPREPLY[@]}" $( command ls -F -d \
$i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) )
fi
done
# keep only packages
COMPREPLY=( $( echo "${COMPREPLY[@]}" | tr " " "\n" | grep "/$" ) )
# remove packages extension
COMPREPLY=( ${COMPREPLY[@]%/} )
# convert path syntax to package syntax
cur=${COMPREPLY[@]//\//.}
}
# java completion
#
_java()
{
local cur prev i
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
for ((i=1; i < $COMP_CWORD; i++)); do
case ${COMP_WORDS[$i]} in
-cp|-classpath)
((i++)) # skip the classpath string.
;;
-*)
# this is an option, not a class/jarfile name.
;;
*)
# once we've seen a class, just do filename completion
_filedir
return 0
;;
esac
done
case $prev in
-@(cp|classpath))
_java_path
return 0
;;
esac
if [[ "$cur" == -* ]]; then
# relevant options completion
COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \
-cp -classpath -D -verbose -verbose:class \
-verbose:gc -version:jni -version \
-showversion -? -help -X -jar \
-ea -enableassertions -da -disableassertions \
-esa -enablesystemassertions \
-dsa -disablesystemassertions ' -- $cur ) )
else
if [[ "$prev" == -jar ]]; then
# jar file completion
_filedir jar
else
# classes completion
_java_classes
fi
fi
}
complete -F _java $filenames java
}
# javadoc completion
#
have javadoc &&
_javadoc()
{
COMPREPLY=()
local cur prev
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case $prev in
-@(overview|helpfile|stylesheetfile))
_filedir
return 0
;;
-d)
_filedir -d
return 0
;;
-@(classpath|bootclasspath|docletpath|sourcepath|extdirs))
_java_path
return 0
;;
esac
if [[ "$cur" == -* ]]; then
# relevant options completion
COMPREPLY=( $( compgen -W '-overview -public -protected \
-package -private -help -doclet -docletpath \
-sourcepath -classpath -exclude -subpackages \
-breakiterator -bootclasspath -source -extdirs \
-verbose -locale -encoding -J -d -use -version \
-author -docfilessubdirs -splitindex \
-windowtitle -doctitle -header -footer -bottom \
-link -linkoffline -excludedocfilessubdir \
-group -nocomment -nodeprecated -noqualifier \
-nosince -nodeprecatedlist -notree -noindex \
-nohelp -nonavbar -quiet -serialwarn -tag \
-taglet -tagletpath -charset -helpfile \
-linksource -stylesheetfile -docencoding' -- \
$cur ) )
else
# source files completion
_filedir java
# packages completion
_java_packages
fi
} &&
complete -F _javadoc $filenames javadoc
daro
Posty: 11 Rejestracja: 30 września 2007, 22:13
Lokalizacja: Miñsk Mazowiecki
Post
autor: daro » 16 maja 2009, 12:57
xenix_org pisze: Wydaj polecenie jako root i powinno być po temacie:
Za uzupełnianie odpowiada plik /etc/bash_completion
Wydawanie tego jako root? Rootowi to nie potrzebne tylko mnie, ale nieważne bo już mam:
Kod: Zaznacz cały
if [ -f /etc/bash_completion ]]
A w /etc/bash_completion mam wszystko tak jak powinno być bo nie dotykałem się do tego pliku i zgadza się z tym co wkleiłeś.
xenix_org
Posty: 69 Rejestracja: 03 maja 2009, 12:25
Lokalizacja: Siedlce
Post
autor: xenix_org » 16 maja 2009, 16:03
T o zostaje tylko dodanie do bash_completion tego co Ci potrzeba.
daro
Posty: 11 Rejestracja: 30 września 2007, 22:13
Lokalizacja: Miñsk Mazowiecki
Post
autor: daro » 16 maja 2009, 16:28
xenix_org pisze: T o zostaje tylko dodanie do bash_completion tego co Ci potrzeba.
Jakbym wiedział co potrzebuję żeby mi działało to bym nie zakładał tematu.
W ~/.bashrc mam tak jak być powinno, w /etc/bash_completion też jest to co powinno być.