| 1 | const path = require('path')
|
|---|
| 2 |
|
|---|
| 3 | // normalize file/line numbers into command line args for specific editors
|
|---|
| 4 | module.exports = function getArgumentsForPosition (
|
|---|
| 5 | editor,
|
|---|
| 6 | fileName,
|
|---|
| 7 | lineNumber,
|
|---|
| 8 | columnNumber = 1
|
|---|
| 9 | ) {
|
|---|
| 10 | const editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, '')
|
|---|
| 11 | switch (editorBasename) {
|
|---|
| 12 | case 'atom':
|
|---|
| 13 | case 'Atom':
|
|---|
| 14 | case 'Atom Beta':
|
|---|
| 15 | case 'subl':
|
|---|
| 16 | case 'sublime':
|
|---|
| 17 | case 'sublime_text':
|
|---|
| 18 | case 'wstorm':
|
|---|
| 19 | case 'charm':
|
|---|
| 20 | case 'zed':
|
|---|
| 21 | return [`${fileName}:${lineNumber}:${columnNumber}`]
|
|---|
| 22 | case 'notepad++':
|
|---|
| 23 | return ['-n' + lineNumber, '-c' + columnNumber, fileName]
|
|---|
| 24 | case 'vim':
|
|---|
| 25 | case 'mvim':
|
|---|
| 26 | return [`+call cursor(${lineNumber}, ${columnNumber})`, fileName]
|
|---|
| 27 | case 'joe':
|
|---|
| 28 | case 'gvim':
|
|---|
| 29 | return ['+' + `${lineNumber}`, fileName]
|
|---|
| 30 | case 'emacs':
|
|---|
| 31 | case 'emacsclient':
|
|---|
| 32 | return [`+${lineNumber}:${columnNumber}`, fileName]
|
|---|
| 33 | case 'rmate':
|
|---|
| 34 | case 'mate':
|
|---|
| 35 | case 'mine':
|
|---|
| 36 | return ['--line', lineNumber, fileName]
|
|---|
| 37 | case 'code':
|
|---|
| 38 | case 'Code':
|
|---|
| 39 | case 'code-insiders':
|
|---|
| 40 | case 'Code - Insiders':
|
|---|
| 41 | case 'codium':
|
|---|
| 42 | case 'trae':
|
|---|
| 43 | case 'antigravity':
|
|---|
| 44 | case 'cursor':
|
|---|
| 45 | case 'vscodium':
|
|---|
| 46 | case 'VSCodium':
|
|---|
| 47 | return ['-r', '-g', `${fileName}:${lineNumber}:${columnNumber}`]
|
|---|
| 48 | case 'appcode':
|
|---|
| 49 | case 'clion':
|
|---|
| 50 | case 'clion64':
|
|---|
| 51 | case 'idea':
|
|---|
| 52 | case 'idea64':
|
|---|
| 53 | case 'phpstorm':
|
|---|
| 54 | case 'phpstorm64':
|
|---|
| 55 | case 'pycharm':
|
|---|
| 56 | case 'pycharm64':
|
|---|
| 57 | case 'rubymine':
|
|---|
| 58 | case 'rubymine64':
|
|---|
| 59 | case 'webstorm':
|
|---|
| 60 | case 'webstorm64':
|
|---|
| 61 | case 'goland':
|
|---|
| 62 | case 'goland64':
|
|---|
| 63 | case 'rider':
|
|---|
| 64 | case 'rider64':
|
|---|
| 65 | return ['--line', lineNumber, '--column', columnNumber, fileName]
|
|---|
| 66 | }
|
|---|
| 67 |
|
|---|
| 68 | if (process.env.LAUNCH_EDITOR) {
|
|---|
| 69 | return [fileName, lineNumber, columnNumber]
|
|---|
| 70 | }
|
|---|
| 71 |
|
|---|
| 72 | // For all others, drop the lineNumber until we have
|
|---|
| 73 | // a mapping above, since providing the lineNumber incorrectly
|
|---|
| 74 | // can result in errors or confusing behavior.
|
|---|
| 75 | return [fileName]
|
|---|
| 76 | }
|
|---|