123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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]
- }
|