You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const utils_1 = require("./utils");
exports.default = (editor, fileName, lineNumber, colNumber) => {
const editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, '');
const system = utils_1.getOS();
switch (editorBasename) {
case 'atom':
case 'Atom':
case 'Atom Beta':
case 'subl':
case 'sublime':
case 'sublime_text':
return [`${fileName}:${lineNumber}:${colNumber}`];
case 'wstorm':
case 'charm':
return [`${fileName}:${lineNumber}`];
case 'notepad++':
return [`-n${lineNumber}`, `-c${colNumber}`, fileName];
case 'vim':
case 'mvim':
case 'joe':
case 'gvim':
return [`+${lineNumber}`, fileName];
case 'emacs':
case 'emacsclient':
return [`+${lineNumber}:${colNumber}`, fileName];
case 'rmate':
case 'mate':
case 'mine':
return ['--line', lineNumber, fileName];
case 'code':
case 'Code':
case 'code-insiders':
case 'Code - Insiders': {
if (system === 'linux') {
return ['-r', '-g', '--user-data-dir', path.dirname(fileName), fileName];
}
return ['-r', '-g', `${fileName}:${lineNumber}:${colNumber}`];
}
case 'appcode':
case 'clion':
case 'clion64':
case 'idea':
case 'idea64':
case 'phpstorm':
case 'phpstorm64':
case 'pycharm':
case 'pycharm64':
case 'rubymine':
case 'rubymine64':
case 'webstorm':
case 'webstorm64':
case 'goland':
case 'goland64':
return ['--line', lineNumber, fileName];
}
// For all others, drop the lineNumber until we have
// a mapping above, since providing the lineNumber incorrectly
// can result in errors or confusing behavior.
return [fileName];
};