tell application "Terminal"
        -- we look for <= 2 because Emacs --daemon seems to always have an entry in visibile-frame-list even if there isn't
        set frameVisible to do shell script "/Applications/ -e '(<= 2 (length (visible-frame-list)))'"
        if frameVisible is not "t" then
            -- there is a not a visible frame, launch one
            do shell script "/Applications/ -c -n"
        end if
    on error
        -- daemon is not running, start the daemon and open a frame
        do shell script "/Applications/ --daemon"
        do shell script "/Applications/ -c -n"
    end try
end tell
-- bring the visible frame to the front
tell application "Emacs" to activate