Difference between revisions of "Bash completion"
		
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
		
		
		
		
		
	
|  (lttoolbox-java) |  (Replaced content with 'If you want "intelligent" bash completion on TAB for apertium, lttoolbox, vislcg3, hfst, see https://github.com/unhammer/apertium-completion') | ||
| Line 1: | Line 1: | ||
| If you want "intelligent" bash completion on TAB for apertium, lttoolbox, vislcg3, hfst, see https://github.com/unhammer/apertium-completion | |||
| I sent these in to the bash_completion people but it probably takes a while to get through. I haven't added for all the apertium-* programs. Put the files in /etc/bash_completion.d/ or wherever (see http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_1 ). Probably it'd be simpler to use [http://limpet.net/mbrubeck/2009/10/30/compleat.html compleat] instead. | |||
| <pre> | |||
| # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- | |||
| # ex: ts=8 sw=8 noet filetype=sh | |||
| # | |||
| # lttoolbox and lttoolbox-java completion  | |||
| # by Kevin Brubeck Unhammer <unhammer@gmail.com> | |||
| # Licence: GNU GPL v2 | |||
| _ltproc()  | |||
| { | |||
| 	local cur | |||
| 	COMPREPLY=() | |||
| 	cur=`_get_cword` | |||
| 	case "$cur" in | |||
| 	    -*) | |||
| 		COMPREPLY=( $( compgen -W '-a -c -g -n -d -p -s -t -z -w \ | |||
| 		-v -h --analysis --case-sensitive --generation --non-marked-gen \ | |||
| 		--debugged-gen --post-generation --sao --transliteration \ | |||
| 		--null-flush --dictionary-case --version --help' -- $cur ) ) | |||
| 		;; | |||
| 	    *) | |||
| 		_filedir bin | |||
| 		;; | |||
| 	esac | |||
| 	return 0 | |||
| } | |||
| complete -F _ltproc $filenames lt-proc | |||
| complete -F _ltproc $filenames lt-proc-j | |||
| _ltcomp()  | |||
| { | |||
| 	local cur | |||
| 	COMPREPLY=() | |||
| 	cur=`_get_cword` | |||
| 	case "$cur" in | |||
| 	    *) | |||
| 		if [ $COMP_CWORD -eq 1 ]; then | |||
| 			COMPREPLY=( $( compgen -W 'lr rl' -- $cur ) ) | |||
| 		elif [ $COMP_CWORD -eq 2 ]; then | |||
| 			_filedir '@(xml|dix)' | |||
| 		elif [ $COMP_CWORD -eq 3 ]; then | |||
| 		# of course, we _could_ only remove automorf.bin or | |||
| 		# autogen.bin depending on lr and rl, or even find | |||
| 		# nn-nb/nb-nn directions from that... but who calls | |||
| 		# lt-comp manually anyway? | |||
| 		    _filedir bin | |||
| 		fi | |||
| 		# no reason to offer more arguments than this, right?  | |||
| 		;; | |||
| 	esac | |||
| 	return 0 | |||
| } | |||
| complete -F _ltcomp $filenames lt-comp | |||
| complete -F _ltcomp $filenames lt-comp-j | |||
| _ltexpand()  | |||
| { | |||
| 	local cur | |||
| 	COMPREPLY=() | |||
| 	cur=`_get_cword` | |||
| 	case "$cur" in | |||
| 	    *) | |||
| 		if [ $COMP_CWORD -eq 1 ]; then | |||
| 			_filedir '@(xml|dix)' | |||
| 		elif [ $COMP_CWORD -eq 2 ]; then | |||
| 		    _filedir bin | |||
| 		fi | |||
| 		# no reason to offer more arguments than this, right?  | |||
| 		;; | |||
| 	esac | |||
| 	return 0 | |||
| } | |||
| complete -F _ltexpand $filenames lt-expand | |||
| complete -F _ltexpand $filenames lt-expand-j | |||
| </pre> | |||
| <pre> | |||
| # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- | |||
| # ex: ts=8 sw=8 noet filetype=sh | |||
| # | |||
| # apertium completion by Kevin Brubeck Unhammer <unhammer@gmail.com> | |||
| # Licence: GNU GPL v2 | |||
| _apertium()  | |||
| { | |||
| 	local cur prev | |||
| 	COMPREPLY=() | |||
| 	cur=`_get_cword` | |||
| 	prev=${COMP_WORDS[COMP_CWORD-1]} | |||
| 	case "$prev" in | |||
| 	    -d) | |||
| 		_filedir -d | |||
| 		;; | |||
| 	    -m) | |||
| 		_filedir tmx | |||
| 		;; | |||
| 	    -f) | |||
| 		COMPREPLY=( $( compgen -W 'txt html rtf odt docx wxml \ | |||
| 		xlsx pptx xpresstag wikimedia' -- $cur ) ) | |||
| 		;; | |||
| 	    -o) | |||
| 		COMPREPLY=( $( compgen -W "$(eval apertium -l)" -- $cur ) ) | |||
| 		;; | |||
| 	    *) | |||
| 		case "$cur" in | |||
| 		    -*) | |||
| 			COMPREPLY=( $( compgen -W '-d -f -a -u -m -o -l' -- $cur ) ) | |||
| 			;; | |||
| 		    *) | |||
| 		        local dirs=$(eval apertium -l) | |||
| 		        local dirpat=$( echo $dirs | sed 's/ /|/g' ) | |||
| 			local langset=0 | |||
| 			# look through previous words and see if we've | |||
| 			# set the language already | |||
| 			for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |||
| 			do | |||
| 				if [[ "${COMP_WORDS[i]}" == @($dirpat) ]]; then | |||
| 					# ignore -o-prefixed language code | |||
| 					if [[ "${COMP_WORDS[i-1]}" != "-o" ]]; then | |||
| 						langset=1 | |||
| 					fi | |||
| 				fi | |||
| 			done | |||
| 			if [ $langset -eq 1 ]; then | |||
| 				_filedir | |||
| 			else | |||
| 				COMPREPLY=( $( compgen -W "$dirs" -- $cur ) ) | |||
| 			fi | |||
| 			;; | |||
| 			# direction should only happen once! | |||
| 		esac | |||
| 	esac | |||
| 	return 0 | |||
| } | |||
| complete -F _apertium $filenames apertium | |||
| </pre> | |||
Revision as of 12:54, 11 July 2013
If you want "intelligent" bash completion on TAB for apertium, lttoolbox, vislcg3, hfst, see https://github.com/unhammer/apertium-completion

