From f898ada8e3d25c7d1ea309b487711a4e0a2c07b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= 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