Skip to content

Commit

Permalink
Add WSL support to launchEditor utility (facebook#2282)
Browse files Browse the repository at this point in the history
  • Loading branch information
noinkling authored and romaindso committed Jul 10, 2017
1 parent c11c5ab commit c79b2ba
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion packages/react-dev-utils/launchEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
var fs = require('fs');
var path = require('path');
var child_process = require('child_process');
var os = require('os');
var chalk = require('chalk');
var shellQuote = require('shell-quote');

Expand Down Expand Up @@ -43,7 +44,8 @@ function addWorkspaceToArgumentsIfExists(args, workspace) {
}

function getArgumentsForLineNumber(editor, fileName, lineNumber, workspace) {
switch (path.basename(editor)) {
var editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, '');
switch (editorBasename) {
case 'vim':
case 'mvim':
return [fileName, '+' + lineNumber];
Expand Down Expand Up @@ -154,6 +156,20 @@ function launchEditor(fileName, lineNumber) {
return;
}

if (
process.platform === 'linux' &&
fileName.startsWith('/mnt/') &&
/Microsoft/i.test(os.release())
) {
// Assume WSL / "Bash on Ubuntu on Windows" is being used, and
// that the file exists on the Windows file system.
// `os.release()` is "4.4.0-43-Microsoft" in the current release
// build of WSL, see: https://github.com/Microsoft/BashOnWindows/issues/423#issuecomment-221627364
// When a Windows editor is specified, interop functionality can
// handle the path translation, but only if a relative path is used.
fileName = path.relative('', fileName);
}

var workspace = null;
if (lineNumber) {
args = args.concat(
Expand Down

0 comments on commit c79b2ba

Please sign in to comment.