get-args.js 1.9 KB

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