Difference between revisions of "Bash completion"
Line 30: | Line 30: | ||
Now you can type "ca nno" to go to languages/apertium-nno and "ca kir kaz" to go to nursery/apertium-kaz-kir – even though you typed it in the other order. |
Now you can type "ca nno" to go to languages/apertium-nno and "ca kir kaz" to go to nursery/apertium-kaz-kir – even though you typed it in the other order. |
||
== I'm sicking of typing "cd ../../languages/apertium-lol; svn up; cd ../apertium-wat; svn up; cd ../../incubator/apertium-lol-wat" == |
|||
If you've got a language pair that depends on monolingual [[Languages|languages]]-modules, you can put the following function in your ~/.bashrc, open a new terminal and then just type "up" in the language pair to update the dependents as well: |
|||
<pre> |
|||
up () |
|||
{ |
|||
grep ^AP_SRC config.log 2> /dev/null | while IFS='=' read -r var dir; do |
|||
printf "%s\t" "${var}"; |
|||
( cd "${dir//\'}"; |
|||
up ); |
|||
done; |
|||
if svn info &> /dev/null; then |
|||
printf "%s\t%s\t" svn "$(pwd)"; |
|||
svn up; |
|||
else |
|||
if git config --get svn-remote.svn.fetch &> /dev/null; then |
|||
printf "%s\t%s\t" git-svn "$(pwd)"; |
|||
git svn rebase; |
|||
else |
|||
if git config --get core.bare &> /dev/null; then |
|||
printf "%s\t%s\t" git "$(pwd)"; |
|||
git pull; |
|||
else |
|||
echo "No repo found" 1>&2; |
|||
fi; |
|||
fi; |
|||
fi |
|||
} |
|||
</pre> |
|||
This script works even if you used git or git-svn for any of the dependents :-) |
|||
==External links== |
==External links== |
Revision as of 10:09, 15 July 2014
If you want “intelligent” bash completion on TAB for apertium, lttoolbox, vislcg3 and hfst, do e.g.:
$ git clone https://github.com/unhammer/apertium-completion.git ~/apertium-completion
and add this to your ~/.bashrc:
if ! shopt -oq posix && \ [[ ( -z "$INSIDE_EMACS" || "$EMACS_BASH_COMPLETE" = "t" ) ]]; then for f in ~/apertium-completion/completions/*; do [[ -f $f ]] && source "$f" done fi
Alternatively, if your OS sources files from e.g. /etc/bash_completion_d automatically, just sudo cp ~/apertium-completion/completions/* /etc/bash_completion_d/ (then you don’t have to add anything to ~/.bashrc).
Now open a new terminal and try typing apertium and press TAB twice, you should get a list of installed language pairs; apertium -d . and TAB twice should show you a list of the possible translation modes in this directory; etc.
Contents
apertium -d . takes too long to type
PROTIP: If you add
"\e\C-d": "apertium -d . \t\t"
to ~/.inputrc you can simply type "alt+ctrl+d" and your terminal will fill out "apertium -d . " and press TAB twice (showing the list of modes of your current directory).
I checked out all of SVN – how do I quickly cd to apertium-lol-wat?
Save https://gist.github.com/unhammer/f5ade1c20f0f5d653b8c to e.g. ~/src/apertium-ca.sh, then put "source ~/src/apertium-ca.sh" in ~/.bashrc
Now you can type "ca nno" to go to languages/apertium-nno and "ca kir kaz" to go to nursery/apertium-kaz-kir – even though you typed it in the other order.
I'm sicking of typing "cd ../../languages/apertium-lol; svn up; cd ../apertium-wat; svn up; cd ../../incubator/apertium-lol-wat"
If you've got a language pair that depends on monolingual languages-modules, you can put the following function in your ~/.bashrc, open a new terminal and then just type "up" in the language pair to update the dependents as well:
up () { grep ^AP_SRC config.log 2> /dev/null | while IFS='=' read -r var dir; do printf "%s\t" "${var}"; ( cd "${dir//\'}"; up ); done; if svn info &> /dev/null; then printf "%s\t%s\t" svn "$(pwd)"; svn up; else if git config --get svn-remote.svn.fetch &> /dev/null; then printf "%s\t%s\t" git-svn "$(pwd)"; git svn rebase; else if git config --get core.bare &> /dev/null; then printf "%s\t%s\t" git "$(pwd)"; git pull; else echo "No repo found" 1>&2; fi; fi; fi }
This script works even if you used git or git-svn for any of the dependents :-)