From f898ada8e3d25c7d1ea309b487711a4e0a2c07b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?= <marc.cornella@live.com>
Date: Fri, 29 Jun 2018 20:20:56 +0200
Subject: [PATCH] open_command: fix and improve command for WSL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Add double quotes to command so that the next argument isn't
  interpreted as the title for the start command.

- If the first argument is a valid path, convert it to Windows path
  notation. If `wslpath` fails—because it's a path from inside WSL,
  which cannot be converted to Windows path notation— fail with an
  error code.

  This last circumstance will show an error like so:

    wslpath: path: Result not representable
---
 lib/functions.zsh | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/functions.zsh b/lib/functions.zsh
index f448dbce8..dd8311611 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -22,9 +22,10 @@ function open_command() {
   case "$OSTYPE" in
     darwin*)  open_cmd='open' ;;
     cygwin*)  open_cmd='cygstart' ;;
-    linux*)   [[ $(uname -a) =~ "Microsoft" ]] && \
-                open_cmd='cmd.exe /c start' || \
-                open_cmd='xdg-open' ;;
+    linux*)   ! [[ $(uname -a) =~ "Microsoft" ]] && open_cmd='xdg-open' || {
+                open_cmd='cmd.exe /c start ""'
+                [[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 }
+              } ;;
     msys*)    open_cmd='start ""' ;;
     *)        echo "Platform $OSTYPE not supported"
               return 1