Skip to content
This repository has been archived by the owner on Nov 23, 2020. It is now read-only.

Latest commit

 

History

History
71 lines (48 loc) · 1.46 KB

README.md

File metadata and controls

71 lines (48 loc) · 1.46 KB

nashcomplete

The name says everything.

Installation

First clone the repository:

λ> mkdir -p $NASHPATH+"/lib"
λ> cd $NASHPATH+"/lib"
λ> git clone git@github.com:madlambda/nashcomplete.git

To setup the auto complete you only need to add an import line into your init script.

# ~/.nash/init

import nashcomplete/all

Done.

Adding your own completions

There's a way to add your own completion to some command: Nashcomplete looks for a list of completion callbacks, that you can extend with your own completions.

The example below adds a simple completion for docker subcommands.

# my completes
# ~/.nash/conf/complete

import "nashcomplete/all"

# The `parts` argument hold the line splited by space.
fn docker_complete(parts, line, pos) {
	var ret    = ()

	var partsz <= len($parts)

	if $partsz != "1" {
		# only autocomplete the subcommand
		return $ret
	}

	var choice, status <= (
		echo "attach build commit cp create diff events exec export history images import info inspect kill load login logout logs network node pause port ps pull push rename restart rm rmi run save search service start stats stop swarm tag top unpause update version volume wait" |
		tr " " "\n" |
		fzf --header "Docker subcommands: "
						--reverse
						 |
		tr -d "\n"
	)

	if $status != "0" {
		return $ret
	}

	ret = ($choice+" " "0")

	return $ret
}

dockercomplete = ("docker" $docker_complete)

NASHCOMPLETE_CMD <= append($NASHCOMPLETE_CMD, $dockercomplete)