# encoding: utf-8 STDOUT.sync = true STDERR.sync = true require 'pathname' at_exit do if (e = $!) && !e.instance_of?(SystemExit) require "#{ENV['TM_SUPPORT_PATH']}/lib/escape" require "cgi" io = IO.for_fd(ENV['TM_ERROR_FD'].to_i) io.write "
\n" io.write "

#{e.class.name}: #{CGI.escapeHTML e.message.sub(/`(\w+)'/, '‘\1’').sub(/ -- /, ' — ')}

\n" io.write "
\n" e.backtrace.each do |b| if b =~ /(.*?):(\d+)(?::in\s*`(.*?)')?/ then file, line, method = $1, $2, $3 url, display_name = '', 'untitled document'; if file != '-' && File.exists?(file) && !ENV['TM_SCRIPT_IS_UNTITLED'] then file = Pathname.new(file).realpath.to_s url = '&url=file://' + e_url(file) display_name = File.basename(file) end io << "\n\n" end end io.write "
" io << (method ? "method #{CGI::escapeHTML method}" : 'at top level') io << "in #{CGI::escapeHTML display_name} at line #{line}
" io.flush exit! end end