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.
59 lines
1.6 KiB
59 lines
1.6 KiB
const path = require('path') |
|
|
|
// normalize file/line numbers into command line args for specific editors |
|
module.exports = function getArgumentsForPosition ( |
|
editor, |
|
fileName, |
|
lineNumber, |
|
columnNumber = 1 |
|
) { |
|
const editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, '') |
|
switch (editorBasename) { |
|
case 'atom': |
|
case 'Atom': |
|
case 'Atom Beta': |
|
case 'subl': |
|
case 'sublime': |
|
case 'sublime_text': |
|
case 'wstorm': |
|
case 'charm': |
|
return [`${fileName}:${lineNumber}:${columnNumber}`] |
|
case 'notepad++': |
|
return ['-n' + lineNumber, fileName] |
|
case 'vim': |
|
case 'mvim': |
|
return [`+call cursor(${lineNumber}, ${columnNumber})`, fileName] |
|
case 'joe': |
|
return ['+' + `${lineNumber}`, fileName] |
|
case 'emacs': |
|
case 'emacsclient': |
|
return [`+${lineNumber}:${columnNumber}`, fileName] |
|
case 'rmate': |
|
case 'mate': |
|
case 'mine': |
|
return ['--line', lineNumber, fileName] |
|
case 'code': |
|
case 'code-insiders': |
|
case 'Code': |
|
return ['-r', '-g', `${fileName}:${lineNumber}:${columnNumber}`] |
|
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': |
|
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] |
|
}
|
|
|