Skip to content

Instantly share code, notes, and snippets.

@whitlockjc
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save whitlockjc/6179b8bf7e92a7b62a07 to your computer and use it in GitHub Desktop.
Save whitlockjc/6179b8bf7e92a7b62a07 to your computer and use it in GitHub Desktop.
Better/Working version of TerminalHelper.scpt for Visual Studio Code for Mac
-- This file resides at /Applications/Visual Studio Code.app/Contents/Resources/app/client/vs/workbench/contrib/debug/bin/TerminalHelper.scpt
on run argv
set working_dir to missing value
set runtimeArgs to missing value
set runtimeName to missing value
set programArgs to missing value
set env_vars to ""
repeat with i from 1 to (count of argv)
set a to (item i of argv)
if a = "-w" then
set i to i + 1
set working_dir to quoted form of (item i of argv)
else if a = "-r" then
set i to i + 1
set runtime to quoted form of (item i of argv)
else if a = "-ra" then
set i to i + 1
set runtimeArgs to (item i of argv)
else if a = "-rn" then
set i to i + 1
set runtimeName to (item i of argv)
else if a = "-p" then
set i to i + 1
set program to quoted form of (item i of argv)
else if a = "-pa" then
set i to i + 1
set programArgs to (item i of argv)
else if a = "-e" then
set i to i + 1
set env_vars to env_vars & " " & quoted form of (item i of argv)
end if
end repeat
set cmd to ""
if working_dir missing value then
set cmd to "cd " & working_dir & "; "
end if
if env_vars "" then
set cmd to cmd & "env" & env_vars
end if
set cmd to cmd & " " & runtime
if runtimeArgs missing value then
set cmd to cmd & " " & runtimeArgs
end if
set cmd to cmd & " " & program
if programArgs missing value then
set cmd to cmd & " " & programArgs
end if
tell application "Terminal"
activate
set targetWindow to front window -- Default to the front window
set targetTab to selected tab of targetWindow -- Default to the current tab
if targetWindow null then
-- Create a new tab if the current window is busy
if targetTab is busy then
-- Delay required if/when you have to switch to a fullscreen Terminal.app instance since the new tab command will not fire in Terminal.app
delay 0.5
set tabCount to count of every tab in targetWindow
-- Create a new tab
tell application "System Events" to keystroke "t" using command down
-- Wait for the new tab to be created
repeat while (count of every tab in targetWindow) = tabCount
delay 0.1
end repeat
set targetTab to selected tab of targetWindow
end if
do script cmd in targetTab
else
set targetWindow to (do script cmd)
end if
set dev to tty of targetWindow
if runtimeName missing value then
-- find the "process" that runs under the given tty and remember its process id
set pid to ""
repeat 10 times
set pid to do shell script "ps -c -t " & dev & " | awk '$4==\"" & runtimeName & "\" { print $1 }'"
if pid "" then
exit repeat
end if
delay 0.5
end repeat
if pid "" then
do shell script "echo " & pid
end if
end if
end tell
end run
@eogas
Copy link

eogas commented May 24, 2015

Major props! I had the same issue and I swapped this out and I am now able to debug. To improve discoverability for this gist, the exact error I was seeing in the app was "could not launch 'node' in debug mode". Hopefully MS gets this fixed for the next release.

EDIT: I should note for any others coming across this page, I had to replace all of the 'not equals' signs with 'is not equal to', as they didn't come over nicely from the gist.

EDIT: Issue logged https://code.visualstudio.com/issues/detail/16834

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment