Repository: rsteube/carapace
Pull request #797 (2023-07-05 20:53:10)

doc: updated default actions


Patch:
diff --git a/defaultActions.go b/defaultActions.go
index 1df7bcf..9657546 100644
--- a/defaultActions.go
+++ b/defaultActions.go
@@ -24,7 +24,7 @@ func ActionCallback(callback CompletionCallback) Action {
 	return Action{callback: callback}
 }
 
-// ActionExecCommand invokes given command and transforms its output using given function on success or returns ActionMessage with the first line of stderr if available.
+// ActionExecCommand executes an external command.
 //
 //	carapace.ActionExecCommand("git", "remote")(func(output []byte) carapace.Action {
 //	  lines := strings.Split(string(output), "\n")
@@ -389,7 +389,7 @@ func ActionStyles(styles ...string) Action {
 			style.Inverse, _s(style.Inverse),
 		))
 
-		return batch.ToA()
+		return batch.ToA().NoSpace('r')
 	}).Tag("styles")
 }
 
diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md
index f60bb9e..1274706 100644
--- a/docs/src/SUMMARY.md
+++ b/docs/src/SUMMARY.md
@@ -35,19 +35,23 @@
     - [ToA](./carapace/invokedAction/toA.md)
     - [ToMultiPartsA](./carapace/invokedAction/toMultiPartsA.md)
   - [DefaultActions](./carapace/defaultActions.md)
-    - [ActionValues](./carapace/defaultActions/actionValues.md)
-    - [ActionValuesDescribed](./carapace/defaultActions/actionValuesDescribed.md)
-    - [ActionStyledValues](./carapace/defaultActions/actionStyledValues.md)
-    - [ActionStyledValuesDescribed](./carapace/defaultActions/actionStyledValuesDescribed.md)
-    - [ActionFiles](./carapace/defaultActions/actionFiles.md)
-    - [ActionDirectories](./carapace/defaultActions/actionDirectories.md)
-    - [ActionExecutables](./carapace/defaultActions/actionExecutables.md)
-    - [ActionMessage](./carapace/defaultActions/actionMessage.md)
     - [ActionCallback](./carapace/defaultActions/actionCallback.md)
-    - [ActionMultiParts](./carapace/defaultActions/actionMultiParts.md)
+    - [ActionDirectories](./carapace/defaultActions/actionDirectories.md)
     - [ActionExecCommand](./carapace/defaultActions/actionExecCommand.md)
+    - [ActionExecCommandE](./carapace/defaultActions/actionExecCommandE.md)
+    - [ActionExecutables](./carapace/defaultActions/actionExecutables.md)
     - [ActionExecute](./carapace/defaultActions/actionExecute.md)
+    - [ActionFiles](./carapace/defaultActions/actionFiles.md)
     - [ActionImport](./carapace/defaultActions/actionImport.md)
+    - [ActionMessage](./carapace/defaultActions/actionMessage.md)
+    - [ActionMultiParts](./carapace/defaultActions/actionMultiParts.md)
+    - [ActionPositional](./carapace/defaultActions/actionPositional.md)
+    - [ActionStyles](./carapace/defaultActions/actionStyles.md)
+    - [ActionStyleConfig](./carapace/defaultActions/actionStyleConfig.md)
+    - [ActionStyledValues](./carapace/defaultActions/actionStyledValues.md)
+    - [ActionStyledValuesDescribed](./carapace/defaultActions/actionStyledValuesDescribed.md)
+    - [ActionValues](./carapace/defaultActions/actionValues.md)
+    - [ActionValuesDescribed](./carapace/defaultActions/actionValuesDescribed.md)
   - [CustomActions](./carapace/customActions.md)
   - [Context](./carapace/context.md)
   - [Batch](./carapace/batch.md)
diff --git a/docs/src/carapace/action/cache.md b/docs/src/carapace/action/cache.md
index 534522e..788d01a 100644
--- a/docs/src/carapace/action/cache.md
+++ b/docs/src/carapace/action/cache.md
@@ -3,9 +3,11 @@
 [`Cache`] caches an [Action] for a given duration.
 
 ```go
-return carapace.ActionValues(
-	time.Now().Format("15:04:05"),
-).Cache(5 * time.Second)
+carapace.ActionCallback(func(c carapace.Context) carapace.Action {
+	return carapace.ActionValues(
+		time.Now().Format("15:04:05"),
+	)
+}).Cache(5 * time.Second)
 ```
 
 ![](./cache.cast)
@@ -23,13 +25,15 @@ carapace.ActionMultiParts("/", func(c carapace.Context) carapace.Action {
 	case 0:
 		return carapace.ActionValues("one", "two").Suffix("/")
 	case 1:
-		return carapace.ActionValues(
-			time.Now().Format("15:04:05"),
-		).Cache(10*time.Second, cache.String(c.Parts[0]))
+		return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
+			return carapace.ActionValues(
+				time.Now().Format("15:04:05"),
+			)
+		}).Cache(10*time.Second, cache.String(c.Parts[0]))
 	default:
 		return carapace.ActionValues()
 	}
-}),
+})
 ```
 
 ![](./cache-key.cast)
diff --git a/docs/src/carapace/action/chdir.md b/docs/src/carapace/action/chdir.md
index 26a686f..55e35ed 100644
--- a/docs/src/carapace/action/chdir.md
+++ b/docs/src/carapace/action/chdir.md
@@ -3,10 +3,6 @@
 [`Chdir`] changes the working directory.
 
 ```go
-// completes files for path relative to current working directory
-carapace.ActionFiles()
-
-// complete files for path relative to `/tmp`
 carapace.ActionFiles().Chdir("/tmp")
 ```
 
diff --git a/docs/src/carapace/action/invoke.md b/docs/src/carapace/action/invoke.md
index 03099e9..eb58948 100644
--- a/docs/src/carapace/action/invoke.md
+++ b/docs/src/carapace/action/invoke.md
@@ -4,11 +4,14 @@
 
 ```go
 carapace.ActionCallback(func(c carapace.Context) carapace.Action {
-	if !strings.HasPrefix(c.Value, "file://") {
-		return carapace.ActionValues("file://").NoSpace()
+	switch {
+	case strings.HasPrefix(c.Value, "file://"):
+		c.Value = strings.TrimPrefix(c.Value, "file://")
+	case strings.HasPrefix("file://", c.Value):
+		c.Value = ""
+	default:
+		return carapace.ActionValues()
 	}
-
-	c.Value = strings.TrimPrefix(c.Value, "file://")
 	return carapace.ActionFiles().Invoke(c).Prefix("file://").ToA()
 })
 ```
diff --git a/docs/src/carapace/action/timeout.cast b/docs/src/carapace/action/timeout.cast
index a9c7a66..56c543e 100644
--- a/docs/src/carapace/action/timeout.cast
+++ b/docs/src/carapace/action/timeout.cast
@@ -1,53 +1,43 @@
-{"version": 2, "width": 108, "height": 24, "timestamp": 1673811541, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
-[0.061696, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
-[0.062238, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
-[0.071754, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
-[0.071891, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m master\u001b[0;m \u001b[0;1;31m[!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.19.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
-[0.94962, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.950308, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.967052, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.967329, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[1.132925, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h"]
-[1.133063, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[1.321997, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[1.450754, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[1.53755, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
-[1.696682, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h"]
-[1.697078, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
-[1.792727, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
-[1.880312, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
-[2.067656, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Cm\r\u001b[15C\u001b[?25h"]
-[2.067783, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
-[2.129278, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Co\r\u001b[16C\u001b[?25h"]
-[2.130661, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
-[2.292251, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Cdifier \r\u001b[23C\u001b[?25h"]
-[3.743873, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23C-\r\u001b[24C\u001b[?25h"]
-[3.872614, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24C-\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
-[4.13701, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23C\u001b[K\u001b[0;4m--batch \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--batch\u001b[0;2;7;37m (Batch())                                 \u001b[0;m  \u001b[0;34m--timeout\u001b[0;2;37m (Timeout())\r\n\u001b[0;33m--persistentFlag\u001b[0;2;37m (Help message for persistentFlag)\u001b[0;m  \u001b[0;34m--usage\u001b[0;2;37m (Usage())    \u001b[0;m\u001b[2A\r\u001b[22C\u001b[?25h"]
-[4.918576, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[25C\u001b[K\u001b[0;4mpersistentFlag \r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--batch\u001b[0;2;37m (Batch())                                 \u001b[0;m  \u001b[0;34m--timeout\u001b[0;2;37m (Timeout())\r\n\u001b[0;m\u001b[K\u001b[0;7;33m--persistentFlag\u001b[0;2;7;37m (Help message for persistentFlag)\u001b[0;m  \u001b[0;34m--usage\u001b[0;2;37m (Usage())    \u001b[0;m\u001b[2A\r\u001b[22C\u001b[?25h"]
-[5.079303, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[25C\u001b[K\u001b[0;4mtimeout \r\n\r\n\u001b[52C\u001b[0;m\u001b[K\u001b[0;7;34m--timeout\u001b[0;2;7;37m (Timeout())\r\n\u001b[0;m\u001b[K\u001b[0;33m--persistentFlag\u001b[0;2;37m (Help message for persistentFlag)\u001b[0;m  \u001b[0;34m--usage\u001b[0;2;37m (Usage())    \u001b[0;m\u001b[2A\r\u001b[22C\u001b[?25h"]
-[5.788896, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[23C\u001b[K--timeout \r\n\u001b[J\u001b[A\r\u001b[33C\u001b[?25h"]
-[5.78901, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[33C\u001b[?25h"]
-[6.314998, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[33C\u001b[0;4m1s:\r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7m1s\u001b[0;2;7;37m (within timeout)\u001b[0;m  3s\u001b[0;2;37m (exceeding timeout)\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[7.132454, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[33C\u001b[K1s:\r\n\u001b[J\u001b[A\r\u001b[36C\u001b[?25h"]
-[7.132585, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
-[8.611819, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[33C\u001b[K\u001b[0;4;33m'1s:within timeout'\u001b[0;4m \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mwithin timeout\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[10.4284, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[33C\u001b[K1s:\r\n\u001b[J\u001b[A\r\u001b[36C\u001b[?25h"]
-[11.254734, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[35C\u001b[K\r\u001b[35C\u001b[?25h"]
-[11.400847, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[34C\u001b[K\r\u001b[34C\u001b[?25h"]
-[11.534833, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[33C\u001b[K\r\u001b[33C\u001b[?25h"]
-[11.850039, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[33C\u001b[0;4m1s:\r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7m1s\u001b[0;2;7;37m (within timeout)\u001b[0;m  3s\u001b[0;2;37m (exceeding timeout)\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[12.326715, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[33C\u001b[K\u001b[0;4m3s:\r\n\r\n\u001b[0;m\u001b[K1s\u001b[0;2;37m (within timeout)\u001b[0;m  \u001b[0;7m3s\u001b[0;2;7;37m (exceeding timeout)\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[12.613937, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[33C\u001b[K3s:\r\n\u001b[J\u001b[A\r\u001b[36C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
-[14.918744, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mtimeout exceeded\u001b[K\r\n\u001b[0;2;37musage: \u001b[0;mTimeout()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m master\u001b[0;m \u001b[0;1;31m[!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.19.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m modifier --timeout 3s:\r\u001b[36C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
-[16.694037, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
-[17.504483, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
-[18.138685, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
-[18.138811, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[18.139304, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[18.162885, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[19.092726, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[19.281208, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[19.451467, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[19.492645, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[19.6763, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
+{"version": 2, "width": 108, "height": 24, "timestamp": 1689239306, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.068658, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
+[0.069126, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
+[0.082213, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
+[0.082429, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[0.261416, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[0.261726, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.261863, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.276748, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.276878, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.423522, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[0.539694, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[0.629398, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[0.679911, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h"]
+[0.679993, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[0.681138, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[0.681191, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[0.814727, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h"]
+[0.892877, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h"]
+[0.892968, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[0.969881, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.262051, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Cm\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[1.325243, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Co\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.447814, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Cdifier \r\u001b[23C\u001b[?25h"]
+[1.915788, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23C-\r\u001b[24C\u001b[?25h"]
+[1.915874, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[2.145285, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24C-\r\u001b[25C\u001b[?25h"]
+[2.355468, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Ct\r\u001b[26C\u001b[?25h"]
+[2.355537, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[26C\u001b[?25h"]
+[2.473529, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[26Ci\r\u001b[27C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[27C\u001b[?25h"]
+[2.62434, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[27Cmeout \r\u001b[33C\u001b[?25h"]
+[5.140739, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mtimeout exceeded\u001b[K\r\n\u001b[0;2musage: \u001b[0;mTimeout()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m modifier --timeout \r\u001b[33C\u001b[?25h"]
+[5.140797, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[33C\u001b[?25h"]
+[7.116688, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
+[7.117941, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[7.137856, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[7.735865, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[7.91417, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h"]
+[7.914291, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[8.057579, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[8.133087, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h"]
+[8.13343, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[8.231994, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
diff --git a/docs/src/carapace/action/usage.md b/docs/src/carapace/action/usage.md
index 007e88f..91a40d8 100644
--- a/docs/src/carapace/action/usage.md
+++ b/docs/src/carapace/action/usage.md
@@ -1,6 +1,6 @@
 # Usage
 
-[`Usage`] sets the `usage` message.
+[`Usage`] sets the usage message.
 
 ```go
 carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action {
diff --git a/docs/src/carapace/defaultActions/actionExecCommand.cast b/docs/src/carapace/defaultActions/actionExecCommand.cast
index 1e0a49a..1891a21 100644
--- a/docs/src/carapace/defaultActions/actionExecCommand.cast
+++ b/docs/src/carapace/defaultActions/actionExecCommand.cast
@@ -1,47 +1,101 @@
-{"version": 2, "width": 108, "height": 24, "timestamp": 1669555955, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
-[0.042081, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h"]
-[0.042849, "o", "\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
-[0.054148, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
-[0.054344, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m update-examples2\u001b[0;m via \u001b[0;1;36m🐹 v1.19.3 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
-[0.441828, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
-[0.442453, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.457669, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.45772, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.649476, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mex\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[0.803468, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;32ma\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[0.926535, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[0.965482, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
-[1.126057, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h"]
-[1.126165, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
-[1.179382, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
-[1.290229, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
-[1.40154, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
-[1.492128, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
-[1.706102, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ct\r\u001b[17C\u001b[?25h"]
-[1.706218, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[17C\u001b[?25h"]
-[1.763681, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[17Ci\r\u001b[18C\u001b[?25h"]
-[1.763785, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[18C\u001b[?25h"]
-[1.845946, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[18Co\r\u001b[19C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[19C\u001b[?25h"]
-[1.894668, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[19Cn\r\u001b[20C\u001b[?25h"]
-[1.895119, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[20C\u001b[?25h"]
-[1.98299, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[20C \r\u001b[21C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[21C\u001b[?25h"]
-[2.159761, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
-[2.302763, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[23C\u001b[?25h"]
-[2.451768, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Ce\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
-[2.685564, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Cx\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
-[2.993822, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cec-command \r\u001b[36C\u001b[?25h"]
-[3.640582, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[36C\u001b[0;4mfork \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mfork\u001b[0;m  origin\u001b[1A\r\u001b[22C\u001b[?25h"]
-[4.459056, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4morigin \r\n\r\n\u001b[0;m\u001b[Kfork  \u001b[0;7morigin\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[5.037107, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4mfork \r\n\r\n\u001b[0;m\u001b[K\u001b[0;7mfork\u001b[0;m  origin\u001b[1A\r\u001b[22C\u001b[?25h"]
-[5.638706, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[Kfork \r\n\u001b[J\u001b[A\r\u001b[41C\u001b[?25h"]
-[5.639114, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[41C\u001b[?25h"]
-[6.26833, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
-[6.268697, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[6.289926, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[6.290184, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[6.64225, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[6.821335, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mex\u001b[0;m\r\u001b[8C\u001b[?25h"]
-[6.821438, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[6.975227, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[7.046158, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[7.206082, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
+{"version": 2, "width": 108, "height": 24, "timestamp": 1688589915, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.063338, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
+[0.063851, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
+[0.075727, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
+[0.075855, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[0.380118, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[0.380472, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.380856, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.395809, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.3959, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.551875, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[0.753238, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[0.88266, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[0.950649, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[1.09122, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[1.153699, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h"]
+[1.153808, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[1.238006, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h"]
+[1.238407, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.239925, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.2403, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.241172, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.362352, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h"]
+[1.362459, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[1.484721, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.654748, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ction \r\u001b[21C\u001b[?25h"]
+[2.112828, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h"]
+[2.11299, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
+[2.273616, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[23C\u001b[?25h"]
+[2.38315, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Ce\r\u001b[24C\u001b[?25h"]
+[2.383251, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[2.559925, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Cx\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
+[2.730515, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Ce\r\u001b[26C\u001b[?25h"]
+[2.730609, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[26C\u001b[?25h"]
+[2.952574, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[26Cc\r\u001b[27C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[27C\u001b[?25h"]
+[3.301455, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C\u001b[K\u001b[0;4m--execcommand \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--execcommand\u001b[0;2;7m (ActionExecCommand())\u001b[0;m  \u001b[0;34m--executables\u001b[0;2m (ActionExecutables())\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
+[3.533548, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[27C\u001b[K\u001b[0;4mutables \r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--execcommand\u001b[0;2m (ActionExecCommand())\u001b[0;m  \u001b[0;7;34m--executables\u001b[0;2;7m (ActionExecutables())\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
+[3.968796, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[27C\u001b[K\u001b[0;4mcommand \r\n\r\n\u001b[0;m\u001b[K\u001b[0;7;34m--execcommand\u001b[0;2;7m (ActionExecCommand())\u001b[0;m  \u001b[0;34m--executables\u001b[0;2m (ActionExecutables())\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
+[4.14159, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[21C\u001b[K--execcommand \r\n\u001b[J\u001b[A\r\u001b[35C\u001b[?25h"]
+[4.14177, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[35C\u001b[?25h"]
+[4.490666, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[35C\u001b[0;4mfork \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mfork\u001b[0;m  origin\u001b[1A\r\u001b[22C\u001b[?25h"]
+[5.50476, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[35C\u001b[K\u001b[0;4morigin \r\n\r\n\u001b[0;m\u001b[Kfork  \u001b[0;7morigin\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
+[6.130302, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[35C\u001b[K\u001b[0;4mfork \r\n\r\n\u001b[0;m\u001b[K\u001b[0;7mfork\u001b[0;m  origin\u001b[1A\r\u001b[22C\u001b[?25h"]
+[6.862993, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[6C\u001b[K\r\n\u001b[J\u001b[A\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[6.864095, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[6.879742, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[6.879786, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[7.42221, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31mc\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[7.504297, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mcd\u001b[0;m\r\u001b[8C\u001b[?25h"]
+[7.504404, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[7.544566, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C \r\u001b[9C\u001b[?25h"]
+[7.545752, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[7.673841, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[9C/\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[7.803351, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10Ct\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[7.894832, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11Cm\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[7.987298, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[12Cp/\r\u001b[14C\u001b[?25h"]
+[8.277681, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
+[8.343405, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
+[8.343767, "o", "\u001b[?25l\r\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[8.344026, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[8.345004, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[8.363522, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[8.363793, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\u001b[K\u001b[0;1;36m/tmp\u001b[0;m \r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[8.776775, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[8.777236, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[8.784604, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[8.784917, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[8.95274, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[9.137623, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[9.2447, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[9.317423, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[9.471933, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[9.547967, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[9.649425, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[9.732188, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[9.867257, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[10.085052, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ction \r\u001b[21C\u001b[?25h"]
+[10.514343, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
+[10.671756, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[23C\u001b[?25h"]
+[10.821927, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Ce\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[10.822291, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[10.822957, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[10.82304, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[10.991558, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Cx\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
+[11.178115, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Ce\r\u001b[26C\u001b[?25h"]
+[11.361592, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[26Cc\r\u001b[27C\u001b[?25h"]
+[11.591306, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C\u001b[K\u001b[0;4m--execcommand \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--execcommand\u001b[0;2;7m (ActionExecCommand())\u001b[0;m  \u001b[0;34m--executables\u001b[0;2m (ActionExecutables())\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
+[12.197445, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[21C\u001b[K--execcommand \r\n\u001b[J\u001b[A\r\u001b[35C\u001b[?25h"]
+[12.197541, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[35C\u001b[?25h"]
+[12.51995, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mfatal: not a git repository (or any parent up to mount point /)\u001b[K\r\n\u001b[0;2musage: \u001b[0;mActionExecCommand()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36m/tmp\u001b[0;m \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m action --execcommand \r\u001b[35C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[35C\u001b[?25h"]
+[14.972506, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
+[14.972596, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[14.972981, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[15.001007, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[15.001075, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[15.271604, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[15.468479, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[15.576801, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[15.678039, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h"]
+[15.678145, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[15.760032, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
diff --git a/docs/src/carapace/defaultActions/actionExecCommand.md b/docs/src/carapace/defaultActions/actionExecCommand.md
index b485191..427352d 100644
--- a/docs/src/carapace/defaultActions/actionExecCommand.md
+++ b/docs/src/carapace/defaultActions/actionExecCommand.md
@@ -1,6 +1,6 @@
 # ActionExecCommand
 
-[`ActionExecCommand`] executes given command and transforms its output using the provided function. If an error occurs during execution [ActionMessage](./actionMessage.md) is returned instead with the first line of `stderr` or an exit code.
+[`ActionExecCommand`] executes an external command.
 
 ```go
 carapace.ActionExecCommand("git", "remote")(func(output []byte) carapace.Action {
diff --git a/docs/src/carapace/defaultActions/actionExecCommandE.cast b/docs/src/carapace/defaultActions/actionExecCommandE.cast
new file mode 100644
index 0000000..02628a0
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionExecCommandE.cast
@@ -0,0 +1,40 @@
+{"version": 2, "width": 108, "height": 24, "timestamp": 1689353775, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.085661, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h"]
+[0.086439, "o", "\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
+[0.097354, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
+[0.097407, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[0.561983, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[0.56233, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.580276, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.760698, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[0.848027, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h"]
+[0.84812, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[0.977779, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[1.036056, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[1.162104, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[1.240299, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[1.298122, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h"]
+[1.298214, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.377771, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[1.487644, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.681737, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ction \r\u001b[21C\u001b[?25h"]
+[2.11316, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
+[2.249333, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h"]
+[2.410433, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Ce\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[2.544599, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Cx\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
+[2.734999, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cec\r\u001b[27C\u001b[?25h"]
+[3.108824, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C\u001b[K\u001b[0;4m--execcommand \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--execcommand\u001b[0;2;7m (ActionExecCommand()) \u001b[0;m  \u001b[0;34m--executables\u001b[0;2m (ActionExecutables())\r\n\u001b[0;34m--execcommandE\u001b[0;2m (ActionExecCommand())\u001b[0;m\u001b[2A\r\u001b[22C\u001b[?25h"]
+[3.991962, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[34C\u001b[K\u001b[0;4mE \r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--execcommand\u001b[0;2m (ActionExecCommand()) \u001b[0;m  \u001b[0;34m--executables\u001b[0;2m (ActionExecutables())\r\n\u001b[0;m\u001b[K\u001b[0;7;34m--execcommandE\u001b[0;2;7m (ActionExecCommand())\u001b[0;m\u001b[2A\r\u001b[22C\u001b[?25h"]
+[3.992045, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\u001b[2A\r\u001b[22C\u001b[?25h"]
+[4.246778, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[21C\u001b[K--execcommandE \r\n\u001b[J\u001b[A\r\u001b[36C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
+[4.566205, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mfailed with 1\u001b[K\r\n\u001b[0;2musage: \u001b[0;mActionExecCommand()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m action --execcommandE \r\u001b[36C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[36C\u001b[?25h"]
+[6.711056, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
+[6.712109, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[6.729561, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[6.729609, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[7.039152, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[7.039227, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[7.239598, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[7.31228, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[7.434329, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[7.526881, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
diff --git a/docs/src/carapace/defaultActions/actionExecCommandE.md b/docs/src/carapace/defaultActions/actionExecCommandE.md
new file mode 100644
index 0000000..de600cc
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionExecCommandE.md
@@ -0,0 +1,20 @@
+# ActionExecCommandE
+
+[`ActionExecCommandE`] is like [ActionExecCommand] but with custom error handling.
+
+```go
+carapace.ActionExecCommandE("false")(func(output []byte, err error) carapace.Action {
+	if err != nil {
+		if exitErr, ok := err.(*exec.ExitError); ok {
+			return carapace.ActionMessage("failed with %v", exitErr.ExitCode())
+		}
+		return carapace.ActionMessage(err.Error())
+	}
+	return carapace.ActionValues()
+})
+```
+
+![](./actionExecCommandE.cast)
+
+[ActionExecCommand]:./actionExecCommand.md
+[`ActionExecCommandE`]:https://pkg.go.dev/github.com/rsteube/carapace#ActionExecCommandE
diff --git a/docs/src/carapace/defaultActions/actionExecute.md b/docs/src/carapace/defaultActions/actionExecute.md
index 2af2d4d..aec7bdd 100644
--- a/docs/src/carapace/defaultActions/actionExecute.md
+++ b/docs/src/carapace/defaultActions/actionExecute.md
@@ -1,6 +1,6 @@
 # ActionExecute
 
-[`ActionExecute`] invokes an internal command and parses it's output using [`ActionImport`].
+[`ActionExecute`] executes completion on an internal [`Command`].
 
 > Cobra commands can only be executed **once** so be sure each invocation uses a new instance.
 
@@ -28,4 +28,4 @@ carapace.ActionCallback(func(c carapace.Context) carapace.Action {
 ![](./actionExecute.cast)
 
 [`ActionExecute`]:https://pkg.go.dev/github.com/rsteube/carapace#ActionExecute
-[`ActionImport`]:../defaultActions/actionImport.md
\ No newline at end of file
+[`Command`]:https://pkg.go.dev/github.com/spf13/cobra#Command
\ No newline at end of file
diff --git a/docs/src/carapace/defaultActions/actionFiles.md b/docs/src/carapace/defaultActions/actionFiles.md
index 468e5ed..c0b9891 100644
--- a/docs/src/carapace/defaultActions/actionFiles.md
+++ b/docs/src/carapace/defaultActions/actionFiles.md
@@ -3,10 +3,6 @@
 [`ActionFiles`] completes files with optional suffix filtering.
 
 ```go
-// all files
-carapace.ActionFiles()
-
-// files ending with `.md`, `go.mod` or `go.sum`
 carapace.ActionFiles(".md", "go.mod", "go.sum"),
 ```
 
diff --git a/docs/src/carapace/defaultActions/actionMessage.cast b/docs/src/carapace/defaultActions/actionMessage.cast
index 7d47695..949fcba 100644
--- a/docs/src/carapace/defaultActions/actionMessage.cast
+++ b/docs/src/carapace/defaultActions/actionMessage.cast
@@ -1,50 +1,58 @@
-{"version": 2, "width": 108, "height": 24, "timestamp": 1669545823, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
-[0.047141, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
-[0.047833, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
-[0.058851, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
-[0.058961, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m update-examples\u001b[0;m via \u001b[0;1;36m🐹 v1.19.3 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
-[0.174282, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
-[0.175341, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.175798, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.187622, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.187685, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[0.384647, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mex\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[0.526732, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;32ma\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[0.655283, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[0.705035, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
-[0.835909, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
-[0.918183, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h"]
-[0.918274, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
-[1.035008, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h"]
-[1.035106, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
-[1.175587, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
-[1.296138, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h"]
-[1.296251, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
-[1.488136, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ct\r\u001b[17C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[17C\u001b[?25h"]
-[1.627617, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[17Ci\r\u001b[18C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[18C\u001b[?25h"]
-[1.688214, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[18Co\r\u001b[19C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[19C\u001b[?25h"]
-[1.73337, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[19Cn\r\u001b[20C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[20C\u001b[?25h"]
-[1.927748, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[20C \r\u001b[21C\u001b[?25h"]
-[1.927858, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[21C\u001b[?25h"]
-[2.066905, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h"]
-[2.067022, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
-[2.198977, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[23C\u001b[?25h"]
-[2.359793, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Cm\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
-[2.49511, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Ce\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
-[2.757781, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cssage \r\u001b[31C\u001b[?25h"]
-[3.402618, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[31C\u001b[0;4mERR\r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;1;7;31mERR\u001b[0;2;7;37m (example message)\u001b[0;m  _\u001b[1A\r\u001b[22C\u001b[?25h"]
-[3.403351, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
-[3.40381, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
-[3.403917, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
-[4.616729, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[31C\u001b[K\u001b[0;4m_\r\n\r\n\u001b[0;m\u001b[K\u001b[0;1;31mERR\u001b[0;2;37m (example message)\u001b[0;m  \u001b[0;7m_\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
-[5.354497, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[31C\u001b[K\u001b[0;4mERR\r\n\r\n\u001b[0;m\u001b[K\u001b[0;1;7;31mERR\u001b[0;2;7;37m (example message)\u001b[0;m  _\u001b[1A\r\u001b[22C\u001b[?25h"]
-[6.633618, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[6C\u001b[K\r\n\u001b[J\u001b[A\r\u001b[6C\u001b[?25h"]
-[6.634062, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[6.634793, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[6.659567, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
-[7.024338, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
-[7.224811, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mex\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
-[7.387418, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexi\u001b[0;m\r\u001b[9C\u001b[?25h"]
-[7.387523, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
-[7.458919, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
-[7.595393, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
+{"version": 2, "width": 108, "height": 24, "timestamp": 1689354962, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.08309, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
+[0.083638, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
+[0.091929, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
+[0.092594, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[0.391326, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.391998, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.409855, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.410059, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.547601, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[0.664706, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[0.78433, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[0.828469, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[0.971578, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[1.053376, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[1.116114, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.271961, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[1.372036, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h"]
+[1.372643, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.372936, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.373965, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.374256, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.374579, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.375478, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.375678, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.52656, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ction \r\u001b[21C\u001b[?25h"]
+[1.870169, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
+[2.010236, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[23C\u001b[?25h"]
+[2.172238, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Cm\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[2.27714, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C\u001b[K\u001b[0;4m--message \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--message\u001b[0;2;7m (ActionMessage())                                   \r\n\u001b[0;34m--message-multiple\u001b[0;2m (ActionMessage())                          \r\n\u001b[0;34m--multiparts\u001b[0;2m (ActionMultiParts())                             \r\n\u001b[0;34m--multiparts-nested\u001b[0;2m (ActionMultiParts(...ActionMultiParts...))\u001b[0;m\u001b[4A\r\u001b[22C\u001b[?25h"]
+[3.35017, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[21C\u001b[K--message \r\n\u001b[J\u001b[A\r\u001b[31C\u001b[?25h"]
+[3.350269, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[31C\u001b[?25h"]
+[3.730448, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mexample message\u001b[K\r\n\u001b[0;2musage: \u001b[0;mActionMessage()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m action --message \r\u001b[31C\u001b[?25h"]
+[3.730672, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[31C\u001b[?25h"]
+[4.945994, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C\u001b[K\r\u001b[30C\u001b[?25h"]
+[5.079618, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C=\r\u001b[31C\u001b[?25h"]
+[5.080334, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[31C-\r\u001b[32C\u001b[?25h"]
+[5.537969, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[31C\u001b[K\r\u001b[31C\u001b[?25h"]
+[5.53806, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[31C\u001b[?25h"]
+[5.706316, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C\u001b[K\r\u001b[30C\u001b[?25h"]
+[5.769214, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C-\r\u001b[31C\u001b[?25h"]
+[5.76932, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[31C\u001b[?25h"]
+[5.89776, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[31Cmultiple \r\u001b[40C\u001b[?25h"]
+[6.41822, "o", "\u001b[?25l\u001b[2A\r\u001b[0;31merror: \u001b[0;mfirst message\u001b[K\r\n\u001b[0;31merror: \u001b[0;msecond message\u001b[K\r\n\u001b[0;31merror: \u001b[0;mthird message\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m action --message-multiple \u001b[0;4mone\r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mone\u001b[0;m  three  two\u001b[1A\r\u001b[22C\u001b[?25h"]
+[6.418335, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
+[9.490806, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[6C\u001b[K\r\n\u001b[J\u001b[A\r\u001b[6C\u001b[?25h"]
+[9.49129, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[9.492788, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[9.493475, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[9.493647, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[9.511141, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[9.51131, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[10.095098, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[10.095188, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[10.255808, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[10.357377, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[10.447939, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[10.541146, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
diff --git a/docs/src/carapace/defaultActions/actionMessage.md b/docs/src/carapace/defaultActions/actionMessage.md
index ab70edb..537bbf5 100644
--- a/docs/src/carapace/defaultActions/actionMessage.md
+++ b/docs/src/carapace/defaultActions/actionMessage.md
@@ -6,6 +6,9 @@
 carapace.ActionMessage("example message")
 ```
 
-> To display the message [ActionValuesDescribed](./actionValuesDescribed.md) is used with values `_`, `ERR` and the message as description.
+> In shells other than [Elvish] and [Zsh] the message is integrated in the values as `ERR{n}`.
 
-![](./actionMessage.cast)
\ No newline at end of file
+![](./actionMessage.cast)
+
+[Elvish]:https://elv.sh/
+[Zsh]:https://www.zsh.org/
diff --git a/docs/src/carapace/defaultActions/actionPositional.md b/docs/src/carapace/defaultActions/actionPositional.md
new file mode 100644
index 0000000..fe28212
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionPositional.md
@@ -0,0 +1,1 @@
+# ActionPositional
diff --git a/docs/src/carapace/defaultActions/actionStyleConfig.md b/docs/src/carapace/defaultActions/actionStyleConfig.md
new file mode 100644
index 0000000..42fd31e
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionStyleConfig.md
@@ -0,0 +1,1 @@
+# ActionStyleConfig
diff --git a/docs/src/carapace/defaultActions/actionStyles.cast b/docs/src/carapace/defaultActions/actionStyles.cast
new file mode 100644
index 0000000..a133373
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionStyles.cast
@@ -0,0 +1,78 @@
+{"version": 2, "width": 108, "height": 24, "timestamp": 1689068863, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.065146, "o", "\u001b[?7h\u001b[7m⏎\u001b[m                                                                                                           \r \r\u001b[?7l\u001b[?2004h"]
+[0.06574, "o", "\u001b[?25l\r???>                                                                                                   ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
+[0.073338, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
+[0.073417, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m doc-defaultactions\u001b[0;m \u001b[0;1;31m[$!?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
+[0.617689, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.618025, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.630159, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[0.787053, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h"]
+[0.787132, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[0.909677, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[1.0057, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h"]
+[1.006062, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"]
+[1.05955, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"]
+[1.181709, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"]
+[1.272712, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h"]
+[1.272803, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"]
+[1.34567, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h"]
+[1.345888, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"]
+[1.409371, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Ca\r\u001b[15C\u001b[?25h"]
+[1.409424, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"]
+[1.563442, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Cc\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"]
+[1.708782, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Ction \r\u001b[21C\u001b[?25h"]
+[2.077721, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C-\r\u001b[22C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[22C\u001b[?25h"]
+[2.224747, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[22C-\r\u001b[23C\u001b[?25h"]
+[2.334962, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23Cs\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"]
+[2.50076, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24Ct\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"]
+[2.626959, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cyle\r\u001b[28C\u001b[?25h"]
+[3.296033, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[21C\u001b[K\u001b[0;4m--styled-values \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--styled-values\u001b[0;2;7m (ActionStyledValues())                   \r\n\u001b[0;34m--styled-values-described\u001b[0;2m (ActionStyledValuesDescribed())\r\n\u001b[0;34m--styles\u001b[0;2m (ActionStyles())                                \u001b[0;m\u001b[3A\r\u001b[22C\u001b[?25h"]
+[3.789296, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m-described \r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--styled-values\u001b[0;2m (ActionStyledValues())                   \r\n\u001b[0;m\u001b[K\u001b[0;7;34m--styled-values-described\u001b[0;2;7m (ActionStyledValuesDescribed())\r\n\u001b[0;m\u001b[3A\r\u001b[22C\u001b[?25h"]
+[3.934713, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[28C\u001b[K\u001b[0;4ms \r\n\r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--styled-values-described\u001b[0;2m (ActionStyledValuesDescribed())\r\n\u001b[0;m\u001b[K\u001b[0;7;34m--styles\u001b[0;2;7m (ActionStyles())                                \u001b[0;m\u001b[3A\r\u001b[22C\u001b[?25h"]
+[4.094176, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[21C\u001b[K--styles \r\n\u001b[J\u001b[A\r\u001b[30C\u001b[?25h"]
+[4.094246, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[30C\u001b[?25h"]
+[4.516062, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C\u001b[0;4mbg-black \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;40mbg-black         \u001b[0;m  \u001b[0;107mbg-bright-white \u001b[0;m  \u001b[0;43mbg-yellow   \u001b[0;m  \u001b[0;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[0;44mbg-blue          \u001b[0;m  \u001b[0;103mbg-bright-yellow\u001b[0;m  \u001b[0;30mblack       \u001b[0;m  \u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\u001b[0;100mbg-bright-black  \u001b[0;m  bg-color          \u001b[0;5mblink       \u001b[0;m  \u001b[0;91mbright-red    \u001b[0;m  \u001b[0;3mitalic    \r\n\u001b[0;104mbg-bright-blue   \u001b[0;m  \u001b[0;46mbg-cyan         \u001b[0;m  \u001b[0;34mblue        \u001b[0;m  \u001b[0;97mbright-white  \u001b[0;m  \u001b[0;35mmagenta   \r\n\u001b[0;106mbg-bright-cyan   \u001b[0;m  \u001b[0;42mbg-green        \u001b[0;m  \u001b[0;1mbold        \u001b[0;m  \u001b[0;93mbright-yellow \u001b[0;m  \u001b[0;31mred       \r\n\u001b[0;102mbg-bright-green  \u001b[0;m  \u001b[0;45mbg-magenta      \u001b[0;m  \u001b[0;90mbright-black\u001b[0;m  color           \u001b[0;4munderlined\r\n\u001b[0;105mbg-bright-magenta\u001b[0;m  \u001b[0;41mbg-red          \u001b[0;m  \u001b[0;94mbright-blue \u001b[0;m  \u001b[0;36mcyan          \u001b[0;m  \u001b[0;37mwhite     \r\n\u001b[0;101mbg-bright-red    \u001b[0"]
+[4.516264, "o", ";m  \u001b[0;47mbg-white        \u001b[0;m  \u001b[0;96mbright-cyan \u001b[0;m  \u001b[0;2mdim           \u001b[0;m  \u001b[0;33myellow    \u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[5.774791, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[35C\u001b[K\u001b[0;4mue \r\n\r\n\u001b[0;m\u001b[K\u001b[0;40mbg-black         \u001b[0;m  \u001b[0;107mbg-bright-white \u001b[0;m  \u001b[0;43mbg-yellow   \u001b[0;m  \u001b[0;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[0;m\u001b[K\u001b[0;7;44mbg-blue          \u001b[0;m  \u001b[0;103mbg-bright-yellow\u001b[0;m  \u001b[0;30mblack       \u001b[0;m  \u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.061957, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[34C\u001b[K\u001b[0;4mright-yellow \r\n\r\n\r\n\u001b[0;m\u001b[K\u001b[0;44mbg-blue          \u001b[0;m  \u001b[0;7;103mbg-bright-yellow\u001b[0;m  \u001b[0;30mblack       \u001b[0;m  \u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.270792, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[31C\u001b[K\u001b[0;4mlack \r\n\r\n\r\n\u001b[19C\u001b[0;m\u001b[K\u001b[0;103mbg-bright-yellow\u001b[0;m  \u001b[0;7;30mblack       \u001b[0;m  \u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.436048, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[31C\u001b[K\u001b[0;4mright-magenta \r\n\r\n\r\n\u001b[37C\u001b[0;m\u001b[K\u001b[0;30mblack       \u001b[0;m  \u001b[0;7;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.519505, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mgreen \r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.521659, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mmagenta \r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.702575, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mgreen \r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.855385, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mmagenta \r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;92mbright-green  \u001b[0;m  \u001b[0;32mgreen     \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[6.971775, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mred \r\n\r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;95mbright-magenta\u001b[0;m  \u001b[0;7minverse   \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;91mbright-red    \u001b[0;m  \u001b[0;3mitalic    \r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[7.134884, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mwhite \r\n\r\n\r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;91mbright-red    \u001b[0;m  \u001b[0;3mitalic    \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;97mbright-white  \u001b[0;m  \u001b[0;35mmagenta   \r\n\r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[7.27942, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4myellow \r\n\r\n\r\n\r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;97mbright-white  \u001b[0;m  \u001b[0;35mmagenta   \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7;93mbright-yellow \u001b[0;m  \u001b[0;31mred       \r\n\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[7.413665, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[30C\u001b[K\u001b[0;4mcolor\r\n\r\n\r\n\r\n\r\n\r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;93mbright-yellow \u001b[0;m  \u001b[0;31mred       \r\n\u001b[51C\u001b[0;m\u001b[K\u001b[0;7mcolor         \u001b[0;m  \u001b[0;4munderlined\r\n\r\n\u001b[0;m\u001b[8A\r\u001b[22C\u001b[?25h"]
+[7.41499, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[8A\r\u001b[22C\u001b[?25h"]
+[7.984051, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[30C\u001b[Kcolor\r\n\u001b[J\u001b[A\r\u001b[35C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[35C\u001b[?25h"]
+[8.304133, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[30C\u001b[K\u001b[0;4mcolor0 \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;38;5;0mcolor0  \u001b[0;m  \u001b[0;38;5;115mcolor115\u001b[0;m  \u001b[0;38;5;132mcolor132\u001b[0;m  \u001b[0;38;5;15mcolor15 \u001b[0;m  \u001b[0;38;5;167mcolor167\u001b[0;m  \u001b[0;38;5;184mcolor184\u001b[0;m  \u001b[0;38;5;200mcolor200\u001b[0;m  \u001b[0;38;5;218mcolor218\u001b[0;m  \u001b[0;38;5;235mcolor235\u001b[0;m  \u001b[0;38;5;252mcolor252\u001b[0;m  \u001b[0;38;5;4mcolor4 \r\n\u001b[0;38;5;1mcolor1  \u001b[0;m  \u001b[0;38;5;116mcolor116\u001b[0;m  \u001b[0;38;5;133mcolor133\u001b[0;m  \u001b[0;38;5;150mcolor150\u001b[0;m  \u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\u001b[0;38;5;10mcolor10 \u001b[0;m  \u001b[0;38;5;117mcolor117\u001b[0;m  \u001b[0;38;5;134mcolor134\u001b[0;m  \u001b[0;38;5;151mcolor151\u001b[0;m  \u001b[0;38;5;169mcolor169\u001b[0;m  \u001b[0;38;5;186mcolor186\u001b[0;m  \u001b[0;38;5;202mcolor202\u001b[0;m  \u001b[0;38;5;22mcolor22 \u001b[0;m  \u001b[0;38;5;237mcolor237\u001b[0;m  \u001b[0;38;5;254mcolor254\u001b[0;m  \u001b[0;38;5;41mcolor41\r\n\u001b[0;38;5;100mcolor100\u001b[0;m  \u001b[0;38;5;118mcolor11"]
+[8.304276, "o", "8\u001b[0;m  \u001b[0;38;5;135mcolor135\u001b[0;m  \u001b[0;38;5;152mcolor152\u001b[0;m  \u001b[0;38;5;17mcolor17 \u001b[0;m  \u001b[0;38;5;187mcolor187\u001b[0;m  \u001b[0;38;5;203mcolor203\u001b[0;m  \u001b[0;38;5;220mcolor220\u001b[0;m  \u001b[0;38;5;238mcolor238\u001b[0;m  \u001b[0;38;5;255mcolor255\u001b[0;m  \u001b[0;38;5;42mcolor42\r\n\u001b[0;38;5;101mcolor101\u001b[0;m  \u001b[0;38;5;119mcolor119\u001b[0;m  \u001b[0;38;5;136mcolor136\u001b[0;m  \u001b[0;38;5;153mcolor153\u001b[0;m  \u001b[0;38;5;170mcolor170\u001b[0;m  \u001b[0;38;5;188mcolor188\u001b[0;m  \u001b[0;38;5;204mcolor204\u001b[0;m  \u001b[0;38;5;221mcolor221\u001b[0;m  \u001b[0;38;5;239mcolor239\u001b[0;m  \u001b[0;38;5;26mcolor26 \u001b[0;m  \u001b[0;38;5;43mcolor43\r\n\u001b[0;38;5;102mcolor102\u001b[0;m  \u001b[0;38;5;12mcolor12 \u001b[0;m  \u001b[0;38;5;137mcolor137\u001b[0;m  \u001b[0;38;5;154mcolor154\u001b[0;m  \u001b[0;38;5;171mcolor171\u001b[0;m  \u001b[0;38;5;189mcolor189\u001b[0;m  \u001b[0;38;5;205mcolor205\u001b[0;m  \u001b[0;38;5;222mcolor222\u001b[0;m  \u001b[0;38;5;24mcolor24 \u001b[0;m  \u001b[0;38;5;27mcolor27 \u001b[0;m  \u001b[0;38;5;44mcolor44\r\n\u001b[0;38;5;103mcolor103\u001b[0;m  \u001b[0;38;5;120mcolor120\u001b[0;m  \u001b[0;38;5;138mcolor138\u001b[0;m  \u001b[0;38;5;155mcolor155\u001b[0;m  \u001b[0;38;5;172mcolor172\u001b[0;m  \u001b[0;38;5;19mcolor19 \u001b[0;m  \u001b[0;38;"]
+[8.304331, "o", "5;206mcolor206\u001b[0;m  \u001b[0;38;5;223mcolor223\u001b[0;m  \u001b[0;38;5;240mcolor240\u001b[0;m  \u001b[0;38;5;28mcolor28 \u001b[0;m  \u001b[0;38;5;45mcolor45\r\n\u001b[0;38;5;104mcolor104\u001b[0;m  \u001b[0;38;5;121mcolor121\u001b[0;m  \u001b[0;38;5;139mcolor139\u001b[0;m  \u001b[0;38;5;156mcolor156\u001b[0;m  \u001b[0;38;5;173mcolor173\u001b[0;m  \u001b[0;38;5;190mcolor190\u001b[0;m  \u001b[0;38;5;207mcolor207\u001b[0;m  \u001b[0;38;5;224mcolor224\u001b[0;m  \u001b[0;38;5;241mcolor241\u001b[0;m  \u001b[0;38;5;29mcolor29 \u001b[0;m  \u001b[0;38;5;46mcolor46\r\n\u001b[0;38;5;105mcolor105\u001b[0;m  \u001b[0;38;5;122mcolor122\u001b[0;m  \u001b[0;38;5;14mcolor14 \u001b[0;m  \u001b[0;38;5;157mcolor157\u001b[0;m  \u001b[0;38;5;174mcolor174\u001b[0;m  \u001b[0;38;5;191mcolor191\u001b[0;m  \u001b[0;38;5;208mcolor208\u001b[0;m  \u001b[0;38;5;225mcolor225\u001b[0;m  \u001b[0;38;5;242mcolor242\u001b[0;m  \u001b[0;38;5;3mcolor3  \u001b[0;m  \u001b[0;38;5;47mcolor47\r\n\u001b[0;38;5;106mcolor106\u001b[0;m  \u001b[0;38;5;123mcolor123\u001b[0;m  \u001b[0;38;5;140mcolor140\u001b[0;m  \u001b[0;38;5;158mcolor158\u001b[0;m  \u001b[0;38;5;175mcolor175\u001b[0;m  \u001b[0;38;5;192mcolor192\u001b[0;m  \u001b[0;38;5;209mcolor209\u001b[0;m  \u001b[0;38;5;226mcolor226\u001b[0;m  \u001b[0;38;5;243mcolor243\u001b[0;m  \u001b[0;38;5;30mcolor30 \u001b[0;m  \u001b[0;38;5;48mcolor48\r\n\u001b"]
+[8.304377, "o", "[0;38;5;107mcolor107\u001b[0;m  \u001b[0;38;5;124mcolor124\u001b[0;m  \u001b[0;38;5;141mcolor141\u001b[0;m  \u001b[0;38;5;159mcolor159\u001b[0;m  \u001b[0;38;5;176mcolor176\u001b[0;m  \u001b[0;38;5;193mcolor193\u001b[0;m  \u001b[0;38;5;21mcolor21 \u001b[0;m  \u001b[0;38;5;227mcolor227\u001b[0;m  \u001b[0;38;5;244mcolor244\u001b[0;m  \u001b[0;38;5;31mcolor31 \u001b[0;m  \u001b[0;38;5;49mcolor49\r\n\u001b[0;38;5;108mcolor108\u001b[0;m  \u001b[0;38;5;125mcolor125\u001b[0;m  \u001b[0;38;5;142mcolor142\u001b[0;m  \u001b[0;38;5;16mcolor16 \u001b[0;m  \u001b[0;38;5;177mcolor177\u001b[0;m  \u001b[0;38;5;194mcolor194\u001b[0;m  \u001b[0;38;5;210mcolor210\u001b[0;m  \u001b[0;38;5;228mcolor228\u001b[0;m  \u001b[0;38;5;245mcolor245\u001b[0;m  \u001b[0;38;5;32mcolor32 \u001b[0;m  \u001b[0;38;5;5mcolor5 \r\n\u001b[0;38;5;109mcolor109\u001b[0;m  \u001b[0;38;5;126mcolor126\u001b[0;m  \u001b[0;38;5;143mcolor143\u001b[0;m  \u001b[0;38;5;160mcolor160\u001b[0;m  \u001b[0;38;5;178mcolor178\u001b[0;m  \u001b[0;38;5;195mcolor195\u001b[0;m  \u001b[0;38;5;211mcolor211\u001b[0;m  \u001b[0;38;5;229mcolor229\u001b[0;m  \u001b[0;38;5;246mcolor246\u001b[0;m  \u001b[0;38;5;33mcolor33 \u001b[0;m  \u001b[0;38;5;50mcolor50\r\n\u001b[0;38;5;11mcolor11 \u001b[0;m  \u001b[0;38;5;127mcolor127\u001b[0;m  \u001b[0;38;5;144mcolor144\u001b[0;m  \u001b[0;38;5;161mcolor161\u001b[0;m  \u001b[0;38;5;179mcolo"]
+[8.304419, "o", "r179\u001b[0;m  \u001b[0;38;5;196mcolor196\u001b[0;m  \u001b[0;38;5;212mcolor212\u001b[0;m  \u001b[0;38;5;23mcolor23 \u001b[0;m  \u001b[0;38;5;247mcolor247\u001b[0;m  \u001b[0;38;5;34mcolor34 \u001b[0;m  \u001b[0;38;5;51mcolor51\r\n\u001b[0;38;5;110mcolor110\u001b[0;m  \u001b[0;38;5;128mcolor128\u001b[0;m  \u001b[0;38;5;145mcolor145\u001b[0;m  \u001b[0;38;5;162mcolor162\u001b[0;m  \u001b[0;38;5;18mcolor18 \u001b[0;m  \u001b[0;38;5;197mcolor197\u001b[0;m  \u001b[0;38;5;213mcolor213\u001b[0;m  \u001b[0;38;5;230mcolor230\u001b[0;m  \u001b[0;38;5;248mcolor248\u001b[0;m  \u001b[0;38;5;35mcolor35 \u001b[0;m  \u001b[0;38;5;52mcolor52\r\n\u001b[0;38;5;111mcolor111\u001b[0;m  \u001b[0;38;5;129mcolor129\u001b[0;m  \u001b[0;38;5;146mcolor146\u001b[0;m  \u001b[0;38;5;163mcolor163\u001b[0;m  \u001b[0;38;5;180mcolor180\u001b[0;m  \u001b[0;38;5;198mcolor198\u001b[0;m  \u001b[0;38;5;214mcolor214\u001b[0;m  \u001b[0;38;5;231mcolor231\u001b[0;m  \u001b[0;38;5;249mcolor249\u001b[0;m  \u001b[0;38;5;36mcolor36 \u001b[0;m  \u001b[0;38;5;53mcolor53\r\n\u001b[0;38;5;112mcolor112\u001b[0;m  \u001b[0;38;5;13mcolor13 \u001b[0;m  \u001b[0;38;5;147mcolor147\u001b[0;m  \u001b[0;38;5;164mcolor164\u001b[0;m  \u001b[0;38;5;181mcolor181\u001b[0;m  \u001b[0;38;5;199mcolor199\u001b[0;m  \u001b[0;38;5;215mcolor215\u001b[0;m  \u001b[0;38;5;232mcolor232\u001b[0;m  \u001b[0;38;5;25mcolor25 \u001b[0;m  \u001b[0;3"]
+[8.30446, "o", "8;5;37mcolor37 \u001b[0;m  \u001b[0;38;5;54mcolor54\r\n\u001b[0;38;5;113mcolor113\u001b[0;m  \u001b[0;38;5;130mcolor130\u001b[0;m  \u001b[0;38;5;148mcolor148\u001b[0;m  \u001b[0;38;5;165mcolor165\u001b[0;m  \u001b[0;38;5;182mcolor182\u001b[0;m  \u001b[0;38;5;2mcolor2  \u001b[0;m  \u001b[0;38;5;216mcolor216\u001b[0;m  \u001b[0;38;5;233mcolor233\u001b[0;m  \u001b[0;38;5;250mcolor250\u001b[0;m  \u001b[0;38;5;38mcolor38 \u001b[0;m  \u001b[0;38;5;55mcolor55\r\n\u001b[0;38;5;114mcolor114\u001b[0;m  \u001b[0;38;5;131mcolor131\u001b[0;m  \u001b[0;38;5;149mcolor149\u001b[0;m  \u001b[0;38;5;166mcolor166\u001b[0;m  \u001b[0;38;5;183mcolor183\u001b[0;m  \u001b[0;38;5;20mcolor20 \u001b[0;m  \u001b[0;38;5;217mcolor217\u001b[0;m  \u001b[0;38;5;234mcolor234\u001b[0;m  \u001b[0;38;5;251mcolor251\u001b[0;m  \u001b[0;38;5;39mcolor39 \u001b[0;m  \u001b[0;38;5;56mcolor56\r\n\u001b[0;7;35m                                                                                        \u001b[0;35m━━━━━━━━━━━━━━━━━━━━\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[8.869421, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[35C\u001b[K\u001b[0;4m1 \r\n\r\n\u001b[0;m\u001b[K\u001b[0;38;5;0mcolor0  \u001b[0;m  \u001b[0;38;5;115mcolor115\u001b[0;m  \u001b[0;38;5;132mcolor132\u001b[0;m  \u001b[0;38;5;15mcolor15 \u001b[0;m  \u001b[0;38;5;167mcolor167\u001b[0;m  \u001b[0;38;5;184mcolor184\u001b[0;m  \u001b[0;38;5;200mcolor200\u001b[0;m  \u001b[0;38;5;218mcolor218\u001b[0;m  \u001b[0;38;5;235mcolor235\u001b[0;m  \u001b[0;38;5;252mcolor252\u001b[0;m  \u001b[0;38;5;4mcolor4 \r\n\u001b[0;m\u001b[K\u001b[0;7;38;5;1mcolor1  \u001b[0;m  \u001b[0;38;5;116mcolor116\u001b[0;m  \u001b[0;38;5;133mcolor133\u001b[0;m  \u001b[0;38;5;150mcolor150\u001b[0;m  \u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.347917, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m16 \r\n\r\n\r\n\u001b[0;m\u001b[K\u001b[0;38;5;1mcolor1  \u001b[0;m  \u001b[0;7;38;5;116mcolor116\u001b[0;m  \u001b[0;38;5;133mcolor133\u001b[0;m  \u001b[0;38;5;150mcolor150\u001b[0;m  \u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.531192, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m33 \r\n\r\n\r\n\u001b[10C\u001b[0;m\u001b[K\u001b[0;38;5;116mcolor116\u001b[0;m  \u001b[0;7;38;5;133mcolor133\u001b[0;m  \u001b[0;38;5;150mcolor150\u001b[0;m  \u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.669986, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m50 \r\n\r\n\r\n\u001b[20C\u001b[0;m\u001b[K\u001b[0;38;5;133mcolor133\u001b[0;m  \u001b[0;7;38;5;150mcolor150\u001b[0;m  \u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.673014, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.825612, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m68 \r\n\r\n\r\n\u001b[30C\u001b[0;m\u001b[K\u001b[0;38;5;150mcolor150\u001b[0;m  \u001b[0;7;38;5;168mcolor168\u001b[0;m  \u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[9.970559, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m85 \r\n\r\n\r\n\u001b[40C\u001b[0;m\u001b[K\u001b[0;38;5;168mcolor168\u001b[0;m  \u001b[0;7;38;5;185mcolor185\u001b[0;m  \u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[10.116085, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[35C\u001b[K\u001b[0;4m201 \r\n\r\n\r\n\u001b[50C\u001b[0;m\u001b[K\u001b[0;38;5;185mcolor185\u001b[0;m  \u001b[0;7;38;5;201mcolor201\u001b[0;m  \u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[10.273429, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m19 \r\n\r\n\r\n\u001b[60C\u001b[0;m\u001b[K\u001b[0;38;5;201mcolor201\u001b[0;m  \u001b[0;7;38;5;219mcolor219\u001b[0;m  \u001b[0;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[10.276877, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[20A\r\u001b[22C\u001b[?25h"]
+[10.434808, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[36C\u001b[K\u001b[0;4m36 \r\n\r\n\r\n\u001b[70C\u001b[0;m\u001b[K\u001b[0;38;5;219mcolor219\u001b[0;m  \u001b[0;7;38;5;236mcolor236\u001b[0;m  \u001b[0;38;5;253mcolor253\u001b[0;m  \u001b[0;38;5;40mcolor40\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[0;m\u001b[20A\r\u001b[22C\u001b[?25h"]
+[10.938735, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[30C\u001b[Kcolor236 \r\n\u001b[J\u001b[A\r\u001b[39C\u001b[?25h"]
+[10.938814, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[39C\u001b[?25h"]
+[12.054156, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h"]
+[12.054838, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[12.074082, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[12.074266, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"]
+[12.439417, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"]
+[12.439527, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"]
+[12.666213, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"]
+[12.861509, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"]
+[12.989193, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h"]
+[13.116361, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]
diff --git a/docs/src/carapace/defaultActions/actionStyles.md b/docs/src/carapace/defaultActions/actionStyles.md
new file mode 100644
index 0000000..ec8407d
--- /dev/null
+++ b/docs/src/carapace/defaultActions/actionStyles.md
@@ -0,0 +1,8 @@
+# ActionStyles
+
+[`ActionStyles`] completes styles.
+
+![](./actionStyles.cast)
+
+
+[`ActionStyles`]:https://pkg.go.dev/github.com/rsteube/carapace#ActionStyles
diff --git a/docs/src/carapace/defaultActions/actionValues.md b/docs/src/carapace/defaultActions/actionValues.md
index 856947c..1b33325 100644
--- a/docs/src/carapace/defaultActions/actionValues.md
+++ b/docs/src/carapace/defaultActions/actionValues.md
@@ -3,7 +3,11 @@
 [`ActionValues`] completes values.
 
 ```go
-carapace.ActionValues("first", "second", "third")
+carapace.ActionValues(
+	"first",
+	"second",
+	"third"
+)
 ```
 
 ![](./actionValues.cast)
diff --git a/docs/src/carapace/group.cast b/docs/src/carapace/group.cast
new file mode 100644
index 0000000..ac6e420
--- /dev/null
+++ b/docs/src/carapace/group.cast
@@ -0,0 +1,24 @@
+{"version": 2, "width": 108, "height": 24, "timestamp": 1688591971, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
+[0.081735, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                                                           \r \r"]
+[0.09581, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1;36mcarapace\u001b[0m on \u001b[1;35m \u001b[0m\u001b[1;35mdoc-defaultactions\u001b[0m \u001b[1;31m[\u001b[0m\u001b[1;31m$\u001b[0m\u001b[1;31m!\u001b[0m\u001b[1;31m?\u001b[0m\u001b[1;31m]\u001b[0m via \u001b[1;36m🐹 \u001b[0m\u001b[1;36mv1.20.4\u001b[0m\u001b[1;36m \u001b[0m\r\n\u001b[1;37mzsh\u001b[0m \u001b[1;32m❯\u001b[0m \u001b[K\u001b[?2004h"]
+[0.663777, "o", "e"]
+[0.888264, "o", "\bex"]
+[1.05181, "o", "a"]
+[1.22449, "o", "m"]
+[1.272463, "o", "p"]
+[1.428812, "o", "l"]
+[1.462063, "o", "e"]
+[1.564603, "o", " "]
+[1.739896, "o", "g"]
+[1.893783, "o", "r"]
+[2.048694, "o", "oup "]
+[2.883212, "o", "sub"]
+[3.383571, "o", "\u0007\r\r\n"]
+[3.383814, "o", "\u001b[2;37mCompleting main commands\u001b[m\r\n\u001b[0m\u001b[34msub1\u001b[0m  \u001b[34msub2\u001b[0m\r\n\u001b[2;37mCompleting other commands\u001b[m\r\n\u001b[0m\u001b[msub5\u001b[0m\r\n\u001b[2;37mCompleting setup commands\u001b[m\r\n\u001b[J\u001b[0m\u001b[33msub3\u001b[0m  \u001b[J\u001b[33msub4\u001b[0m\u001b[J\u001b[6A\u001b[0m\u001b[27m\u001b[24m\r\u001b[6Cexample group sub\u001b[K"]
+[5.882125, "o", "\u001b[?2004l\r\r\n\u001b[J\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                                                           \r \r"]
+[5.900029, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1;36mcarapace\u001b[0m on \u001b[1;35m \u001b[0m\u001b[1;35mdoc-defaultactions\u001b[0m \u001b[1;31m[\u001b[0m\u001b[1;31m$\u001b[0m\u001b[1;31m!\u001b[0m\u001b[1;31m?\u001b[0m\u001b[1;31m]\u001b[0m via \u001b[1;36m🐹 \u001b[0m\u001b[1;36mv1.20.4\u001b[0m\u001b[1;36m \u001b[0m\r\n\u001b[1;37mzsh\u001b[0m \u001b[1;31m❯\u001b[0m \u001b[K\u001b[?2004h"]
+[6.111059, "o", "e"]
+[6.313497, "o", "\bex"]
+[6.366921, "o", "i"]
+[6.552701, "o", "t"]
+[6.631842, "o", "\u001b[?2004l\r\r\n"]
diff --git a/docs/src/carapace/group.md b/docs/src/carapace/group.md
index c0101d8..87e3164 100644
--- a/docs/src/carapace/group.md
+++ b/docs/src/carapace/group.md
@@ -3,55 +3,21 @@
 [Command Groups] are implicitly used as `tag` for commands.
 
 ```go
-func init() {
-	carapace.Gen(rootCmd).Standalone()
+groupCmd.AddGroup(
+	&cobra.Group{ID: "main", Title: "Main Commands"},
+	&cobra.Group{ID: "setup", Title: "Setup Commands"},
+)
 
-	rootCmd.AddGroup(
-		&cobra.Group{ID: "main", Title: "Main Commands"},
-		&cobra.Group{ID: "other", Title: "Other Commands"},
-	)
-	rootCmd.AddCommand(
-		&cobra.Command{Use: "sub1", GroupID: "main", Run: func(cmd *cobra.Command, args []string) {}},
-		&cobra.Command{Use: "sub2", GroupID: "main", Run: func(cmd *cobra.Command, args []string) {}},
-		&cobra.Command{Use: "sub3", GroupID: "other", Run: func(cmd *cobra.Command, args []string) {}},
-		&cobra.Command{Use: "sub4", GroupID: "other", Run: func(cmd *cobra.Command, args []string) {}},
-		&cobra.Command{Use: "sub5", Run: func(cmd *cobra.Command, args []string) {}},
-	)
-}
+run := func(cmd *cobra.Command, args []string) {}
+groupCmd.AddCommand(
+	&cobra.Command{Use: "sub1", GroupID: "main", Run: run},
+	&cobra.Command{Use: "sub2", GroupID: "main", Run: run},
+	&cobra.Command{Use: "sub3", GroupID: "setup", Run: run},
+	&cobra.Command{Use: "sub4", GroupID: "setup", Run: run},
+	&cobra.Command{Use: "sub5", Run: run},
+)
 ```
 
-```json
-{
-  "Version": "v0.26.5",
-  "Nospace": "",
-  "RawValues": [
-    {
-      "Value": "sub1",
-      "Display": "sub1",
-      "Tag": "main commands"
-    },
-    {
-      "Value": "sub2",
-      "Display": "sub2",
-      "Tag": "main commands"
-    },
-    {
-      "Value": "sub3",
-      "Display": "sub3",
-      "Tag": "other commands"
-    },
-    {
-      "Value": "sub4",
-      "Display": "sub4",
-      "Tag": "other commands"
-    },
-    {
-      "Value": "sub5",
-      "Display": "sub5",
-      "Tag": "additional commands"
-    }
-  ]
-}
-```
+![](./group.cast)
 
 [Command Groups]:https://github.com/spf13/cobra/blob/main/site/content/user_guide.md#grouping-commands-in-help
\ No newline at end of file
diff --git a/example/cmd/action.go b/example/cmd/action.go
index 72b2ae8..f6972a7 100644
--- a/example/cmd/action.go
+++ b/example/cmd/action.go
@@ -1,6 +1,7 @@
 package cmd
 
 import (
+	"os/exec"
 	"strings"
 
 	"github.com/rsteube/carapace"
@@ -21,7 +22,8 @@ func init() {
 
 	actionCmd.Flags().String("callback", "", "ActionCallback()")
 	actionCmd.Flags().String("directories", "", "ActionDirectories()")
-	actionCmd.Flags().String("exec-command", "", "ActionExecCommand()")
+	actionCmd.Flags().String("execcommand", "", "ActionExecCommand()")
+	actionCmd.Flags().String("execcommandE", "", "ActionExecCommand()")
 	actionCmd.Flags().String("executables", "", "ActionExecutables()")
 	actionCmd.Flags().String("files", "", "ActionFiles()")
 	actionCmd.Flags().String("files-filtered", "", "ActionFiles(\".md\", \"go.mod\", \"go.sum\")")
@@ -30,6 +32,8 @@ func init() {
 	actionCmd.Flags().String("message-multiple", "", "ActionMessage()")
 	actionCmd.Flags().String("multiparts", "", "ActionMultiParts()")
 	actionCmd.Flags().String("multiparts-nested", "", "ActionMultiParts(...ActionMultiParts...)")
+	actionCmd.Flags().String("styles", "", "ActionStyles()")
+	actionCmd.Flags().String("styleconfig", "", "ActionStyleConfig()")
 	actionCmd.Flags().String("styled-values", "", "ActionStyledValues()")
 	actionCmd.Flags().String("styled-values-described", "", "ActionStyledValuesDescribed()")
 	actionCmd.Flags().String("values", "", "ActionValues()")
@@ -43,10 +47,19 @@ func init() {
 			return carapace.ActionMessage("values flag is not set")
 		}),
 		"directories": carapace.ActionDirectories(),
-		"exec-command": carapace.ActionExecCommand("git", "remote")(func(output []byte) carapace.Action {
+		"execcommand": carapace.ActionExecCommand("git", "remote")(func(output []byte) carapace.Action {
 			lines := strings.Split(string(output), "\n")
 			return carapace.ActionValues(lines[:len(lines)-1]...)
 		}),
+		"execcommandE": carapace.ActionExecCommandE("false")(func(output []byte, err error) carapace.Action {
+			if err != nil {
+				if exitErr, ok := err.(*exec.ExitError); ok {
+					return carapace.ActionMessage("failed with %v", exitErr.ExitCode())
+				}
+				return carapace.ActionMessage(err.Error())
+			}
+			return carapace.ActionValues()
+		}),
 		"executables":    carapace.ActionExecutables(),
 		"files":          carapace.ActionFiles(),
 		"files-filtered": carapace.ActionFiles(".md", "go.mod", "go.sum"),
@@ -113,6 +126,8 @@ func init() {
 				}
 			})
 		}),
+		"styles":      carapace.ActionStyles(),
+		"styleconfig": carapace.ActionStyleConfig(),
 		"styled-values": carapace.ActionStyledValues(
 			"first", style.Default,
 			"second", style.Blue,
diff --git a/example/cmd/group.go b/example/cmd/group.go
new file mode 100644
index 0000000..411785d
--- /dev/null
+++ b/example/cmd/group.go
@@ -0,0 +1,32 @@
+package cmd
+
+import (
+	"github.com/rsteube/carapace"
+	"github.com/spf13/cobra"
+)
+
+var groupCmd = &cobra.Command{
+	Use:   "group",
+	Short: "group example",
+	Run:   func(cmd *cobra.Command, args []string) {},
+}
+
+func init() {
+	carapace.Gen(groupCmd).Standalone()
+
+	rootCmd.AddCommand(groupCmd)
+
+	groupCmd.AddGroup(
+		&cobra.Group{ID: "main", Title: "Main Commands"},
+		&cobra.Group{ID: "setup", Title: "Setup Commands"},
+	)
+
+	run := func(cmd *cobra.Command, args []string) {}
+	groupCmd.AddCommand(
+		&cobra.Command{Use: "sub1", GroupID: "main", Run: run},
+		&cobra.Command{Use: "sub2", GroupID: "main", Run: run},
+		&cobra.Command{Use: "sub3", GroupID: "setup", Run: run},
+		&cobra.Command{Use: "sub4", GroupID: "setup", Run: run},
+		&cobra.Command{Use: "sub5", Run: run},
+	)
+}
diff --git a/example/cmd/modifier.go b/example/cmd/modifier.go
index e9b775c..32d90df 100644
--- a/example/cmd/modifier.go
+++ b/example/cmd/modifier.go
@@ -64,16 +64,18 @@ func init() {
 		"cache": carapace.ActionCallback(func(c carapace.Context) carapace.Action {
 			return carapace.ActionValues(
 				time.Now().Format("15:04:05"),
-			).Cache(5 * time.Second)
-		}),
+			)
+		}).Cache(5 * time.Second),
 		"cache-key": carapace.ActionMultiParts("/", func(c carapace.Context) carapace.Action {
 			switch len(c.Parts) {
 			case 0:
 				return carapace.ActionValues("one", "two").Suffix("/")
 			case 1:
-				return carapace.ActionValues(
-					time.Now().Format("15:04:05"),
-				).Cache(10*time.Second, cache.String(c.Parts[0]))
+				return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
+					return carapace.ActionValues(
+						time.Now().Format("15:04:05"),
+					)
+				}).Cache(10*time.Second, cache.String(c.Parts[0]))
 			default:
 				return carapace.ActionValues()
 			}
@@ -87,11 +89,14 @@ func init() {
 		).Filter([]string{"2", "4"}),
 		"list": carapace.ActionValues("one", "two", "three").List(","),
 		"invoke": carapace.ActionCallback(func(c carapace.Context) carapace.Action {
-			if !strings.HasPrefix(c.Value, "file://") {
-				return carapace.ActionValues("file://").NoSpace()
+			switch {
+			case strings.HasPrefix(c.Value, "file://"):
+				c.Value = strings.TrimPrefix(c.Value, "file://")
+			case strings.HasPrefix("file://", c.Value):
+				c.Value = ""
+			default:
+				return carapace.ActionValues()
 			}
-
-			c.Value = strings.TrimPrefix(c.Value, "file://")
 			return carapace.ActionFiles().Invoke(c).Prefix("file://").ToA()
 		}),
 		"nospace": carapace.ActionValues(
@@ -99,27 +104,10 @@ func init() {
 			"two/",
 			"three",
 		).NoSpace(',', '/'),
-		"timeout": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action {
-			switch len(c.Parts) {
-			case 0:
-				return carapace.ActionValuesDescribed(
-					"1s", "within timeout",
-					"3s", "exceeding timeout",
-				).Suffix(":")
-			case 1:
-				d, err := time.ParseDuration(c.Parts[0])
-				if err != nil {
-					return carapace.ActionMessage(err.Error())
-				}
-
-				return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
-					time.Sleep(d)
-					return carapace.ActionValues("within timeout")
-				}).Timeout(2*time.Second, carapace.ActionMessage("timeout exceeded"))
-			default:
-				return carapace.ActionValues()
-			}
-		}),
+		"timeout": carapace.ActionCallback(func(c carapace.Context) carapace.Action {
+			time.Sleep(3 * time.Second)
+			return carapace.ActionValues("within timeout")
+		}).Timeout(2*time.Second, carapace.ActionMessage("timeout exceeded")),
 		"multiparts": carapace.ActionValues(
 			"dir/subdir1/fileA.txt",
 			"dir/subdir1/fileB.txt",


Test patch:
diff --git a/example/cmd/action_test.go b/example/cmd/action_test.go
index 0c2b69c..83acdc6 100644
--- a/example/cmd/action_test.go
+++ b/example/cmd/action_test.go
@@ -43,7 +43,7 @@ func TestAction(t *testing.T) {
 				NoSpace('/').
 				Usage("ActionDirectories()"))
 
-		s.Run("action", "--exec-command", "").
+		s.Run("action", "--execcommand", "").
 			Expect(carapace.ActionValues("origin", "fork").
 				Usage("ActionExecCommand()"))
 
diff --git a/example/cmd/modifier_test.go b/example/cmd/modifier_test.go
index 5d37c6b..cdf7efd 100644
--- a/example/cmd/modifier_test.go
+++ b/example/cmd/modifier_test.go
@@ -53,15 +53,8 @@ func TestShift(t *testing.T) {
 
 func TestTimeout(t *testing.T) {
 	sandbox.Package(t, "github.com/rsteube/carapace/example")(func(s *sandbox.Sandbox) {
-		s.Run("modifier", "--timeout", "1s:").
-			Expect(carapace.ActionValues("within timeout").
-				Prefix("1s:").
-				NoSpace(':').
-				Usage("Timeout()"))
-
-		s.Run("modifier", "--timeout", "3s:").
+		s.Run("modifier", "--timeout", "").
 			Expect(carapace.ActionMessage("timeout exceeded").
-				NoSpace(':').
 				Usage("Timeout()"))
 	})
 }
diff --git a/example/cmd/root_test.go b/example/cmd/root_test.go
index 7315262..09cfc27 100644
--- a/example/cmd/root_test.go
+++ b/example/cmd/root_test.go
@@ -73,6 +73,7 @@ func TestRoot(t *testing.T) {
 				).Style(style.Magenta).Tag("test commands"),
 				carapace.ActionValuesDescribed(
 					"completion", "Generate the autocompletion script for the specified shell",
+					"group", "group example",
 					"help", "Help about any command",
 					"interspersed", "interspersed example",
 					"multiparts", "multiparts example",