Do not complete hidden flags

Fixes #169.
diff --git a/completion.go b/completion.go
index 894f1d6..708fa9e 100644
--- a/completion.go
+++ b/completion.go
@@ -77,7 +77,7 @@
 	n := make([]Completion, 0, len(names))
 
 	for k, opt := range names {
-		if strings.HasPrefix(k, match) {
+		if strings.HasPrefix(k, match) && !opt.Hidden {
 			n = append(n, Completion{
 				Item:        prefix + k,
 				Description: opt.Description,
diff --git a/completion_test.go b/completion_test.go
index f440fd7..72ee158 100644
--- a/completion_test.go
+++ b/completion_test.go
@@ -40,6 +40,7 @@
 	Debug    bool `short:"d" long:"debug" description:"Enable debug"`
 	Version  bool `long:"version" description:"Show version"`
 	Required bool `long:"required" required:"true" description:"This is required"`
+	Hidden   bool `long:"hidden" hidden:"true" description:"This is hidden"`
 
 	AddCommand struct {
 		Positional struct {