Browse Source

Add empty string parameter to start command

Otherwise `start` will confuse the first parameter as the title of
a new command prompt if the parameter contains whitespace. That is
because the command to be run will be:

    start "abc def"

which opens a new command prompt window with the title "abc def".
With the added empty string we force the start command to interpret
the passed parameter as the file / command:

    start "" "abc def"

which will be interpreted like `""` is the title and the rest is
the file or command to start.

-------

**NOTE:** this wouldn't be necessary if the start script in msys
was defined differently; that is, if it had the empty string
already incorporated in the script (/usr/bin/start), like so:

```diff
-cmd //c start "${@//&/^&}"
+cmd //c start "" "${@//&/^&}"
```

Notice however that this would make it impossible to use start
setting a different title, so it's probably best to leave it as is.

More info: http://sourceforge.net/p/msys2/tickets/14/

-------

The change `${(z)open_cmd}` is necessary to force zsh to split the
variable by the spaces and interpret it as separate words.

More info: http://zsh.sourceforge.net/FAQ/zshfaq03.html#l17
Marc Cornellà 8 years ago
parent
commit
afdfe2391e
1 changed files with 2 additions and 2 deletions
  1. 2 2
      lib/functions.zsh

+ 2 - 2
lib/functions.zsh

@@ -23,7 +23,7 @@ function open_command() {
     darwin*)  open_cmd="open" ;;
     cygwin*)  open_cmd="cygstart" ;;
     linux*)   open_cmd="xdg-open" ;;
-    msys*)    open_cmd="start" ;;
+    msys*)    open_cmd="start \"\"" ;;
     *)        echo "Platform $OSTYPE not supported"
               return 1
               ;;
@@ -33,7 +33,7 @@ function open_command() {
   if [[ "$OSTYPE" == darwin* ]]; then
     $open_cmd "$@" &>/dev/null
   else
-    nohup $open_cmd "$@" &>/dev/null
+    nohup ${(z)open_cmd} "$@" &>/dev/null
   fi
 }