Skip to content

Instantly share code, notes, and snippets.

@Delta456
Created November 16, 2020 08:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Delta456/1bbbd21a2fc082f746ca4aec32db0962 to your computer and use it in GitHub Desktop.
Save Delta456/1bbbd21a2fc082f746ca4aec32db0962 to your computer and use it in GitHub Desktop.
import os
fn C.execvp(file charptr, argv &charptr) int
fn main() {
final_editor_cmd := os.file_name(os.args[0])[1..]
if os.args.len < 2 {
eprintln('Usage: `v$final_editor_cmd FILE:LINE: ...`')
exit(1)
}
mut res := []string{}
for x in os.args[1..] {
parts := x.split(':')
match parts.len {
0 { res << x }
1 { res << parts[0] }
else { match final_editor_cmd {
'kate' { res << [parts[0], '--line', parts[1]] }
'jed' { res << [parts[0], '-g', parts[1]] }
'vim', 'emacs' { res << ['+${parts[1]}', parts[0]] }
else { res << parts[0] }
} }
}
}
mut a := []charptr{}
a << final_editor_cmd.str
for i in 0 .. res.len {
a << res[i].str
}
a << charptr(0)
C.execvp(final_editor_cmd.str, a.data)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment