@@ -95,7 +95,13 @@ function addWorkspaceToArgumentsIfExists(args, workspace) {
95
95
return args ;
96
96
}
97
97
98
- function getArgumentsForLineNumber ( editor , fileName , lineNumber , workspace ) {
98
+ function getArgumentsForLineNumber (
99
+ editor ,
100
+ fileName ,
101
+ lineNumber ,
102
+ colNumber ,
103
+ workspace
104
+ ) {
99
105
const editorBasename = path . basename ( editor ) . replace ( / \. ( e x e | c m d | b a t ) $ / i, '' ) ;
100
106
switch ( editorBasename ) {
101
107
case 'atom' :
@@ -104,25 +110,27 @@ function getArgumentsForLineNumber(editor, fileName, lineNumber, workspace) {
104
110
case 'subl' :
105
111
case 'sublime' :
106
112
case 'sublime_text' :
113
+ return [ fileName + ':' + lineNumber + ':' + colNumber ] ;
107
114
case 'wstorm' :
108
115
case 'charm' :
109
116
return [ fileName + ':' + lineNumber ] ;
110
117
case 'notepad++' :
111
- return [ '-n' + lineNumber , fileName ] ;
118
+ return [ '-n' + lineNumber , '-c' + colNumber , fileName ] ;
112
119
case 'vim' :
113
120
case 'mvim' :
114
121
case 'joe' :
122
+ return [ '+' + lineNumber , fileName ] ;
115
123
case 'emacs' :
116
124
case 'emacsclient' :
117
- return [ '+' + lineNumber , fileName ] ;
125
+ return [ '+' + lineNumber + ':' + colNumber , fileName ] ;
118
126
case 'rmate' :
119
127
case 'mate' :
120
128
case 'mine' :
121
129
return [ '--line' , lineNumber , fileName ] ;
122
130
case 'code' :
123
131
case 'Code' :
124
132
return addWorkspaceToArgumentsIfExists (
125
- [ '-g' , fileName + ':' + lineNumber ] ,
133
+ [ '-g' , fileName + ':' + lineNumber + ':' + colNumber ] ,
126
134
workspace
127
135
) ;
128
136
case 'appcode' :
@@ -245,7 +253,7 @@ function printInstructions(fileName, errorMessage) {
245
253
}
246
254
247
255
let _childProcess = null ;
248
- function launchEditor ( fileName , lineNumber ) {
256
+ function launchEditor ( fileName , lineNumber , colNumber ) {
249
257
if ( ! fs . existsSync ( fileName ) ) {
250
258
return ;
251
259
}
@@ -256,6 +264,10 @@ function launchEditor(fileName, lineNumber) {
256
264
return ;
257
265
}
258
266
267
+ // colNumber is optional, but should be a number
268
+ // default is 1
269
+ colNumber = parseInt ( colNumber , 10 ) || 1 ;
270
+
259
271
let [ editor , ...args ] = guessEditor ( ) ;
260
272
if ( ! editor ) {
261
273
printInstructions ( fileName , null ) ;
@@ -279,7 +291,13 @@ function launchEditor(fileName, lineNumber) {
279
291
let workspace = null ;
280
292
if ( lineNumber ) {
281
293
args = args . concat (
282
- getArgumentsForLineNumber ( editor , fileName , lineNumber , workspace )
294
+ getArgumentsForLineNumber (
295
+ editor ,
296
+ fileName ,
297
+ lineNumber ,
298
+ colNumber ,
299
+ workspace
300
+ )
283
301
) ;
284
302
} else {
285
303
args . push ( fileName ) ;
0 commit comments