Added a debugger interface registry to allow debuggers being implemented as plug-ins and removed the defunct Ruby debugger.

Sun, 08 Nov 2015 17:01:39 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 08 Nov 2015 17:01:39 +0100
changeset 4553
a6b2acd1a355
parent 4552
b1ea4ea0190e
child 4554
f3428ddd577c

Added a debugger interface registry to allow debuggers being implemented as plug-ins and removed the defunct Ruby debugger.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
APIs/Python3/eric6.bas file | annotate | diff | comparison | revisions
APIs/Ruby/eric6.api file | annotate | diff | comparison | revisions
APIs/Ruby/eric6.bas file | annotate | diff | comparison | revisions
DebugClients/Ruby/AsyncFile.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/AsyncIO.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/Completer.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/Config.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/DebugClient.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/DebugClientBaseModule.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/DebugClientCapabilities.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/DebugProtocol.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/DebugQuit.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/Debuggee.rb file | annotate | diff | comparison | revisions
DebugClients/Ruby/__init__.rb file | annotate | diff | comparison | revisions
Debugger/DebugServer.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfaceNone.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython3.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfaceRuby.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.AsyncFile.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.AsyncIO.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.Completer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.Config.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.DebugClient.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.DebugClientBaseModule.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.DebugClientCapabilities.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.DebugProtocol.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.DebugQuit.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.Debuggee.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.DebugClients.Ruby.__init__.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebugServer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfacePython3.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfaceRuby.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.DebugClients.Ruby.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.DebugClients.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.Debugger.html file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.qm file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Sat Nov 07 15:54:09 2015 +0100
+++ b/APIs/Python3/eric6.api	Sun Nov 08 17:01:39 2015 +0100
@@ -719,6 +719,7 @@
 eric6.Debugger.DebugServer.DebugServer.passiveDebugStarted?7
 eric6.Debugger.DebugServer.DebugServer.passiveStartUp?4(fn, exc)
 eric6.Debugger.DebugServer.DebugServer.preferencesChanged?4()
+eric6.Debugger.DebugServer.DebugServer.registerDebuggerInterface?4(name, getRegistryData)
 eric6.Debugger.DebugServer.DebugServer.remoteBanner?4()
 eric6.Debugger.DebugServer.DebugServer.remoteBreakpoint?4(fn, line, set, cond=None, temp=False)
 eric6.Debugger.DebugServer.DebugServer.remoteCapabilities?4()
@@ -769,6 +770,7 @@
 eric6.Debugger.DebugServer.DebugServer.signalClientVariables?4(scope, variables)
 eric6.Debugger.DebugServer.DebugServer.signalClientWatchConditionError?4(condition)
 eric6.Debugger.DebugServer.DebugServer.startClient?4(unplanned=True, clType=None, forProject=False, runInConsole=False)
+eric6.Debugger.DebugServer.DebugServer.unregisterDebuggerInterface?4(name)
 eric6.Debugger.DebugServer.DebugServer.utFinished?7
 eric6.Debugger.DebugServer.DebugServer.utPrepared?7
 eric6.Debugger.DebugServer.DebugServer.utStartTest?7
@@ -867,6 +869,7 @@
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemote?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemoteForProject?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone?1(debugServer, passive)
+eric6.Debugger.DebuggerInterfaceNone.createDebuggerInterfaceNone?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.getRegistryData?4()
 eric6.Debugger.DebuggerInterfacePython.ClientDefaultCapabilities?7
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.flush?4()
@@ -909,6 +912,7 @@
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive)
+eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfacePython.getRegistryData?4()
 eric6.Debugger.DebuggerInterfacePython3.ClientDefaultCapabilities?7
 eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.flush?4()
@@ -951,50 +955,8 @@
 eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemote?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemoteForProject?4(port, runInConsole)
 eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3?1(debugServer, passive)
+eric6.Debugger.DebuggerInterfacePython3.createDebuggerInterfacePython3?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfacePython3.getRegistryData?4()
-eric6.Debugger.DebuggerInterfaceRuby.ClientDefaultCapabilities?7
-eric6.Debugger.DebuggerInterfaceRuby.ClientTypeAssociations?7
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.flush?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.getClientCapabilities?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.isConnected?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.newConnection?4(sock)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteBanner?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteBreakpoint?4(fn, line, set, cond=None, temp=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteBreakpointEnable?4(fn, line, enable)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteBreakpointIgnore?4(fn, line, count)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteCapabilities?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteClientSetFilter?4(scope, filter)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteClientVariable?4(scope, filter, var, framenr=0)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteClientVariables?4(scope, filter, framenr=0)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteCompletion?4(text)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteContinue?4(special=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteCoverage?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteEnvironment?4(env)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteEval?4(arg)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteExec?4(stmt)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteProfile?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteRawInput?4(s)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteSetThread?4(tid)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStatement?4(stmt)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStep?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStepOut?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStepOver?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStepQuit?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteThreadList?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteUTRun?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteUTStop?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpoint?4(cond, set, temp=False)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpointEnable?4(cond, enable)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpointIgnore?4(cond, count)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.setCallTraceEnabled?4(on)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.shutdown?4()
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.startRemote?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.startRemoteForProject?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby?1(debugServer, passive)
-eric6.Debugger.DebuggerInterfaceRuby.getRegistryData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.getAddData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.getData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.on_fileButton_clicked?4()
--- a/APIs/Python3/eric6.bas	Sat Nov 07 15:54:09 2015 +0100
+++ b/APIs/Python3/eric6.bas	Sun Nov 08 17:01:39 2015 +0100
@@ -118,7 +118,6 @@
 DebuggerInterfaceNone QObject
 DebuggerInterfacePython QObject
 DebuggerInterfacePython3 QObject
-DebuggerInterfaceRuby QObject
 DebuggerPropertiesDialog QDialog Ui_DebuggerPropertiesDialog
 DebuggerPropertiesReader XMLStreamReaderBase
 DebuggerPropertiesWriter XMLStreamWriterBase
--- a/APIs/Ruby/eric6.api	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-eric6.DebugClients.Ruby.AsyncFile.<<?4(s)
-eric6.DebugClients.Ruby.AsyncFile.AsyncFile.@@maxbuffersize?7
-eric6.DebugClients.Ruby.AsyncFile.AsyncFile.@@maxtries?7
-eric6.DebugClients.Ruby.AsyncFile.AsyncFile.checkMode?4()
-eric6.DebugClients.Ruby.AsyncFile.AsyncFile.initialize?4(mode, name)
-eric6.DebugClients.Ruby.AsyncFile.AsyncFile.nWrite?4()
-eric6.DebugClients.Ruby.AsyncFile.AsyncPendingWrite?4(file)
-eric6.DebugClients.Ruby.AsyncFile.close?4()
-eric6.DebugClients.Ruby.AsyncFile.fileno?4()
-eric6.DebugClients.Ruby.AsyncFile.flush?4()
-eric6.DebugClients.Ruby.AsyncFile.getSock?4()
-eric6.DebugClients.Ruby.AsyncFile.gets?4()
-eric6.DebugClients.Ruby.AsyncFile.isatty?4()
-eric6.DebugClients.Ruby.AsyncFile.pendingWrite?4()
-eric6.DebugClients.Ruby.AsyncFile.read?4(size = -1)
-eric6.DebugClients.Ruby.AsyncFile.readline?4(size = -1)
-eric6.DebugClients.Ruby.AsyncFile.readlines?4(sizehint = -1)
-eric6.DebugClients.Ruby.AsyncFile.seek?4(offset, whence=IO::SEEK_SET)
-eric6.DebugClients.Ruby.AsyncFile.tell?4()
-eric6.DebugClients.Ruby.AsyncFile.write?4(s)
-eric6.DebugClients.Ruby.AsyncFile.writelines?4(list)
-eric6.DebugClients.Ruby.Completer.Completer.Operators?7
-eric6.DebugClients.Ruby.Completer.Completer.ReservedWords?7
-eric6.DebugClients.Ruby.Completer.Completer.complete?4()
-eric6.DebugClients.Ruby.Completer.Completer.initialize?4()
-eric6.DebugClients.Ruby.Completer.Completer.select_message?4(message, candidates, sep = ".")
-eric6.DebugClients.Ruby.Config.ConfigVarTypeStrings?7
-eric6.DebugClients.Ruby.DebugClient.DebugClient.initialize?4()
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasAll?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasCompleter?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasCoverage?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasDebugger?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasInterpreter?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasProfiler?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasShell?7
-eric6.DebugClients.Ruby.DebugClientCapabilities.HasUnittest?7
-eric6.DebugClients.Ruby.DebugProtocol.DebugAddress?7
-eric6.DebugClients.Ruby.DebugProtocol.EOT?7
-eric6.DebugClients.Ruby.DebugProtocol.PassiveStartup?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestBanner?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestBreak?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestBreakEnable?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestBreakIgnore?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestCapabilities?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestCompletion?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestContinue?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestCoverage?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestEnv?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestEval?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestExec?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestLoad?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestOK?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestProfile?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestRun?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestSetFilter?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestShutdown?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestStep?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestStepOut?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestStepOver?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestStepQuit?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestUTPrepare?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestUTRun?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestUTStop?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestVariable?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestVariables?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestWatch?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestWatchEnable?7
-eric6.DebugClients.Ruby.DebugProtocol.RequestWatchIgnore?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseBanner?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseCapabilities?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseClearBreak?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseClearWatch?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseCompletion?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseContinue?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseException?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseExit?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseLine?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseOK?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseRaw?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseSyntax?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTFinished?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTPrepared?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTStartTest?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTStopTest?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTTestErrored?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseUTTestFailed?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseVariable?7
-eric6.DebugClients.Ruby.DebugProtocol.ResponseVariables?7
-eric6.DebugClients.Ruby.Debuggee.Client.eventLoop?4()
-eric6.DebugClients.Ruby.Debuggee.Client.eventPoll?4()
-eric6.DebugClients.Ruby.Debuggee.Client.initialize?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf_clear_breakpoint?4(line)
-eric6.DebugClients.Ruby.Debuggee.Client.printf_clear_watchexpression?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf_excn?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf_exit?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf_line?4()
-eric6.DebugClients.Ruby.Debuggee.Client.printf_scriptExcn?4()
-eric6.DebugClients.Ruby.Debuggee.Client.traceRuby??4()
-eric6.DebugClients.Ruby.Debuggee.Context.clear_suspend?4()
-eric6.DebugClients.Ruby.Debuggee.Context.current_binding?4()
-eric6.DebugClients.Ruby.Debuggee.Context.current_frame?4()
-eric6.DebugClients.Ruby.Debuggee.Context.eventLoop?4()
-eric6.DebugClients.Ruby.Debuggee.Context.eventPoll?4()
-eric6.DebugClients.Ruby.Debuggee.Context.get_binding?4()
-eric6.DebugClients.Ruby.Debuggee.Context.get_frame?4()
-eric6.DebugClients.Ruby.Debuggee.Context.initialize?4()
-eric6.DebugClients.Ruby.Debuggee.Context.set_suspend?4()
-eric6.DebugClients.Ruby.Debuggee.Context.step_continue?4()
-eric6.DebugClients.Ruby.Debuggee.Context.step_out?4()
-eric6.DebugClients.Ruby.Debuggee.Context.step_over?4()
-eric6.DebugClients.Ruby.Debuggee.Context.step_quit?4()
-eric6.DebugClients.Ruby.Debuggee.Context.stop_next?4()
-eric6.DebugClients.Ruby.Debuggee.Context.suspend_all?4()
-eric6.DebugClients.Ruby.Debuggee.Context.traceRuby??4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.MUTEX?7
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.SilentClient?7
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.add_break_point?4(pos, temp = false, cond = nil)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.add_watch_point?4(temp = false)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.attach?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.attached??4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.break_points?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.check_break_points?4(pos, binding_, id)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.check_suspend?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.clear_break_point?4(pos)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.clear_watch_point?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.client?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.context?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.debug_command?4(line, id, binding_)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.debug_silent_eval?4(binding_)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.delete_break_point?4(pos)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.delete_watch_point?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.enable_break_point?4(pos, enable)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.enable_watch_point?4(enable)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.excn_handle?4(line, id, binding_)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.frame_set_pos?4(line)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.ignore_break_point?4(pos, count)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.ignore_watch_point?4(count)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.last_thread?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.quit?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.resume?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.resume_all?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.set_client?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.set_last_thread?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.skip_it??4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.stdout=?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.stdout?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.suspend?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.thnum?4()
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.trace_func?4(file, line, id, binding_, klass)
-eric6.DebugClients.Ruby.Debuggee.DEBUGGER__.waiting?4()
-eric6.DebugClients.Ruby.Debuggee.SilentObject.method_missing?4(*a, &b)
-eric6.DebugClients.Ruby.Debuggee.context?4(thread=Thread.current)
-eric6.DebugClients.Ruby.Debuggee.debug_thread_info?4(input, binding_)
-eric6.DebugClients.Ruby.Debuggee.eventLoop?4()
-eric6.DebugClients.Ruby.Debuggee.eventPoll?4()
-eric6.DebugClients.Ruby.Debuggee.get_thread?4(num)
-eric6.DebugClients.Ruby.Debuggee.interrupt?4()
-eric6.DebugClients.Ruby.Debuggee.make_thread_list?4()
-eric6.DebugClients.Ruby.Debuggee.thread_list?4(num)
-eric6.DebugClients.Ruby.Debuggee.thread_list_all?4()
-eric6.DebugClients.Ruby.Debuggee.traceRuby??4()
--- a/APIs/Ruby/eric6.bas	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-DebugQuit Exception
--- a/DebugClients/Ruby/AsyncFile.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,312 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing an asynchronous file like socket interface for the debugger.
-=end
-
-require 'socket'
-
-require 'DebugProtocol'
-
-def AsyncPendingWrite(file)
-=begin edoc
-Module function to check for data to be written.
-
-@param file The file object to be checked (file)
-@return Flag indicating if there is data wating (int)
-=end
-    begin
-        pending = file.pendingWrite
-    rescue
-        pending = 0
-    end
-    return pending
-end
-
-class AsyncFile
-=begin edoc
-# Class wrapping a socket object with a file interface.
-=end
-    @@maxtries = 10
-    @@maxbuffersize = 1024 * 1024 * 4
-    
-    def initialize(sock, mode, name)
-=begin edoc
-Constructor
-
-@param sock the socket object being wrapped
-@param mode mode of this file (string)
-@param name name of this file (string)
-=end
-        
-        # Initialise the attributes.
-        @closed = false
-        @sock = sock
-        @mode = mode
-        @name = name
-        @nWriteErrors = 0
-
-        @wpending = ''
-    end
-
-    def checkMode(mode)
-=begin edoc
-Private method to check the mode.
-
-This method checks, if an operation is permitted according to
-the mode of the file. If it is not, an IOError is raised.
-
-@param mode the mode to be checked (string)
-=end
-        if mode != @mode
-            raise IOError, '[Errno 9] Bad file descriptor'
-        end
-    end
-
-    def nWrite(n)
-=begin edoc
-Private method to write a specific number of pending bytes.
-
-@param n the number of bytes to be written (int)
-=end
-        if n > 0
-            begin
-                buf = "%s%s" % [@wpending[0...n], EOT]
-                sent = @sock.send(buf, 0)
-                if sent > n
-                    sent -= EOT.length
-                end
-                @wpending = @wpending[sent..-1]
-                @nWriteErrors = 0
-            rescue IOError
-                @nWriteErrors += 1
-                if @nWriteErrors > self.maxtries
-                    raise
-                    # assume that an error that occurs 10 times wont go away
-                end
-            end
-        end
-    end
-
-    def pendingWrite
-=begin edoc
-Public method that returns the number of bytes waiting to be written.
-
-@return the number of bytes to be written (int)
-=end
-        ind = @wpending.rindex("\n")
-        if ind
-            return ind + 1
-        else
-            return 0
-        end
-    end
-
-    def close
-=begin edoc
-Public method to close the file.
-=end
-        if not @closed
-            flush()
-            begin
-                @sock.close()
-            rescue IOError
-            end
-            @closed = true
-        end
-    end
-    
-    def flush
-=begin edoc
-Public method to write all pending bytes.
-=end
-        nWrite(@wpending.length)
-    end
-    
-    def isatty
-=begin edoc
-Public method to indicate whether a tty interface is supported.
-
-@return always false
-=end
-        return false
-    end
-    
-    def fileno
-=begin edoc
-Public method returning the file number.
-
-@return file number (int)
-=end
-        return @sock.fileno()
-    end
-    
-    def getSock
-=begin edoc
-Public method to get the socket object.
-
-@return the socket object
-=end
-        return @sock
-    end
-    
-    def read(size = -1)
-=begin edoc
-Public method to read bytes from this file.
-
-@param size maximum number of bytes to be read (int)
-@return the bytes read (any)
-=end
-        checkMode('r')
-
-        if size < 0
-            size = 20000
-        end
-
-        return @sock.recv(size)
-    end
-    
-    def readline(size = -1)
-=begin edoc
-Public method to read a line from this file.
-
-<b>Note</b>: This method will not block and may return
-only a part of a line if that is all that is available.
-
-@param size maximum number of bytes to be read (int)
-@return one line of text up to size bytes (string)
-=end
-        checkMode('r')
-
-        if size < 0
-            size = 20000
-        end
-
-        # The integration of the debugger client event loop and the connection
-        # to the debugger relies on the two lines of the debugger command being
-        # delivered as two separate events.  Therefore we make sure we only
-        # read a line at a time.
-        line = @sock.recv(size, Socket::MSG_PEEK)
-
-        eol = line.index("\n")
-
-        if eol and eol >= 0
-            size = eol + 1
-        else
-            size = line.length
-        end
-
-        # Now we know how big the line is, read it for real.
-        return @sock.recv(size)
-    end
-    
-    def readlines(sizehint = -1)
-=begin edoc
-Public method to read all lines from this file.
-
-@param sizehint hint of the numbers of bytes to be read (int)
-@return list of lines read (list of strings)
-=end
-        lines = []
-        room = sizehint
-
-        line = readline(room)
-        linelen = line.length
-
-        while linelen > 0
-            lines << line
-
-            if sizehint >= 0
-                room = room - linelen
-
-                if room <= 0
-                    break
-                end
-            end
-
-            line = readline(room)
-            linelen = line.length
-        end
-
-        return lines
-    end
-    
-    def gets()
-=begin edoc
- Public method to read a line from this file.
-=end
-        readline()
-    end
-
-   def seek(offset, whence=IO::SEEK_SET)
-=begin edoc
-Public method to move the filepointer.
-
-@exception IOError This method is not supported and always raises an
-       IOError.
-=end
-        raise IOError, '[Errno 29] Illegal seek'
-    end
-    
-    def tell
-=begin edoc
-Public method to get the filepointer position.
-
-@exception IOError This method is not supported and always raises an
-      IOError.
-=end
-        raise IOError, '[Errno 29] Illegal seek'
-    end
-
-    def <<(s)
-=begin edoc
-Synonym for write(s).
-
-@param s bytes to be written (string)
-=end
-        write(s)
-    end
-
-    def write(s)
-=begin edoc
-Public method to write a string to the file.
-
-@param s bytes to be written (string)
-=end
-        checkMode("w")
-        tries = 0
-        s = s.to_s
-        if @wpending.length == 0
-            @wpending = s.dup
-        elsif @wpending.length + s.length > @@maxbuffersize
-            # flush wpending if too big
-            while @wpending.length > 0
-                # if we have a persistent error in sending the data, an
-                # exception will be raised in nWrite
-                flush
-                tries += 1
-                if tries > @@maxtries
-                    raise IOError, "Too many attempts to send data"
-                end
-            end
-            @wpending = s.dup
-        else
-            @wpending << s
-        end
-        nWrite(pendingWrite())
-    end
-
-    def writelines(list)
-=begin edoc
-Public method to write a list of strings to the file.
-
-@param list the list to be written (list of string)
-=end
-        list.each do |s|
-            write(s)
-        end
-    end
-end
--- a/DebugClients/Ruby/AsyncIO.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing an asynchronous interface for the debugger.
-=end
-
-module AsyncIO
-=begin edoc
-Module implementing asynchronous reading and writing.
-=end
-    def initializeAsyncIO
-=begin edoc
-Function to initialize the module.
-=end
-        disconnect()
-    end
-    
-    def disconnect
-=begin edoc
-Function to disconnect any current connection.
-=end
-        @readfd = nil
-        @writefd = nil
-    end
-    
-    def setDescriptors(rfd, wfd)
-=begin edoc
-Function called to set the descriptors for the connection.
-
-@param fd file descriptor of the input file (int)
-@param wfd file descriptor of the output file (int)
-=end
-        @rbuf = ''
-        @readfd = rfd
-
-        @wbuf = ''
-        @writefd = wfd
-    end
-    
-    def readReady(fd)
-=begin edoc
-Function called when there is data ready to be read.
-
-@param fd file descriptor of the file that has data to be read (int)
-=end
-        begin
-            got = @readfd.readline()
-        rescue
-            return
-        end
-        
-        if got.length == 0
-            sessionClose()
-            return
-        end
-        
-        @rbuf << got
-        
-        # Call handleLine for the line if it is complete.
-        eol = @rbuf.index("\n")
-        
-        while eol and eol >= 0
-            s = @rbuf[0..eol]
-            @rbuf = @rbuf[eol+1..-1]
-            handleLine(s)
-            eol = @rbuf.index("\n")
-        end
-    end
-    
-    def writeReady(fd)
-=begin edoc
-Function called when we are ready to write data.
-
-@param fd file descriptor of the file that has data to be written (int)
-=end
-        @writefd.write(@wbuf)
-        @writefd.flush()
-        @wbuf = ''
-    end
-    
-    def write(s)
-=begin edoc
-Function to write a string.
-
-@param s the data to be written (string)
-=end
-        @wbuf << s
-    end
-end
--- a/DebugClients/Ruby/Completer.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing a command line completer class.
-=end
-
-#
-# This code is mostly based on the completer found in irb of the Ruby package
-# Original copyright
-#       by Keiju ISHITSUKA(keiju@ishitsuka.com)
-#       From Original Idea of shugo@ruby-lang.org
-#
-
-class Completer
-=begin edoc
-Class implementing a command completer.
-=end
-    ReservedWords = [
-        "BEGIN", "END",
-        "alias", "and", 
-        "begin", "break", 
-        "case", "class",
-        "def", "defined", "do",
-        "else", "elsif", "end", "ensure",
-        "false", "for", 
-        "if", "in", 
-        "module", 
-        "next", "nil", "not",
-        "or", 
-        "redo", "rescue", "retry", "return",
-        "self", "super",
-        "then", "true",
-        "undef", "unless", "until",
-        "when", "while",
-        "yield",
-    ]
-    
-    def initialize(binding)
-=begin edoc
-constructor
-
-@param binding binding object used to determine the possible completions
-=end
-        @binding = binding
-    end
-    
-    def complete(input)
-=begin edoc
-Public method to select the possible completions
-
-@param input text to be completed (String)
-@return list of possible completions (Array)
-=end
-        case input
-        when /^((["'`]).*\2)\.([^.]*)$/
-        # String
-            receiver = $1
-            message = $3
-            
-            candidates = String.instance_methods.collect{|m| m.to_s}
-            select_message(receiver, message, candidates)
-
-        when /^(\/[^\/]*\/)\.([^.]*)$/
-        # Regexp
-            receiver = $1
-            message = Regexp.quote($2)
-
-            candidates = Regexp.instance_methods.collect{|m| m.to_s}
-            select_message(receiver, message, candidates)
-
-        when /^([^\]]*\])\.([^.]*)$/
-        # Array
-            receiver = $1
-            message = Regexp.quote($2)
-
-            candidates = Array.instance_methods.collect{|m| m.to_s}
-            select_message(receiver, message, candidates)
-
-        when /^([^\}]*\})\.([^.]*)$/
-        # Proc or Hash
-            receiver = $1
-            message = Regexp.quote($2)
-
-            candidates = Proc.instance_methods.collect{|m| m.to_s}
-            candidates |= Hash.instance_methods.collect{|m| m.to_s}
-            select_message(receiver, message, candidates)
-    
-        when /^(:[^:.]*)$/
-        # Symbol
-            if Symbol.respond_to?(:all_symbols)
-                sym = $1
-                candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
-                candidates.grep(/^#{sym}/)
-            else
-                []
-            end
-
-        when /^::([A-Z][^:\.\(]*)$/
-        # Absolute Constant or class methods
-            receiver = $1
-            candidates = Object.constants.collect{|m| m.to_s}
-            candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
-
-        when /^([A-Z].*)::([^:.]*)$/
-        # Constant or class methods
-            receiver = $1
-            message = Regexp.quote($4)
-            begin
-                candidates = eval("#{receiver}.constants.collect{|m| m.to_s}", bind)
-                candidates |= eval("#{receiver}.methods.collect{|m| m.to_s}", bind)
-            rescue Exception
-                candidates = []
-            end
-            select_message(receiver, message, candidates, "::")
-
-        when /^(:[^:.]+)(\.|::)([^.]*)$/
-        # Symbol
-            receiver = $1
-            sep = $2
-            message = Regexp.quote($3)
-
-            candidates = Symbol.instance_methods.collect{|m| m.to_s}
-            select_message(receiver, message, candidates, sep)
-
-        when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)(\.|::)([^.]*)$/
-        # Numeric
-            receiver = $1
-            sep = $5
-            message = Regexp.quote($6)
-
-            begin
-                candidates = eval(receiver, @binding).methods.collect{|m| m.to_s}
-            rescue Exception
-                candidates
-            end
-            select_message(receiver, message, candidates, sep)
-
-        when /^(-?0x[0-9a-fA-F_]+)(\.|::)([^.]*)$/
-        # Numeric(0xFFFF)
-            receiver = $1
-            sep = $2
-            message = Regexp.quote($3)
-            
-            begin
-                candidates = eval(receiver, bind).methods.collect{|m| m.to_s}
-            rescue Exception
-                candidates = []
-            end
-            select_message(receiver, message, candidates, sep)
-
-        when /^(\$[^.]*)$/
-        # Global variable
-            candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
-
-        when /^([^."].*)(\.|::)([^.]*)$/
-        # variable.func or func.func
-            receiver = $1
-            sep = $2
-            message = Regexp.quote($3)
-
-            gv = eval("global_variables", @binding).collect{|m| m.to_s}
-            lv = eval("local_variables", @binding).collect{|m| m.to_s}
-            cv = eval("self.class.constants", @binding).collect{|m| m.to_s}
-    
-            if (gv | lv | cv).include?(receiver) or \
-                /^[A-Z]/ =~ receiver && /\./ !~ receiver
-                # foo.func and foo is var. OR
-                # foo::func and foo is var. OR
-                # foo::Const and foo is var. OR
-                # Foo::Bar.func
-                begin
-                    candidates = []
-                    rec = eval(receiver, bind)
-                    if sep == "::" and rec.kind_of?(Module)
-                        candidates = rec.constants.collect{|m| m.to_s}
-                    end
-                    candidates |= rec.methods.collect{|m| m.to_s}
-                rescue Exception
-                    candidates = []
-                end
-            else
-                # func1.func2
-                candidates = []
-                ObjectSpace.each_object(Module){|m|
-                    begin
-                        name = m.name
-                    rescue Exception
-                        name = ""
-                    end
-                    begin
-                        next if m.name != "IRB::Context" and 
-                            /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
-                    rescue Exception
-                        next
-                    end
-                    candidates.concat m.instance_methods(false).collect{|x| x.to_s}
-                }
-                candidates.sort!
-                candidates.uniq!
-            end
-            select_message(receiver, message, candidates, sep)
-
-        when /^\.([^.]*)$/
-        # unknown(maybe String)
-
-            receiver = ""
-            message = Regexp.quote($1)
-
-            candidates = String.instance_methods(true).collect{|m| m.to_s}
-            select_message(receiver, message, candidates)
-
-        else
-            candidates = eval(
-                "methods | private_methods | local_variables | self.class.constants",
-                @binding).collect{|m| m.to_s}
-            
-            (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
-        end
-    end
-
-    Operators = ["%", "&", "*", "**", "+",  "-",  "/",
-      "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
-      "[]", "[]=", "^", "!", "!=", "!~"]
-
-    def select_message(receiver, message, candidates, sep = ".")
-=begin edoc
-Method used to pick completion candidates.
-
-@param receiver object receiving the message
-@param message message to be sent to object
-@param candidates possible completion candidates
-@param sep separater string
-@return filtered list of candidates
-=end
-        candidates.grep(/^#{message}/).collect do |e|
-            case e
-            when /^[a-zA-Z_]/
-                receiver + sep + e
-            when /^[0-9]/
-            when *Operators
-                #receiver + " " + e
-            end
-        end
-    end
-end
--- a/DebugClients/Ruby/Config.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File defining the different Ruby types
-=end
-
-ConfigVarTypeStrings = ['__', 'NilClass', '_unused_',
-        'bool', 'Fixnum', 'Bignum', 'Float', 'Complex',
-        'String', 'String', '_unused_', 'Array',
-        'Hash', '_unused_', '_unused_', 'File', '_unused_',
-        '_unused_', '_unused_', 'Class', 'instance',
-        '_unused_', '_unused_', '_unused_',
-        'Proc', '_unused_', '_unused_', 'Module',
-        '_unused_', '_unused_', '_unused_', 'other']
--- a/DebugClients/Ruby/DebugClient.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing a debug client.
-=end
-
-# insert path to ourself in front of the search path
-$:.insert(0, File.dirname($0))
-
-require 'Debuggee'
-require 'AsyncIO'
-require 'DebugClientBaseModule'
-
-class DebugClient
-=begin edoc
-Class implementing the client side of the debugger.
-=end
-    include AsyncIO
-    include DebugClientBase
-    
-    def initialize
-=begin edoc
-Constructor
-=end
-        initializeAsyncIO
-        initializeDebugClient
-        
-        @variant = "No Qt-Version"
-    end
-end
-
-# We are normally called by the debugger to execute directly
-
-if __FILE__ == $0
-    debugClient = DebugClient.new()
-    debugClient.main()
-end
--- a/DebugClients/Ruby/DebugClientBaseModule.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1187 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing a debug client base module.
-=end
-
-require 'socket'
-
-require 'DebugQuit'
-require 'DebugProtocol'
-require 'DebugClientCapabilities'
-require 'AsyncFile'
-require 'Config'
-require 'Completer'
-
-$DebugClientInstance = nil
-$debugging = false
-
-module DebugClientBase
-=begin edoc
-Module implementing the client side of the debugger.
-
-It provides access to the Ruby interpeter from a debugger running in another
-process.
-
-The protocol between the debugger and the client assumes that there will be
-a single source of debugger commands and a single source of Ruby
-statements.  Commands and statement are always exactly one line and may be
-interspersed.
-
-The protocol is as follows.  First the client opens a connection to the
-debugger and then sends a series of one line commands.  A command is either
-&gt;Load&lt;, &gt;Step&lt;, &gt;StepInto&lt;, ... or a Ruby statement. 
-See DebugProtocol.rb for a listing of valid protocol tokens.
-
-A Ruby statement consists of the statement to execute, followed (in a
-separate line) by &gt;OK?&lt;.  If the statement was incomplete then the response
-is &gt;Continue&lt;.  If there was an exception then the response is &gt;Exception&lt;.
-Otherwise the response is &gt;OK&lt;.  The reason for the &gt;OK?&lt; part is to
-provide a sentinal (ie. the responding &gt;OK&lt;) after any possible output as a
-result of executing the command.
-
-The client may send any other lines at any other time which should be
-interpreted as program output.
-
-If the debugger closes the session there is no response from the client.
-The client may close the session at any time as a result of the script
-being debugged closing or crashing.
-
-<b>Note</b>: This module is meant to be mixed in by individual DebugClient classes.
-Do not use it directly.
-=end
-    @@clientCapabilities = HasDebugger | HasInterpreter | HasShell | HasCompleter
-    
-    attr_accessor :passive, :traceRuby
-    
-    def initializeDebugClient
-=begin edoc
-Method to initialize the module
-=end
-        
-        # The context to run the debugged program in.
-        @debugBinding = eval("def e4dc_DebugBinding; binding; end; e4dc_DebugBinding",
-              TOPLEVEL_BINDING, 
-              __FILE__,
-              __LINE__ - 3)
-
-        # The context to run the shell commands in.
-        @shellBinding = eval("def e4dc_ShellBinding; binding; end; e4dc_ShellBinding",
-              TOPLEVEL_BINDING, 
-              __FILE__,
-              __LINE__ - 3)
-        
-        # stack frames
-        @frames = []
-        @framenr = 0
-
-        # The list of complete lines to execute.
-        @buffer = ''
-        @lineno = 0
-        
-        # The list of regexp objects to filter variables against
-        @globalsFilterObjects = []
-        @localsFilterObjects = []
-
-        @pendingResponse = ResponseOK
-        @mainProcStr = nil          # used for the passive mode
-        @passive = false            # used to indicate the passive mode
-        @running = nil
-
-        @readstream = nil
-        @writestream = nil
-        @errorstream = nil
-        
-        @variant = 'You should not see this'
-        
-        @completer = Completer.new(@shellBinding)
-    end
-    
-    def handleException
-=begin edoc
-Private method called in the case of an exception
-
-It ensures that the debug server is informed of the raised exception.
-=end
-        @pendingResponse = ResponseException
-    end
-    
-    def sessionClose
-=begin edoc
-Privat method to close the session with the debugger and terminate.
-=end
-        set_trace_func nil
-        if $debugging
-            $debugging = false
-            @running = nil
-            DEBUGGER__.context(DEBUGGER__.last_thread).step_quit()
-        end
-        
-        # clean up asyncio
-        disconnect()
-        
-        # make sure we close down our end of the socket
-        # might be overkill as normally stdin, stdout and stderr
-        # SHOULD be closed on exit, but it does not hurt to do it here
-        @readstream.close()
-        @writestream.close()
-        @errorstream.close()
-        
-        # Ok, go away.
-        exit()
-    end
-    
-    def unhandled_exception(exc)
-=begin edoc
-Private method to report an unhandled exception.
-
-@param exc the exception object
-=end
-        if SystemExit === exc
-            if $debugging
-                $debugging = false
-            else
-                progTerminated(exc.status)
-            end
-            return
-        end
-        
-        # split the exception message
-        msgParts = exc.message.split(":", 3)
-        filename = File.expand_path(msgParts[0])
-        linenr = msgParts[1].to_i
-        
-        if ScriptError === exc
-            msgParts = msgParts[2].split(":", 3)
-            filename = msgParts[0].sub(/in `require'/, "")
-            linenr = msgParts[1].to_i
-            exclist = [""]
-            exclist << [filename, linenr, 0]
-            write("%s%s\n" % [ResponseSyntax, exclist.inspect])
-            return
-        end
-        
-        exclist = ["unhandled %s" % exc.class, msgParts[2].sub(/in /, "")]
-        exclist << [filename, linenr]
-        
-        # process the traceback
-        frList = exc.backtrace
-        frList.each do |frame|
-            next if frame =~ /DebugClientBaseModule/
-            break if frame =~ /\(eval\)/
-            frameParts = frame.split(":", 3)
-            filename = File.expand_path(frameParts[0])
-            linenr = frameParts[1].to_i
-            next if [filename, linenr] == exclist[-1]
-            exclist << [filename, linenr]
-        end
-        
-        write("%s%s\n" % [ResponseException, exclist.inspect])
-    end
-    
-    def handleLine(line)
-=begin edoc
-Private method to handle the receipt of a complete line.
-
-It first looks for a valid protocol token at the start of the line. Thereafter
-it trys to execute the lines accumulated so far.
-
-@param line the received line
-=end
-        
-        # Remove any newline
-        if line[-1] == "\n"
-            line = line[0...-1]
-        end
-        
-##        STDOUT << line << "\n"          ## debug
-        
-        eoc = line.index("<")
-        
-        if eoc and eoc >= 0 and line[0,1] == ">"
-            # Get the command part and any argument
-            cmd = line[0..eoc]
-            arg = line[eoc+1..-1]
-            
-            case cmd
-            when RequestOK
-                write(@pendingResponse + "\n")
-                @pendingResponse = ResponseOK
-                return
-            
-            when RequestEnv
-                # convert a Python stringified hash to a Ruby stringified hash
-                arg.gsub!(/: u/, "=>")
-                arg.gsub!(/u'/, "'")
-                eval(arg).each do |key, value|
-                    if key[-1..-1] == "+"
-                        key = key[0..-2]
-                        if ENV[key]
-                            ENV[key] += value
-                        else
-                            ENV[key] = value
-                        end
-                    else
-                        ENV[key] = value
-                    end
-                end
-                return
-            
-            when RequestVariables
-                frmnr, scope, filter = eval("[%s]" % arg.gsub(/u'/, "'").gsub(/u"/,'"'))
-                dumpVariables(frmnr.to_i, scope.to_i, filter)
-                return
-            
-            when RequestVariable
-                var, frmnr, scope, filter = \
-                    eval("[%s]" % arg.gsub(/u'/, "'").gsub(/u"/,'"'))
-                dumpVariable(var, frmnr.to_i, scope.to_i, filter)
-                return
-                
-            when RequestStep
-                DEBUGGER__.context(DEBUGGER__.last_thread).stop_next()
-                @eventExit = true
-                return
-            
-            when RequestStepOver
-                DEBUGGER__.context(DEBUGGER__.last_thread).step_over()
-                @eventExit = true
-                return
-            
-            when RequestStepOut
-                DEBUGGER__.context(DEBUGGER__.last_thread).step_out()
-                @eventExit = true
-                return
-            
-            when RequestStepQuit
-                set_trace_func nil
-                wasDebugging = $debugging
-                $debugging = false
-                @running = nil
-                if @passive
-                    progTerminated(42)
-                else
-                    DEBUGGER__.context(DEBUGGER__.last_thread).step_quit() if wasDebugging
-                end
-                return
-            
-            when RequestContinue
-                special = arg.to_i
-                if special == 0
-                    DEBUGGER__.context(DEBUGGER__.last_thread).step_continue()
-                else
-                    # special == 1 means a continue while doing a step over
-                    # this occurs when an expception is raised doing a step over
-                    DEBUGGER__.context(DEBUGGER__.last_thread).step_over()
-                end
-                @eventExit = true
-                return
-            
-            when RequestSetFilter
-                scope, filterString = eval("[%s]" % arg)
-                generateFilterObjects(scope.to_i, filterString)
-                return
-            
-            when RequestLoad
-                $debugging = true
-                ARGV.clear()
-                wd, fn, args, traceRuby = arg.split("|", -4)
-                @traceRuby = traceRuby.to_i == 1 ? true : false
-                ARGV.concat(eval(args.gsub(/u'/, "'").gsub(/u"/,'"')))
-                $:.insert(0, File.dirname(fn))
-                if wd == ''
-                    Dir.chdir($:[0])
-                else
-                    Dir.chdir(wd)
-                end
-                @running = fn
-                command = "$0 = '%s'; require '%s'" % [fn, fn]
-                RubyVM::InstructionSequence.compile_option = {
-                    trace_instruction: true
-                }
-                set_trace_func proc { |event, file, line, id, binding_, klass, *rest|
-                    DEBUGGER__.context.trace_func(event, file, line, id, binding_, klass)
-                }
-                begin
-                    eval(command, @debugBinding)
-                rescue DebugQuit
-                    # just ignore it
-                rescue Exception => exc
-                    unhandled_exception(exc)
-                ensure
-                    set_trace_func(nil)
-                    @running = nil
-                end
-                return
-            
-            when RequestRun
-                $debugging = false
-                ARGV.clear()
-                wd, fn, args = arg.split("|", -3)
-                ARGV.concat(eval(args.gsub(/u'/, "'").gsub(/u"/,'"')))
-                $:.insert(0, File.dirname(fn))
-                if wd == ''
-                    Dir.chdir($:[0])
-                else
-                    Dir.chdir(wd)
-                end
-                command = "$0 = '%s'; require '%s'" % [fn, fn]
-                @frames = []
-                set_trace_func proc { |event, file, line, id, binding_, klass, *rest|
-                    trace_func(event, file, line, id, binding_, klass)
-                }
-                begin
-                    eval(command, @debugBinding)
-                rescue SystemExit
-                    # ignore it
-                rescue Exception => exc
-                    unhandled_exception(exc)
-                ensure
-                    set_trace_func(nil)
-                end
-                return
-            
-            when RequestShutdown
-                sessionClose()
-                return
-            
-            when RequestBreak
-                fn, line, temporary, set, cond = arg.split("@@")
-                line = line.to_i
-                set = set.to_i
-                temporary = temporary.to_i == 1 ? true : false
-                
-                if set == 1
-                    if cond == 'None'
-                        cond = nil
-                    end
-                    DEBUGGER__.context(DEBUGGER__.last_thread)\
-                        .add_break_point(fn, line, temporary, cond)
-                else
-                    DEBUGGER__.context(DEBUGGER__.last_thread)\
-                        .delete_break_point(fn, line)
-                end
-                return
-            
-            when RequestBreakEnable
-                fn, line, enable = arg.split(',')
-                line = line.to_i
-                enable = enable.to_i == 1 ? true : false
-                DEBUGGER__.context(DEBUGGER__.last_thread)\
-                    .enable_break_point(fn, line, enable)
-                return
-            
-            when RequestBreakIgnore
-                fn, line, count = arg.split(',')
-                line = line.to_i
-                count = count.to_i
-                DEBUGGER__.context(DEBUGGER__.last_thread)\
-                    .ignore_break_point(fn, line, count)
-                return
-            
-            when RequestWatch
-                cond, temporary, set = arg.split('@@')
-                set = set.to_i
-                temporary = temporary.to_i == 1 ? true : false
-                
-                if set == 1
-                    DEBUGGER__.context(DEBUGGER__.last_thread)\
-                        .add_watch_point(cond, temporary)
-                else
-                    DEBUGGER__.context(DEBUGGER__.last_thread).delete_watch_point(cond)
-                end
-                return
-                
-            when RequestWatchEnable
-                cond, enable = arg.split(',')
-                enable = enable.to_i == 1 ? true : false
-                DEBUGGER__.context(DEBUGGER__.last_thread)\
-                    .enable_watch_point(cond, enable)
-                return
-                
-            when RequestWatchIgnore
-                cond, count = arg.split(',')
-                count = count.to_i
-                DEBUGGER__.context(DEBUGGER__.last_thread).ignore_watch_point(cond, count)
-                return
-                
-            when RequestEval, RequestExec
-                if not @running                
-                    binding_ = @shellBinding
-                else
-                    binding_ = DEBUGGER__.context(DEBUGGER__.last_thread).current_binding
-                end
-                write("\n")
-                begin
-                    value = eval(arg, binding_)
-                rescue Exception => exc
-                    list = []
-                    list << "%s: %s\n" % \
-                        [exc.class, exc.to_s.sub(/stdin:\d+:(in `.*':?)?/, '')]
-                    $@.each do |l|
-                        break if l =~ /e4dc_ShellBinding/ or l =~ /e4dc_DebugBinding/ or \
-                                 l =~ /:in `require'$/
-                        list << "%s\n" % l.sub(/\(eval\)/, "(e3dc)")
-                    end
-                    list.each do |entry|
-                        write(entry)
-                    end
-                else
-                    write("=> #{value.inspect}\n")
-                    write("#{ResponseOK}\n")
-                end
-                return
-                
-            when RequestBanner
-                version = "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
-                write("%s('%s','%s','%s')\n" % \
-                    [ResponseBanner, version, Socket.gethostname(), @variant])
-                return
-            
-            when RequestCapabilities
-                write("%s%d, 'Ruby'\n" % \
-                    [ResponseCapabilities, @@clientCapabilities])
-                return
-            
-            when RequestCompletion
-                completionList(arg)
-                return
-                
-            else
-                puts "Got unsupported command %s.\n" % cmd
-                return
-            end
-        end
-        
-        if @buffer
-            @buffer << "\n" << line
-            @lineno += 1
-        else
-            @buffer = line.dup
-        end
-        
-        # check for completeness
-        if not canEval?
-            @pendingResponse = ResponseContinue
-        else
-            command = @buffer.dup
-            @buffer = ""
-            begin
-                res = "=> "
-                if not @running
-                    res << eval(command, @shellBinding, "stdin", @lineno).inspect << "\n"
-                else
-                    res << eval(command, 
-                        DEBUGGER__.context(DEBUGGER__.last_thread).get_binding(@framenr), 
-                        "stdin", @lineno).inspect << "\n"
-                end
-                write(res)
-            rescue SystemExit => exc
-                progTerminated(exc.status)
-            rescue ScriptError, StandardError => exc
-                list = []
-                list << "%s: %s\n" % \
-                    [exc.class, exc.to_s.sub(/stdin:\d+:(in `.*':?)?/, '')]
-                $@.each do |l|
-                    break if l =~ /e4dc_ShellBinding/ or l =~ /e4dc_DebugBinding/ or \
-                             l =~ /:in `require'$/
-                    list << "%s\n" % l.sub(/\(eval\)/, "(e3dc)")
-                end
-                list.each do |entry|
-                    write(entry)
-                end
-                handleException()
-            end
-        end
-    end
-    
-    def canEval?
-=begin edoc
-Private method to check if the buffer's contents can be evaluated.
-
-@return flag indicating if an eval might succeed (boolean)
-=end
-        indent = 0
-        if @buffer =~ /,\s*$/
-            return false
-        end
-        
-        @buffer.split($/).each do |l|
-            if l =~ /^\s*(class|module|def|if|unless|case|while|until|for|begin)\b[^_]/
-                indent += 1
-            end
-            if l =~ /\s*do\s*(\|.*\|)?\s*$/
-                indent += 1
-            end
-            if l =~ /^\s*end\s*$|^\s*end\b[^_]/
-                indent -= 1
-            end
-            if l =~ /\{\s*(\|.*\|)?\s*$/
-                indent += 1
-            end
-            if l =~ /^\s*\}/
-                indent -= 1
-            end
-        end
-        
-        if indent > 0
-            return false
-        end
-        return true
-    end
-    
-    def trace_func(event, file, line, id, binding_, klass)
-=begin edoc
-Method executed by the tracing facility.
-
-It is used to save the execution context of an exception.
-
-@param event the tracing event (String)
-@param file the name of the file being traced (String)
-@param line the line number being traced (int)
-@param id object id
-@param binding_ a binding object
-@param klass name of a class
-=end
-        case event
-        when 'line'
-            if @frames[0]
-                @frames[0] = binding_
-            else
-                @frames.unshift binding_
-            end
-            
-        when 'call'
-            @frames.unshift binding_
-        
-        when 'class'
-            @frames.unshift binding_
-            
-        when 'return', 'end'
-            @frames.shift
-
-        when 'end'
-            @frames.shift
-        
-        when 'raise'
-            set_trace_func nil
-        end
-    end
-
-    def write(s)
-=begin edoc
-Private method to write data to the output stream.
-
-@param s data to be written (string)
-=end
-        @writestream.write(s)
-        @writestream.flush()
-    end
-    
-    def interact
-=begin edoc
-Private method to Interact with  the debugger.
-=end
-        setDescriptors(@readstream, @writestream)
-        $DebugClientInstance = self
-        
-        if not @passive
-            # At this point simulate an event loop.
-            eventLoop()
-        end
-    end
-    
-    def eventLoop
-=begin edoc
-Private method implementing our event loop.
-=end
-        @eventExit = nil
-        
-        while @eventExit == nil
-            wrdy = []
-            
-            if AsyncPendingWrite(@writestream) > 0
-                wrdy << @writestream.getSock()
-            end
-            
-            if AsyncPendingWrite(@errorstream) > 0
-                wrdy << @errorstream.getSock()
-            end
-            
-            rrdy, wrdy, xrdy = select([@readstream.getSock()], wrdy, [])
-            
-            if rrdy.include?(@readstream.getSock())
-                readReady(@readstream.fileno())
-            end
-            
-            if wrdy.include?(@writestream.getSock())
-                writeReady(@writestream.fileno())
-            end
-            
-            if wrdy.include?(@errorstream.getSock())
-                writeReady(@errorstream.fileno())
-            end
-        end
-        
-        @eventExit = nil
-    end
-    
-    def eventPoll
-=begin edoc
-Private method to poll for events like 'set break point'.
-=end
-        
-        # the choice of a ~0.5 second poll interval is arbitrary.
-        lasteventpolltime = @lasteventpolltime ? @lasteventpolltime : Time.now
-        now = Time.now
-        if now - lasteventpolltime < 0.5
-            @lasteventpolltime = lasteventpolltime
-            return
-        else
-            @lasteventpolltime = now
-        end
-        
-        wrdy = []
-        
-        if AsyncPendingWrite(@writestream) > 0
-            wrdy << @writestream.getSock()
-        end
-        
-        if AsyncPendingWrite(@errorstream) > 0
-            wrdy << @errorstream.getSock()
-        end
-        
-        rrdy, wrdy, xrdy = select([@readstream.getSock()], wrdy, [], 0)
-        
-        if rrdy == nil
-            return
-        end
-        
-        if rrdy.include?(@readstream.getSock())
-            readReady(@readstream.fileno())
-        end
-        
-        if wrdy.include?(@writestream.getSock())
-            writeReady(@writestream.fileno())
-        end
-        
-        if wrdy.include?(@errorstream.getSock())
-            writeReady(@errorstream.fileno())
-        end
-    end
-    
-    def connectDebugger(port, remoteAddress=nil, redirect=true)
-=begin edoc
-Public method to establish a session with the debugger. 
-
-It opens a network connection to the debugger, connects it to stdin, 
-stdout and stderr and saves these file objects in case the application
-being debugged redirects them itself.
-
-@param port the port number to connect to (int)
-@param remoteAddress the network address of the debug server host (string)
-@param redirect flag indicating redirection of stdin, stdout and stderr (boolean)
-=end
-        if remoteAddress == nil
-            sock = TCPSocket.new(DebugAddress, port)
-        else
-            if remoteAddress =~ /@@i/
-                remoteAddress, interface = remoteAddress.split("@@i")
-            else
-                interface = 0
-            end
-            if remoteAddress.downcase =~ /^fe80/
-                remoteAddress = "%s%%%s" % [remoteAddress, interface]
-            end
-            sock = TCPSocket.new(remoteAddress, port)
-        end
-        
-        @readstream = AsyncFile.new(sock, "r", "stdin")
-        @writestream = AsyncFile.new(sock, "w", "stdout")
-        @errorstream = AsyncFile.new(sock, "w", "stderr")
-        
-        if redirect
-            $stdin = @readstream
-            $stdout = @writestream
-            $stderr = @errorstream
-        end
-    end
-    
-    def progTerminated(status)
-=begin edoc
-Private method to tell the debugger that the program has terminated.
-
-@param status the return status
-=end
-        if status == nil
-            status = 0
-        else
-            begin
-                Integer(status)
-            rescue
-                status = 1
-            end
-        end
-        
-        set_trace_func(nil)
-        @running = nil
-        write("%s%d\n" % [ResponseExit, status])
-    end
-    
-    def dumpVariables(frmnr, scope, filter)
-=begin edoc
-Private method to return the variables of a frame to the debug server.
-
-@param frmnr distance of frame reported on. 0 is the current frame (int)
-@param scope 1 to report global variables, 0 for local variables (int)
-@param filter the indices of variable types to be filtered (list of int)
-=end
-        if $debugging
-            if scope == 0
-                @framenr = frmnr
-            end
-            binding_, file, line, id = DEBUGGER__.context(DEBUGGER__.last_thread)\
-                .get_frame(frmnr)
-        else
-            binding_ = @frames[frmnr]
-        end
-        varlist = [scope]
-        if scope >= 1
-            # dump global variables
-            vlist = formatVariablesList(global_variables, binding_, scope, filter)
-        elsif scope == 0
-            # dump local variables
-            vlist = formatVariablesList(eval("local_variables", binding_), 
-                                        binding_, scope, filter)
-        end
-        varlist.concat(vlist)
-        write("%s%s\n" % [ResponseVariables, varlist.inspect])
-    end
-    
-    def dumpVariable(var, frmnr, scope, filter)
-=begin edoc
-Private method to return the variables of a frame to the debug server.
-
-@param var list encoded name of the requested variable (list of strings)
-@param frmnr distance of frame reported on. 0 is the current frame (int)
-@param scope 1 to report global variables, 0 for local variables (int)
-@param filter the indices of variable types to be filtered (list of int)
-=end
-       if $debugging
-            binding_, file, line, id = DEBUGGER__.context(DEBUGGER__.last_thread)\
-                .get_frame(frmnr)
-        else
-            binding_ = @frames[frmnr]
-        end
-        varlist = [scope, var]
-        i = 0
-        obj = nil
-        keylist = nil
-        formatSequences = false
-        access = ""
-        isDict = false
-        
-        while i < var.length
-            if ["[]", "{}"].include?(var[i][-2..-1])
-                if i+1 == var.length
-                    keylist = [var[i][0..-3]]
-                    formatSequences = true
-                    if access.length == 0
-                        access = "#{var[i][0..-3]}"
-                    else
-                        access << "[#{var[i][0..-3]}]"
-                    end
-                    if var[i][-2..-1] == "{}"
-                        isDict = true
-                    end
-                    break
-                else
-                    if access.length == 0
-                        access = "#{var[i][0..-3]}"
-                    else
-                        access << "[#{var[i][0..-3]}]"
-                    end
-                end
-            else
-                if access.length != 0
-                    access << "[#{var[i]}]"
-                    obj = eval(access, binding_)
-                    binding_ = obj.instance_eval{binding()}
-                    access = ""
-                else
-                    obj = eval(var[i], binding_)
-                    binding_ = obj.instance_eval{binding()}
-                end
-            end
-            i += 1
-        end
-        if formatSequences
-            bind = binding_
-        else
-            bind = obj.instance_eval{binding()}
-        end
-        if not keylist
-            keylist = obj.instance_variables
-            access = nil
-        else
-            if access.length != 0
-                obj = eval(access, bind)
-            end
-            if isDict
-                keylist = obj.keys()
-            else
-                keylist = Array.new(obj.length){|i| i}
-            end
-        end
-        vlist = formatVariablesList(keylist, bind, scope, filter, 
-                                    excludeSelf=true, access=access)
-        varlist.concat(vlist)
-        write("%s%s\n" % [ResponseVariable, varlist.inspect])
-    end
-    
-    def formatVariablesList(keylist, binding_, scope, filter = [],
-                            excludeSelf = false, access = nil)
-=begin edoc
-Private method to produce a formated variables list.
-
-The binding passed in to it is scanned. Variables are
-only added to the list, if their type is not contained 
-in the filter list and their name doesn't match any of the filter expressions.
-The formated variables list (a list of lists of 3 values) is returned.
-
-@param keylist keys of the dictionary
-@param binding_ the binding to be scanned
-@param scope 1 to filter using the globals filter, 0 using the locals filter (int).
-    Variables are only added to the list, if their name do not match any of the
-    filter expressions.
-@param filter the indices of variable types to be filtered. Variables are
-    only added to the list, if their type is not contained in the filter 
-    list.
-@param excludeSelf flag indicating if the self object should be excluded from
-    the listing (boolean)
-@param access String specifying the access path to (String)
-@return A list consisting of a list of formatted variables. Each variable
-    entry is a list of three elements, the variable name, its type and 
-    value.
-=end
-        varlist = []
-        if scope >= 1
-            patternFilterObjects = @globalsFilterObjects
-        else
-            patternFilterObjects = @localsFilterObjects
-            begin
-                obj = eval("self", binding_)
-            rescue StandardError, ScriptError
-                obj = nil
-            end
-            if not excludeSelf and obj.class != Object
-                keylist << "self"
-            end
-        end
-        
-        keylist.each do |key|
-            # filter based on the filter pattern
-            matched = false
-            patternFilterObjects.each do |pat|
-                if pat.match(key)
-                    matched = true
-                    break
-                end
-            end
-            next if matched
-            
-            if key.to_s == '$KCODE' or key.to_s == '$=' or key.to_s == '$-K'
-                varlist << [key.to_s, "NilClass", "nil"]
-                next
-            end
-        
-            begin
-                if access
-                    if key.to_s == key
-                        key = "'%s'" % key
-                    else
-                        key = key.to_s
-                    end
-                    k = "#{access}[%s]" % key
-                    obj = eval(k, binding_)
-                else
-                    obj = eval(key.to_s, binding_)
-                end
-            rescue NameError
-                next
-            end
-            
-            if obj or obj.class == NilClass or obj.class == FalseClass
-                otype = obj.class.to_s
-                if obj.inspect.nil?
-                    otype = ""
-                    oval = ""
-                else
-                    oval = obj.inspect.gsub(/=>/,":")
-                end
-            else
-                otype = ""
-                oval = obj.inspect
-            end
-            
-            next if inFilter?(filter, otype, oval)
-            
-            if oval.index("#<") == 0
-                addr = extractAddress(oval)
-                oval = "<#{otype} object at #{addr}>"
-            end
-            if obj
-                if obj.class == Array or obj.class == Hash
-                    oval = "%d" % obj.length()
-                end
-            end
-            varlist << [key.to_s, otype, oval]
-        end
-        return varlist
-    end
-    
-    def extractAddress(var)
-=begin edoc
-Private method to extract the address part of an object description.
-
-@param var object description (String)
-@return the address contained in the object description (String)
-=end
-        m = var.match(/^#<.*?:([^:]*?) /)
-        if m
-            return m[1]
-        else
-            return ""
-        end
-    end
-    
-    def extractTypeAndAddress(var)
-=begin edoc
-Private method to extract the address and type parts of an object description.
-
-@param var object description (String)
-@return list containing the type and address contained in the object 
-    description (Array of two String)
-=end
-        m = var.match(/^#<(.*?):(.*?) /)
-        if m
-            return [m[1], m[2]]
-        else
-            return ["", ""]
-        end
-    end
-    
-    def inFilter?(filter, otype, oval)
-=begin edoc
-Private method to check, if a variable is to be filtered based on its type.
-
-@param filter the indices of variable types to be filtered (Array of int.
-@param otype type of the variable to be checked (String)
-@param oval variable value to be checked (String)
-@return flag indicating, whether the variable should be filtered (boolean)
-=end
-        cindex = ConfigVarTypeStrings.index(otype)
-        if cindex == nil 
-            if oval.index("#<") == 0 
-                if filter.include?(ConfigVarTypeStrings.index("instance"))
-                    return true
-                else
-                    return false
-                end
-            elsif ['FalseClass', 'TrueClass'].include?(otype)
-                if filter.include?(ConfigVarTypeStrings.index("bool"))
-                    return true
-                else
-                    return false
-                end
-            else
-                if filter.include?(ConfigVarTypeStrings.index("other"))
-                    return true
-                else
-                    return false
-                end
-            end
-        end
-        if filter.include?(cindex)
-            return true
-        end
-        return false
-    end
-    
-    def generateFilterObjects(scope, filterString)
-=begin edoc
-Private method to convert a filter string to a list of filter objects.
-
-@param scope 1 to generate filter for global variables, 0 for local variables (int)
-@param filterString string of filter patterns separated by ';'
-=end
-        patternFilterObjects = []
-        for pattern in filterString.split(';')
-            patternFilterObjects << Regexp.compile('^%s$' % pattern)
-        end
-        if scope == 1
-            @globalsFilterObjects = patternFilterObjects[0..-1]
-        else
-            @localsFilterObjects = patternFilterObjects[0..-1]
-        end
-    end
-    
-    def completionList(text)
-=begin edoc
-Method used to handle the command completion request
-
-@param text the text to be completed (string)
-=end
-        completions = @completer.complete(text).compact.sort.uniq
-        write("%s%s||%s\n" % [ResponseCompletion, completions.inspect, text])
-    end
-    
-    def startProgInDebugger(progargs, wd = '', host = nil, 
-            port = nil, exceptions = true, traceRuby = false, redirect=true)
-=begin edoc
-Method used to start the remote debugger.
-
-@param progargs commandline for the program to be debugged 
-    (list of strings)
-@param wd working directory for the program execution (string)
-@param host hostname of the debug server (string)
-@param port portnumber of the debug server (int)
-@param exceptions flag to enable exception reporting of the IDE (boolean)
-@param traceRuby flag to enable tracing into the Ruby library
-@param redirect flag indicating redirection of stdin, stdout and stderr (boolean)
-=end
-        $debugging = true
-        
-        if host == nil
-            host = ENV.fetch('ERICHOST', 'localhost')
-        end
-        if port == nil
-            port = ENV.fetch('ERICPORT', 42424)
-        end
-        
-        connectDebugger(port, host, redirect) #TCPSocket.gethostbyname(host)[3])
-        DEBUGGER__.attach(self)
-        
-        @traceRuby = traceRuby
-        
-        fn = progargs.shift
-        fn = File.expand_path(fn)
-        
-        ARGV.clear()
-        ARGV.concat(progargs)
-        $:.insert(0, File.dirname(fn))
-        if wd == ''
-            Dir.chdir($:[0])
-        else
-            Dir.chdir(wd)
-        end
-        @running = fn
-        
-        @passive = true
-        write("%s%s|%d\n" % [PassiveStartup, @running, exceptions ? 1 : 0])
-        interact()
-        
-        command = "$0 = '%s'; require '%s'" % [fn, fn]
-        set_trace_func proc { |event, file, line, id, binding_, klass, *rest|
-            DEBUGGER__.context.trace_func(event, file, line, id, binding_, klass)
-        }
-        begin
-            eval(command, @debugBinding)
-        rescue DebugQuit
-            # just ignore it
-        rescue Exception => exc
-            unhandled_exception(exc)
-        ensure
-            set_trace_func(nil)
-            @running = nil
-        end
-        # just a short delay because client might shut down too quickly otherwise
-        sleep(1)    
-    end
-    
-    def main
-=begin edoc
-Public method implementing the main method.
-=end
-        if ARGV.include?('--')
-            args = ARGV[0..-1]
-            host = nil
-            port = nil
-            wd = ''
-            traceRuby = false
-            exceptions = true
-            redirect = true
-            while args[0]
-                if args[0] == '-h'
-                    host = args[1]
-                    args.shift
-                    args.shift
-                elsif args[0] == '-p'
-                    port = args[1]
-                    args.shift
-                    args.shift
-                elsif args[0] == '-w'
-                    wd = args[1]
-                    args.shift
-                    args.shift
-                elsif args[0] == '-t'
-                    traceRuby = true
-                    args.shift
-                elsif args[0] == '-e'
-                    exceptions = false
-                    args.shift
-                elsif args[0] == '-n'
-                    redirect = false
-                    args.shift
-                elsif args[0] == '--'
-                    args.shift
-                    break
-                else        # unknown option
-                    args.shift
-                end
-            end
-            if args.length == 0
-                STDOUT << "No program given. Aborting!"
-            else
-                startProgInDebugger(args, wd, host, port, 
-                                    exceptions = exceptions, traceRuby = traceRuby,
-                                    redirect = redirect)
-            end
-        else
-            if ARGV[0] == '--no-encoding'
-                # just ignore it, it's here to be compatible with python debugger
-                ARGV.shift
-            end
-            
-            begin
-                port = ARGV[0].to_i
-            rescue
-                port = -1
-            end
-            
-            begin
-                redirect = ARGV[1].to_i
-                redirect = redirect == 1 ? true : false
-            rescue
-                redirect = true
-            end
-            
-            begin
-                remoteAddress = ARGV[2]
-            rescue
-                remoteAddress = nil
-            end
-            
-            ARGV.clear()
-            $:.insert(0,"")
-            if port >= 0
-                connectDebugger(port, remoteAddress, redirect)
-                DEBUGGER__.attach(self)
-                interact()
-            end
-        end
-    end
-end
--- a/DebugClients/Ruby/DebugClientCapabilities.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File defining the debug clients capabilities.
-=end
-
-HasDebugger      = 0x0001
-HasInterpreter   = 0x0002
-HasProfiler      = 0x0004
-HasCoverage      = 0x0008
-HasCompleter     = 0x0010
-HasUnittest      = 0x0020
-HasShell         = 0x0040
-
-HasAll = HasDebugger | HasInterpreter | HasProfiler | \
-         HasCoverage | HasCompleter | HasUnittest | HasShell
--- a/DebugClients/Ruby/DebugProtocol.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File defining the debug protocol tokens
-=end
-
-# The address used for debugger/client communications.
-DebugAddress = '127.0.0.1'
-
-# The protocol "words".
-RequestOK =             '>OK?<'
-RequestEnv =            '>Environment<'
-RequestCapabilities =   '>Capabilities<'
-RequestLoad =           '>Load<'
-RequestRun =            '>Run<'
-RequestCoverage =       '>Coverage<'
-RequestProfile =        '>Profile<'
-RequestContinue =       '>Continue<'
-RequestStep =           '>Step<'
-RequestStepOver =       '>StepOver<'
-RequestStepOut =        '>StepOut<'
-RequestStepQuit =       '>StepQuit<'
-RequestBreak =          '>Break<'
-RequestBreakEnable =    '>EnableBreak<'
-RequestBreakIgnore =    '>IgnoreBreak<'
-RequestWatch =          '>Watch<'
-RequestWatchEnable =    '>EnableWatch<'
-RequestWatchIgnore =    '>IgnoreWatch<'
-RequestVariables =      '>Variables<'
-RequestVariable =       '>Variable<'
-RequestSetFilter =      '>SetFilter<'
-RequestEval =           '>Eval<'
-RequestExec =           '>Exec<'
-RequestShutdown =       '>Shutdown<'
-RequestBanner =         '>Banner<'
-RequestCompletion =     '>Completion<'
-RequestUTPrepare =      '>UTPrepare<'
-RequestUTRun =          '>UTRun<'
-RequestUTStop =         '>UTStop<'
-
-ResponseOK =            '>OK<'
-ResponseCapabilities =  RequestCapabilities
-ResponseContinue =      '>Continue<'
-ResponseException =     '>Exception<'
-ResponseSyntax =        '>SyntaxError<'
-ResponseExit =          '>Exit<'
-ResponseLine =          '>Line<'
-ResponseRaw =           '>Raw<'
-ResponseClearBreak =    '>ClearBreak<'
-ResponseClearWatch =    '>ClearWatch<'
-ResponseVariables =     RequestVariables
-ResponseVariable =      RequestVariable
-ResponseBanner =        RequestBanner
-ResponseCompletion =    RequestCompletion
-ResponseUTPrepared =    '>UTPrepared<'
-ResponseUTStartTest =   '>UTStartTest<'
-ResponseUTStopTest =    '>UTStopTest<'
-ResponseUTTestFailed =  '>UTTestFailed<'
-ResponseUTTestErrored = '>UTTestErrored<'
-ResponseUTFinished =    '>UTFinished<'
-
-PassiveStartup =        '>PassiveStartup<'
-
-EOT = ">EOT<\n"
--- a/DebugClients/Ruby/DebugQuit.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-File implementing a debug quit exception class.
-=end
-
-class DebugQuit < Exception
-=begin edoc
-Class implementing an exception to signal the end of a debugging session.
-=end
-end
--- a/DebugClients/Ruby/Debuggee.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1148 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-# Debuggee.rb is based in parts on debug.rb from Ruby and debuggee.rb.
-# Original copyrights of these files follow below.
-#
-# debug.rb
-# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
-# Copyright (C) 2000  Information-technology Promotion Agency, Japan
-#
-# debuggee.rb
-# Copyright (c) 2000 NAKAMURA, Hiroshi
-
-=begin edoc
-File implementing the real debugger, which is connected to the IDE frontend.
-=end
-
-require 'continuation'
-
-require 'DebugQuit'
-require 'rbconfig'
-
-class DEBUGGER__
-=begin edoc
-Class implementing the real debugger.
-=end
-    MUTEX = Mutex.new
-
-    class Context
-=begin edoc
-Class defining the current execution context.
-=end
-        def initialize
-=begin edoc
-Constructor
-=end
-            if Thread.current == Thread.main
-                @stop_next = 1
-            else
-                @stop_next = 0
-            end
-            @last_file = nil
-            @file = nil
-            @line = nil
-            @no_step = nil
-            @frames = []
-            @frame_pos = 0 #LJ - for FR
-            @finish_pos = 0
-            @trace = false
-            @catch = ["StandardError"] #LJ - for FR
-            @suspend_next = false
-        end
-
-        def stop_next(n=1)
-=begin edoc
-Method to set the next stop point (i.e. stop at next line).
-
-@param counter defining the stop point (int)
-=end
-            @stop_next = n
-        end
-
-        def step_over(n=1)
-=begin edoc
-Method to set the next stop point skipping function calls.
-
-@param counter defining the stop point (int)
-=end
-            @stop_next = n
-            @no_step = @frames.size - @frame_pos
-        end
-    
-        def step_out
-=begin edoc
-Method to set the next stop point after the function call returns.
-=end
-            if @frame_pos != @frames.size
-                @finish_pos = @frames.size - @frame_pos
-                @frame_pos = 0
-                @stop_next -= 1
-            end
-        end
-    
-        def step_continue
-=begin edoc
-Method to continue execution until next breakpoint or watch expression.
-=end
-            @stop_next = 1
-            @no_step = -1
-        end
-    
-        def step_quit
-=begin edoc
-Method to stop debugging.
-=end
-            raise DebugQuit.new
-        end
-    
-        def set_suspend
-=begin edoc
-Method to suspend all threads.
-=end
-            @suspend_next = true
-        end
-
-        def clear_suspend
-=begin edoc
-Method to clear the suspend state.
-=end
-            @suspend_next = false
-        end
-
-        def suspend_all
-=begin edoc
-Method to suspend all threads.
-=end
-            DEBUGGER__.suspend
-        end
-
-        def resume_all
-=begin edoc
-Method to resume all threads.
-=end
-            DEBUGGER__.resume
-        end
-
-        def check_suspend
-=begin edoc
-Method to check the suspend state.
-=end
-            while MUTEX.synchronize {
-                if @suspend_next
-                    DEBUGGER__.waiting.push Thread.current
-                    @suspend_next = false
-                    true
-                end
-            }
-            end
-        end
-
-        def stdout
-=begin edoc
-Method returning the stdout object.
-
-@return reference to the stdout object
-=end
-            DEBUGGER__.stdout
-        end
-
-        def break_points
-=begin edoc
-Method to return the list of breakpoints
-
-@return Array containing all breakpoints.
-=end
-            DEBUGGER__.break_points
-        end
-
-        def context(th)
-=begin edoc
-Method returning the context of a thread.
-
-@param th thread object to get the context for
-@return the context for the thread
-=end
-            DEBUGGER__.context(th)
-        end
-
-        def attached?
-=begin edoc
-Method returning the attached state.
-
-@return flag indicating, whether the debugger is attached to the IDE.
-=end
-            DEBUGGER__.attached?
-        end
-
-        def set_last_thread(th)
-=begin edoc
-Method to remember the last thread.
-
-@param th thread to be remembered.
-=end
-            DEBUGGER__.set_last_thread(th)
-        end
-
-        def debug_silent_eval(str, binding_)
-=begin edoc
-Method to eval a string without output.
-
-@param str String containing the expression to be evaluated
-@param binding_ the binding for the evaluation
-@return the result of the evaluation
-=end
-            val = eval(str, binding_)
-            val
-        end
-
-        def thnum
-=begin edoc
-Method returning the thread number of the current thread.
-
-@return thread number of the current thread.
-=end
-            num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-            unless num
-                DEBUGGER__.make_thread_list
-                num = DEBUGGER__.instance_eval{@thread_list[Thread.current]}
-            end
-            num
-        end
-
-        def debug_command(file, line, id, binding_)
-=begin edoc
-Method to execute the next debug command.
-=end
-            MUTEX.lock
-            set_last_thread(Thread.current)
-            unless attached?
-                MUTEX.unlock
-                resume_all
-                return
-            end
-            @frame_pos = 0
-            @frames[0] = [binding_, file, line, id]
-            stdout.printf_line(@frames)
-            MUTEX.unlock
-            resume_all
-            eventLoop
-        end
-
-        def frame_set_pos(file, line)
-=begin edoc
-Method to set the frame position of the current frame.
-=end
-            if @frames[0]
-                @frames[0][1] = file
-                @frames[0][2] = line
-            end
-        end
-
-        def check_break_points(file, pos, binding_, id)
-=begin edoc
-Method to check, if the given position contains an active breakpoint.
-
-@param file filename containing the currently executed line (String)
-@param pos line number currently executed (int)
-@param binding_ current binding object
-@param id (ignored)
-@return flag indicating an active breakpoint (boolean)
-=end
-            # bp[0] enabled flag
-            # bp[1] 0 = breakpoint, 1 = watch expression
-            # bp[2] filename
-            # bp[3] linenumber
-            # bp[4] temporary flag
-            # bp[5] condition
-            # bp[6] ignore count
-            # bp[7] special condition
-            # bp[8] hash of special values
-            return false if break_points.empty?
-            break_points.each do |b|
-                if b[0]
-                    if b[1] == 0 and b[2] == file and b[3] == pos   # breakpoint
-                        # Evaluate condition
-                        if b[5]
-                            begin
-                                if debug_silent_eval(b[5], binding_)
-                                    if b[6] == 0    # ignore count reached
-                                        # Delete once reached if temporary breakpoint
-                                        clear_break_point(file, pos) if b[4]
-                                        return true
-                                    else
-                                        b[6] -= 1
-                                    end
-                                end
-                            rescue StandardError, ScriptError
-                                nil
-                            end
-                        else
-                            if b[6] == 0    # ignore count reached
-                                # Delete once reached if temporary breakpoint
-                                clear_break_point(file, pos) if b[4]
-                                return true
-                            else
-                                b[6] -= 1
-                            end
-                        end
-                    elsif b[1] == 1                                 # watch expression
-                        begin
-                            bd = @frame_pos
-                            val = debug_silent_eval(b[5], binding_)
-                            if b[7].length() > 0
-                                if b[7] == "??created??"
-                                    if b[8][bd][0] == false
-                                        b[8][bd][0] = true
-                                        b[8][bd][1] = val
-                                        return true
-                                    else
-                                        next
-                                    end
-                                end
-                                b[8][bd][0] = true
-                                if b[7] == "??changed??"
-                                    if b[8][bd][1] != val
-                                        b[8][bd][1] = val
-                                        if b[8][bd][2] > 0
-                                            b[8][bd][2] -= 1
-                                            next
-                                        else
-                                            return true
-                                        end
-                                    else
-                                        next
-                                    end
-                                end
-                                next
-                            end
-                            if val
-                                if b[6] == 0    # ignore count reached
-                                    # Delete once reached if temporary breakpoint
-                                    clear_watch_point(b[2]) if b[4]
-                                    return true
-                                else
-                                    b[6] -= 1
-                                end
-                            end
-                        rescue StandardError, ScriptError
-                            if b[7].length() > 0
-                                if b[8][bd]
-                                    b[8][bd][0] = false
-                                else
-                                    b[8][bd] = [false, nil, b[6]]
-                                end
-                            else
-                                val = nil
-                            end
-                        end
-                    end
-                end
-            end
-            return false
-        end
-
-        def clear_break_point(file, pos)
-=begin edoc
-Method to delete a specific breakpoint.
-
-@param file filename containing the breakpoint (String)
-@param pos line number containing the breakpoint (int)
-=end
-            delete_break_point(file, pos)
-            stdout.printf_clear_breakpoint(file, pos)
-        end
-    
-        def add_break_point(file, pos, temp = false, cond = nil)
-=begin edoc
-Method to add a breakpoint.
-
-@param file filename for the breakpoint (String)
-@param pos line number for the breakpoint (int)
-@param temp flag indicating a temporary breakpoint (boolean)
-@param cond condition of a conditional breakpoint (String)
-=end
-            break_points.push [true, 0, file, pos, temp, cond, 0]
-        end
-
-        def delete_break_point(file, pos)
-=begin edoc
-Method to delete a breakpoint.
-
-@param file filename of the breakpoint (String)
-@param pos line number of the breakpoint (int)
-=end
-            break_points.delete_if { |bp|
-                bp[1] == 0 and bp[2] == file and bp[3] == pos
-            }
-        end
-
-        def enable_break_point(file, pos, enable)
-=begin edoc
-Method to set the enabled state of a breakpoint.
-
-@param file filename of the breakpoint (String)
-@param pos line number of the breakpoint (int)
-@param enable flag indicating the new enabled state (boolean)
-=end
-            break_points.each do |bp|
-                if (bp[1] == 0 and bp[2] == file and bp[3] == pos)
-                    bp[0] = enable 
-                    break
-                end
-            end
-        end
-
-        def ignore_break_point(file, pos, count)
-=begin edoc
-Method to set the ignore count of a breakpoint.
-
-@param file filename of the breakpoint (String)
-@param pos line number of the breakpoint (int)
-@param count ignore count to be set (int)
-=end
-            break_points.each do |bp|
-                if (bp[2] == file and bp[3] == pos)
-                    bp[6] = count 
-                    break
-                end
-            end
-        end
-
-        def clear_watch_point(cond)
-=begin edoc
-Method to delete a specific watch expression.
-
-@param cond expression specifying the watch expression (String)
-=end
-            delete_watch_point(cond)
-            stdout.printf_clear_watchexpression(cond)
-        end
-    
-        def add_watch_point(cond, temp = false)
-=begin edoc
-Method to add a watch expression.
-
-@param cond expression of the watch expression (String)
-@param temp flag indicating a temporary watch expression (boolean)
-=end
-            co1, co2 = cond.split()
-            if co2 == "??created??" or co2 == "??changed??"
-                break_points.push [true, 1, cond, 0, temp, co1, 0, co2, {}]
-            else
-                break_points.push [true, 1, cond, 0, temp, cond, 0, "", {}]
-            end
-        end
-    
-        def delete_watch_point(cond)
-=begin edoc
-Method to delete a watch expression.
-
-@param cond expression of the watch expression (String)
-=end
-            break_points.delete_if { |bp|
-                bp[1] == 1 and bp[2] == cond
-            }
-        end
-    
-        def enable_watch_point(cond, enable)
-=begin edoc
-Method to set the enabled state of a watch expression.
-
-@param cond expression of the watch expression (String)
-@param enable flag indicating the new enabled state (boolean)
-=end
-            break_points.each do |bp|
-                if (bp[1] == 1 and bp[2] == cond)
-                    bp[0] = enable
-                    break
-                end
-            end
-        end
-    
-        def ignore_watch_point(cond, count)
-=begin edoc
-Method to set the ignore count of a watch expression.
-
-@param cond expression of the watch expression (String)
-@param count ignore count to be set (int)
-=end
-            break_points.each do |bp|
-                if (bp[1] == 1 and bp[2] == cond)
-                    bp[6] = count
-                    break
-                end
-            end
-        end
-    
-        def excn_handle(file, line, id, binding_)
-=begin edoc
-Method to handle an exception
-
-@param file filename containing the currently executed line (String)
-@param pos line number currently executed (int)
-@param id (ignored)
-@param binding_ current binding object
-=end
-            if $!.class <= SystemExit
-                set_trace_func nil
-                stdout.printf_exit($!.status)
-                return
-            elsif $!.class <= ScriptError
-                msgParts = $!.message.split(":", 3)
-                filename = File.expand_path(msgParts[0])
-                linenr = msgParts[1].to_i
-                exclist = ["", [filename, linenr, 0]]
-                stdout.printf_scriptExcn(exclist)
-            else
-                exclist = ["%s" % $!.class, "%s" % $!, [file, line]]
-                @frames.each do |_binding, _file, _line, _id|
-                    next if [_file, _line] == exclist[-1]
-                    exclist << [_file, _line, '', '']
-                end
-                stdout.printf_excn(exclist)
-            end
-            debug_command(file, line, id, binding_)
-        end
-
-        def skip_it?(file)
-=begin edoc
-Method to filter out debugger files.
-
-Tracing is turned off for files that are part of the
-debugger that are called from the application being debugged.
-
-@param file name of the file to be checked (String)
-@return flag indicating, whether the file should be skipped (boolean)
-=end
-            if file =~ /\(eval\)/
-                return true
-            end
-           
-            if not traceRuby? and
-               (file =~ /#{RbConfig::CONFIG['sitelibdir']}/ or
-                file =~ /#{RbConfig::CONFIG['rubylibdir']}/)
-                return true
-            end
-            
-            if ["AsyncFile.rb", "AsyncIO.rb", "Config.rb", "DebugClient.rb",
-                "DebugClientBaseModule.rb", "DebugClientCapabilities.rb",
-                "DebugProtocol.rb", "DebugQuit.rb", "Debuggee.rb"].include?(
-                    File.basename(file))
-                return true
-            end
-            return false
-        end
-    
-        def trace_func(event, file, line, id, binding_, klass)
-=begin edoc
-Method executed by the tracing facility.
-
-@param event the tracing event (String)
-@param file the name of the file being traced (String)
-@param line the line number being traced (int)
-@param id object id
-@param binding_ a binding object
-@param klass name of a class
-=end
-            context(Thread.current).check_suspend
-          
-            if skip_it?(file) and not ["call","return"].include?(event)
-                case event
-                when 'line'
-                    frame_set_pos(file, line)
-                    
-                when 'call'
-                    @frames.unshift [binding_, file, line, id]
-                
-                when 'c-call'
-                    frame_set_pos(file, line)
-            
-                when 'class'
-                    @frames.unshift [binding_, file, line, id]
-                    
-                when 'return', 'end'
-                    @frames.shift
-        
-                when 'raise' 
-                    excn_handle(file, line, id, binding_)
-                    
-                end
-                @last_file = file
-                return
-            end
-        
-            @file = file
-            @line = line
-            
-            case event
-            when 'line'
-                frame_set_pos(file, line)
-                eventPoll
-                if !@no_step or @frames.size == @no_step
-                    @stop_next -= 1
-                    @stop_next = -1 if @stop_next < 0
-                elsif @frames.size < @no_step
-                    @stop_next = 0        # break here before leaving...
-                else
-                    # nothing to do. skipped.
-                end
-                if check_break_points(file, line, binding_, id) or @stop_next == 0 
-                    @no_step = nil
-                    suspend_all
-                    debug_command(file, line, id, binding_)
-                end
-    
-            when 'call'
-                @frames.unshift [binding_, file, line, id]
-                if check_break_points(file, id.id2name, binding_, id) or
-                    check_break_points(klass.to_s, id.id2name, binding_, id)
-                    suspend_all
-                    debug_command(file, line, id, binding_)
-                end
-    
-            when 'c-call'
-                frame_set_pos(file, line)
-##                if id == :require and klass == Kernel
-##                    @frames.unshift [binding_, file, line, id]
-##                else
-##                    frame_set_pos(file, line)
-##                end
-##        
-##            when 'c-return'
-##                if id == :require and klass == Kernel
-##                    if @frames.size == @finish_pos
-##                        @stop_next = 1
-##                        @finish_pos = 0
-##                    end
-##                    @frames.shift
-##                end
-    
-            when 'class'
-                @frames.unshift [binding_, file, line, id]
-    
-            when 'return', 'end'
-                if @frames.size == @finish_pos
-                    @stop_next = 1
-                    @finish_pos = 0
-                end
-                @frames.shift
-    
-            when 'raise'
-                @no_step = nil
-                @stop_next = 0        # break here before leaving...
-                excn_handle(file, line, id, binding_)
-    
-            end
-            @last_file = file
-        end
-    end
-
-    trap("INT") { DEBUGGER__.interrupt }
-    @last_thread = Thread::main
-    @max_thread = 1
-    @thread_list = {Thread::main => 1}
-    @break_points = []
-    @waiting = []
-    @stdout = STDOUT
-    @loaded_files = {}
-
-    class SilentObject
-=begin edoc
-Class defining an object that ignores all messages.
-=end
-        def method_missing( msg_id, *a, &b )
-=begin edoc
-Method invoked for all messages it cannot handle.
-
-@param msg_id symbol for the method called
-@param *a arguments passed to the missing method
-@param &b unknown
-=end
-        end
-    end
-    SilentClient = SilentObject.new()
-    @client = SilentClient
-    @attached = false
-
-    class <<DEBUGGER__
-=begin edoc
-Class defining a singleton object for the debugger.
-=end
-        def stdout
-=begin edoc
-Method returning the stdout object.
-
-@return reference to the stdout object
-=end
-            @stdout
-        end
-
-        def stdout=(s)
-=begin edoc
-Method to set the stdout object.
-
-@param s reference to the stdout object
-=end
-            @stdout = s
-        end
-
-        def break_points
-=begin edoc
-Method to return the list of breakpoints
-
-@return Array containing all breakpoints.
-=end
-            @break_points
-        end
-
-        def last_thread
-=begin edoc
-Method returning the last active thread.
-
-@return active thread
-=end
-            @last_thread
-        end
-
-        def attach( debugger )
-=begin edoc
-Method to connect the debugger to the IDE.
-
-@param debugger reference to the object handling the
-    communication with the IDE.
-=end
-            unless @attached
-                set_client( debugger )
-                @attached = true
-                interrupt
-            else
-                false
-            end
-        end
-
-        def client
-=begin edoc
-Method returning a reference to the client object.
-
-@return reference to the client object.
-=end
-            @client
-        end
-
-        def set_client( debugger )
-=begin edoc
-Method to set the client handling the connection.
-
-@param debugger reference to the object handling the connection
-=end
-            @client = Client.new( debugger )
-            DEBUGGER__.stdout = @client
-        end
-
-        def attached?
-=begin edoc
-Method returning the attached state.
-
-@return flag indicating, whether the debugger is attached to the IDE.
-=end
-            @attached
-        end
-
-        def quit(status = 0)
-=begin edoc
-Method to quit the debugger.
-
-@param status exit status of the program
-=end
-            @client.printf_exit(status)
-            STDERR.flush; STDOUT.flush
-        end
-
-        def waiting
-=begin edoc
-Method returning the waiting list.
-
-@return the waiting list
-=end
-            @waiting
-        end
-
-        def set_last_thread(th)
-=begin edoc
-Method to remember the last thread.
-
-@param th thread to be remembered.
-=end
-            @last_thread = th
-        end
-
-        def suspend
-=begin edoc
-Method to suspend the program being debugged.
-=end
-            MUTEX.synchronize do
-                make_thread_list
-                for th, in @thread_list
-                    next if th == Thread.current
-                    context(th).set_suspend
-                end
-            end
-            # Schedule other threads to suspend as soon as possible.
-            Thread.pass
-        end
-
-        def resume
-=begin edoc
-Method to resume the program being debugged.
-=end
-            MUTEX.synchronize do
-                make_thread_list
-                for th, in @thread_list
-                    next if th == Thread.current
-                    context(th).clear_suspend
-                end
-                waiting.each do |th|
-                    th.run
-                end
-                waiting.clear
-            end
-            # Schedule other threads to restart as soon as possible.
-            Thread.pass
-        end
-
-        def context(thread=Thread.current)
-=begin edoc
-Method returning the context of a thread.
-
-@param th threat the context is requested for
-@return context object for the thread
-=end
-            c = thread[:__debugger_data__]
-            unless c
-                thread[:__debugger_data__] = c = Context.new
-            end
-            c
-        end
-
-        def interrupt
-=begin edoc
-Method to stop execution at the next instruction.
-=end
-            context(@last_thread).stop_next
-        end
-
-        def get_thread(num)
-=begin edoc
-Method returning a thread by number.
-
-@param num thread number (int)
-@return thread with the requested number
-=end
-            th = @thread_list.key(num)
-            unless th
-                @stdout.print "No thread ##{num}\n"
-                throw :debug_error
-            end
-            th
-            end
-
-        def thread_list(num)
-=begin edoc
-Method to list the state of a thread.
-
-@param num thread number (int)
-=end
-            th = get_thread(num)
-            if th == Thread.current
-                @stdout.print "+"
-            else
-                @stdout.print " "
-            end
-            @stdout.printf "%d ", num
-            @stdout.print th.inspect, "\t"
-            file = context(th).instance_eval{@file}
-            if file
-                @stdout.print file,":",context(th).instance_eval{@line}
-            end
-            @stdout.print "\n"
-        end
-
-        def thread_list_all
-=begin edoc
-Method to list the state of all threads.
-=end
-            for th in @thread_list.values.sort
-                thread_list(th)
-            end
-        end
-
-        def make_thread_list
-=begin edoc
-Method to create a thread list.
-=end
-            hash = {}
-            for th in Thread::list
-                next if (th[:__debugger_hidden__])
-                if @thread_list.key? th
-                    hash[th] = @thread_list[th]
-                else
-                    @max_thread += 1
-                    hash[th] = @max_thread
-                end
-            end
-            @thread_list = hash
-        end
-
-        def debug_thread_info(input, binding_)
-=begin edoc
-Method handling the thread related debug commands.
-
-@param input debug command (String)
-@param binding_ reference to the binding object
-=end
-            case input
-            when /^l(?:ist)?/
-                make_thread_list
-                thread_list_all
-
-            when /^c(?:ur(?:rent)?)?$/
-                make_thread_list
-                thread_list(@thread_list[Thread.current])
-
-            when /^(?:sw(?:itch)?\s+)?(\d+)/
-                make_thread_list
-                th = get_thread($1.to_i)
-                if th == Thread.current
-                    @stdout.print "It's the current thread.\n"
-                else
-                    thread_list(@thread_list[th])
-                    context(th).stop_next
-                    th.run
-                    return :cont
-                end
-
-            when /^stop\s+(\d+)/
-                make_thread_list
-                th = get_thread($1.to_i)
-                if th == Thread.current
-                    @stdout.print "It's the current thread.\n"
-                elsif th.stop?
-                    @stdout.print "Already stopped.\n"
-                else
-                    thread_list(@thread_list[th])
-                    context(th).suspend 
-                end
-
-            when /^resume\s+(\d+)/
-                make_thread_list
-                th = get_thread($1.to_i)
-                if th == Thread.current
-                    @stdout.print "It's the current thread.\n"
-                elsif !th.stop?
-                    @stdout.print "Already running."
-                else
-                    thread_list(@thread_list[th])
-                    th.run
-                end
-            end
-        end
-    
-        def eventLoop
-=begin edoc
-Method calling the main event loop.
-=end
-            @client.eventLoop
-        end
-    
-        def eventPoll
-=begin edoc
-Method calling the main function polling for an event sent by the IDE.
-=end
-            @client.eventPoll
-        end
-        
-        def traceRuby?
-=begin edoc
-Method to check, if we should trace into the Ruby interpreter libraries.
-=end
-            @client.traceRuby?
-        end
-    end
-
-
-    class Context
-        def eventLoop
-=begin edoc
-Method calling the main event loop.
-=end
-            DEBUGGER__.eventLoop
-        end
-    
-        def eventPoll
-=begin edoc
-Method calling the main function polling for an event sent by the IDE.
-=end
-            DEBUGGER__.eventPoll
-        end
-        
-        def traceRuby?
-=begin edoc
-Method to check, if we should trace into the Ruby interpreter libraries.
-=end
-            DEBUGGER__.traceRuby?
-        end
-    end
-
-    require 'DebugProtocol'
-  
-    class Client
-=begin edoc
-Class handling the connection to the IDE.
-=end
-        def initialize( debugger )
-=begin edoc
-Constructor
-
-@param debugger reference to the object having the IDE connection.
-=end
-            @debugger = debugger
-        end
-
-        def eventLoop
-=begin edoc
-Method calling the main event loop.
-=end
-            @debugger.eventLoop()
-        end
-    
-        def eventPoll
-=begin edoc
-Method calling the main function polling for an event sent by the IDE.
-=end
-            @debugger.eventPoll()
-        end
-        
-        def traceRuby?
-=begin edoc
-Method to check, if we should trace into the Ruby interpreter libraries.
-=end
-            @debugger.traceRuby
-        end
-
-        def printf( *args )
-=begin edoc
-Method to print something to the IDE.
-
-@param *args Arguments to be printed.
-=end
-            @debugger.write("#{args.join(', ')}\n")
-        end
-
-        def printf_line(frames)
-=begin edoc
-Method to report the current line and the current stack trace to the IDE.
-
-@param frames reference to the array containing the stack trace.
-=end
-            fr_list = []
-            for bind, file, line, id in frames
-                break unless bind
-                break if file =~ /\(eval\)/
-                fr_list << [file, line, id ? id.id2name : '', '']
-            end
-            
-            @debugger.write("%s%s\n" % [ResponseLine, fr_list.inspect])
-        end
-
-        def printf_excn(exclist)
-=begin edoc
-Method to report an exception to the IDE.
-
-@param exclist info about the exception to be reported
-=end
-            @debugger.write("%s%s\n" % [ResponseException, exclist.inspect])
-        end
-    
-        def printf_scriptExcn(exclist)
-=begin edoc
-Method to report a ScriptError to the IDE.
-
-@param exclist info about the exception to be reported
-=end
-            @debugger.write("%s%s\n" % [ResponseSyntax, exclist.inspect])
-        end
-
-        def printf_clear_breakpoint(file, line)
-=begin edoc
-Method to report the deletion of a temporary breakpoint to the IDE.
-
-@param file filename of the breakpoint (String)
-@param line line number of the breakpoint (int)
-=end
-            @debugger.write("%s%s,%d\n" % [ResponseClearBreak, file, line])
-        end
-    
-        def printf_clear_watchexpression(cond)
-=begin edoc
-Method to report the deletion of a temporary watch expression to the IDE.
-
-@param cond expression of the watch expression (String)
-=end
-            @debugger.write("%s%s\n" % [ResponseClearWatch, cond])
-        end
-    
-        def printf_exit(status)
-=begin edoc
-Method to report the exit status to the IDE.
-
-@param status exit status of the program (int)
-=end
-            @debugger.write("%s%d\n" % [ResponseExit, status])
-        end
-    end
-
-    class Context
-        def current_frame
-=begin edoc
-Method returning the current execution frame.
-
-@return current execution frame
-=end
-            @frames[@frame_pos]
-        end
-    
-        def get_frame(frameno)
-=begin edoc
-Method returning a specific execution frame.
-
-@param frameno frame number of the frame to be returned (int)
-@return the requested execution frame
-=end
-            @frames[frameno]
-        end
-    
-        def current_binding
-=begin edoc
-Method returning the binding object of the current execution frame.
-
-@return binding object of the current execution frame
-=end
-            @frames[@frame_pos][0]
-        end
-    
-        def get_binding(frameno)
-=begin edoc
-Method returning the binding object of a specific execution frame.
-
-@param frameno frame number of the frame (int)
-@return the requested binding object
-=end
-            @frames[frameno][0]
-        end
-    end
-  
-    Thread.main["name"] = 'Main'
-end
--- a/DebugClients/Ruby/__init__.rb	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-=begin edoc
-Package implementing the Ruby debugger.
-=end
--- a/Debugger/DebugServer.py	Sat Nov 07 15:54:09 2015 +0100
+++ b/Debugger/DebugServer.py	Sun Nov 08 17:01:39 2015 +0100
@@ -30,12 +30,11 @@
 import Utilities
 
 
-DebuggerInterfaces = [
-    "DebuggerInterfacePython",
-    "DebuggerInterfacePython3",
-    ##    "DebuggerInterfaceRuby",
-    "DebuggerInterfaceNone",
-]
+DebuggerInterfaces = {
+    "Python": "DebuggerInterfacePython",
+    "Python3": "DebuggerInterfacePython3",
+    "None": "DebuggerInterfaceNone",
+}
 
 
 class DebugServer(QTcpServer):
@@ -161,6 +160,13 @@
         """
         super(DebugServer, self).__init__()
         
+        self.__debuggerInterfaceRegistry = {}
+        # the client language is the key, a list containing the client
+        # capabilities, the list of associated file extensions, a
+        # function reference to create the debugger interface (see
+        # __createDebuggerInterface() below) and a function to be called
+        # to get the registration data as values
+        
         # create our models
         self.breakpointModel = BreakPointModel(self)
         self.watchpointModel = WatchPointModel(self)
@@ -282,44 +288,81 @@
         """
         Public slot to handle the preferencesChanged signal.
         """
-        # TODO: eric 6.2: change this to call all registered debugger
-        #       interfaces getRegistryData() method ignoring the client
-        #       language and update the client capabilities and client
-        #       associations.
-        self.__registerDebuggerInterfaces()
+        registeredInterfaces = {}
+        for language in self.__debuggerInterfaceRegistry:
+            registeredInterfaces[language] = \
+                self.__debuggerInterfaceRegistry[language][-1]
+                # last entry is the registry data function
+        
+        self.__debuggerInterfaceRegistry = {}
+        for language, getRegistryData in registeredInterfaces.items():
+            self.registerDebuggerInterface(language, getRegistryData)
+        
+    def registerDebuggerInterface(self, name, getRegistryData):
+        """
+        Public method to register a debugger interface.
+        
+        @param name name of the debugger interface
+        @type str
+        @param getRegistryData reference to a function to be called
+            to get the debugger interface details. This method shall
+            return the client language, the client capabilities, the
+            list of associated file extensions and a function reference
+            to create the debugger interface (see __createDebuggerInterface())
+        @type function
+        """
+        if name in self.__debuggerInterfaceRegistry:
+            E5MessageBox.warning(
+                None,
+                self.tr("Register Debugger Interface"),
+                self.tr("""<p>The debugger interface <b>{0}</b> has already"""
+                        """ been registered. Ignoring this request.</p>"""))
+            return
+        
+        clientLanguage, clientCapabilities, clientExtensions, \
+        interfaceCreator = getRegistryData()
+        if clientLanguage:
+            self.__debuggerInterfaceRegistry[clientLanguage] = \
+                [clientCapabilities, clientExtensions, interfaceCreator, 
+                 getRegistryData]
+        
+    def unregisterDebuggerInterface(self, name):
+        """
+        Private method to unregister a debugger interface.
+        
+        @param name name of the debugger interface
+        @type str
+        """
+        if name in self.__debuggerInterfaceRegistry:
+            del self.__debuggerInterfaceRegistry[name]
+        
+    def __findLanguageForExtension(self, ext):
+        """
+        Private method to get the language associated with a file extension.
+        
+        @param ext file extension
+        @type str
+        @return associated language
+        @rtype str
+        """
+        for language in self.__debuggerInterfaceRegistry:
+            if ext in self.__debuggerInterfaceRegistry[language][1]:
+                return language
+        
+        return ""
         
     def __registerDebuggerInterfaces(self):
         """
-        Private method to register the available debugger interface modules.
+        Private method to register the available internal debugger interfaces.
         """
-        self.__clientCapabilities = {}
-        self.__clientAssociations = {}
-        # TODO: eric 6.2: Add a debugger interface registry dictionary with the
-        #       debugger name (language) as a key
-        # TODO: eric 6.2: Add a registerDebuggerInterface() method taking a
-        #       name and a getRegistryData() method. This method should be
-        #       called when a debugger backend plug-in is activated.
-        #       getRegistryData() shall return the client language, the client
-        #       capabilities, the list of associated file extensions and a
-        #       function reference to create the debugger interface (see
-        #       __createDebuggerInterface() below
-        # TODO: eric 6.2: Add an unregisterDebuggerInterface() method with a
-        #       name as parameter to revert the above.
-        
-        for interface in DebuggerInterfaces:
+        for name, interface in DebuggerInterfaces.items():
             modName = "Debugger.{0}".format(interface)
             mod = __import__(modName)
             components = modName.split('.')
             for comp in components[1:]:
                 mod = getattr(mod, comp)
             
-            clientLanguage, clientCapabilities, clientExtensions = \
-                mod.getRegistryData()
-            if clientLanguage:
-                self.__clientCapabilities[clientLanguage] = clientCapabilities
-                for extension in clientExtensions:
-                    if extension not in self.__clientAssociations:
-                        self.__clientAssociations[extension] = clientLanguage
+            self.registerDebuggerInterface(name, mod.getRegistryData)
         
     def getSupportedLanguages(self, shellOnly=False):
         """
@@ -329,7 +372,7 @@
             interactive shell should be returned
         @return list of supported languages (list of strings)
         """
-        languages = list(self.__clientCapabilities.keys())
+        languages = list(self.__debuggerInterfaceRegistry.keys())
         try:
             languages.remove("None")
         except ValueError:
@@ -338,7 +381,7 @@
         if shellOnly:
             languages = \
                 [lang for lang in languages
-                 if self.__clientCapabilities[lang] &
+                 if self.__debuggerInterfaceRegistry[lang][0] &
                     DebugClientCapabilities.HasShell]
         
         return languages[:]
@@ -351,12 +394,10 @@
         @return tuple of extensions associated with the language
             (tuple of strings)
         """
-        extensions = []
-        for ext, lang in list(self.__clientAssociations.items()):
-            if lang == language:
-                extensions.append(ext)
-        
-        return tuple(extensions)
+        if language in self.__debuggerInterfaceRegistry:
+            return tuple(self.__debuggerInterfaceRegistry[language][1])
+        else:
+            return tuple()
         
     def __createDebuggerInterface(self, clientType=None):
         """
@@ -364,31 +405,17 @@
         
         @param clientType type of the client interface to be created (string)
         """
-        # TODO: eric 6.2: make debugger interfaces be registered in order to
-        # allow to implement a debugger backend as a plug-in.
         if self.lastClientType != self.clientType or clientType is not None:
             if clientType is None:
                 clientType = self.clientType
-            if clientType == "Python2":
-                from .DebuggerInterfacePython import DebuggerInterfacePython
-                self.debuggerInterface = DebuggerInterfacePython(
-                    self, self.passive)
-            elif clientType == "Python3":
-                from .DebuggerInterfacePython3 import DebuggerInterfacePython3
-                self.debuggerInterface = DebuggerInterfacePython3(
-                    self, self.passive)
-            elif clientType == "Ruby":
-                from .DebuggerInterfaceRuby import DebuggerInterfaceRuby
-                self.debuggerInterface = DebuggerInterfaceRuby(
-                    self, self.passive)
-            elif clientType == "None":
-                from .DebuggerInterfaceNone import DebuggerInterfaceNone
-                self.debuggerInterface = DebuggerInterfaceNone(
-                    self, self.passive)
+            if clientType in self.__debuggerInterfaceRegistry:
+                self.debuggerInterface = \
+                    self.__debuggerInterfaceRegistry[clientType][2](
+                        self, self.passive)
             else:
-                from .DebuggerInterfaceNone import DebuggerInterfaceNone
-                self.debuggerInterface = DebuggerInterfaceNone(
-                    self, self.passive)
+                self.debuggerInterface = \
+                    self.__debuggerInterfaceRegistry["None"][2](
+                        self, self.passive)
                 self.clientType = "None"
         
     def __setClientType(self, clType):
@@ -674,7 +701,7 @@
         @return debug client capabilities (integer)
         """
         try:
-            return self.__clientCapabilities[type]
+            return self.__debuggerInterfaceRegistry[type][0]
         except KeyError:
             return 0    # no capabilities
         
@@ -792,7 +819,7 @@
                 self.__setClientType(clientType)
             else:
                 self.__setClientType(
-                    self.__clientAssociations[os.path.splitext(fn)[1]])
+                    self.__findLanguageForExtension(os.path.splitext(fn)[1]))
         except KeyError:
             self.__setClientType('Python3')    # assume it is a Python3 file
         self.startClient(False, forProject=forProject,
@@ -837,7 +864,7 @@
                 self.__setClientType(clientType)
             else:
                 self.__setClientType(
-                    self.__clientAssociations[os.path.splitext(fn)[1]])
+                    self.__findLanguageForExtension(os.path.splitext(fn)[1]))
         except KeyError:
             self.__setClientType('Python3')    # assume it is a Python3 file
         self.startClient(False, forProject=forProject,
@@ -876,7 +903,7 @@
                 self.__setClientType(clientType)
             else:
                 self.__setClientType(
-                    self.__clientAssociations[os.path.splitext(fn)[1]])
+                    self.__findLanguageForExtension(os.path.splitext(fn)[1]))
         except KeyError:
             self.__setClientType('Python3')    # assume it is a Python3 file
         self.startClient(False, forProject=forProject,
@@ -916,7 +943,7 @@
                 self.__setClientType(clientType)
             else:
                 self.__setClientType(
-                    self.__clientAssociations[os.path.splitext(fn)[1]])
+                    self.__findLanguageForExtension(os.path.splitext(fn)[1]))
         except KeyError:
             self.__setClientType('Python3')    # assume it is a Python3 file
         self.startClient(False, forProject=forProject,
@@ -1161,7 +1188,7 @@
                 self.__setClientType(clientType)
             else:
                 self.__setClientType(
-                    self.__clientAssociations[os.path.splitext(fn)[1]])
+                    self.__findLanguageForExtension(os.path.splitext(fn)[1]))
         except KeyError:
             self.__setClientType('Python3')    # assume it is a Python3 file
         self.startClient(False)
@@ -1380,7 +1407,7 @@
         @param capabilities bitmaks with the client capabilities (integer)
         @param clientType type of the debug client (string)
         """
-        self.__clientCapabilities[clientType] = capabilities
+        self.__debuggerInterfaceRegistry[clientType][0] = capabilities
         self.clientCapabilities.emit(capabilities, clientType)
         
     def signalClientCompletionList(self, completionList, text):
--- a/Debugger/DebuggerInterfaceNone.py	Sat Nov 07 15:54:09 2015 +0100
+++ b/Debugger/DebuggerInterfaceNone.py	Sun Nov 08 17:01:39 2015 +0100
@@ -17,16 +17,6 @@
 ClientTypeAssociations = []
 
 
-def getRegistryData():
-    """
-    Module functionto get characterising data for the debugger interface.
-    
-    @return list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
-    """
-    return ["None", ClientDefaultCapabilities, ClientTypeAssociations]
-
-
 class DebuggerInterfaceNone(QObject):
     """
     Class implementing a dummy debugger interface for the debug server.
@@ -413,3 +403,30 @@
         public method to stop a unittest run.
         """
         return
+    
+
+def createDebuggerInterfaceNone(debugServer, passive):
+    """
+    Module function to create a debugger interface instance.
+    
+        
+    @param debugServer reference to the debug server
+    @type DebugServer
+    @param passive flag indicating passive connection mode
+    @type bool
+    @return instantiated debugger interface
+    @rtype DebuggerInterfacePython
+    """
+    return DebuggerInterfaceNone(debugServer, passive)
+
+
+def getRegistryData():
+    """
+    Module functionto get characterizing data for the debugger interface.
+    
+    @return tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+    @rtype tuple of (str, int, list of str, function)
+    """
+    return ["None", ClientDefaultCapabilities, ClientTypeAssociations,
+            createDebuggerInterfaceNone]
--- a/Debugger/DebuggerInterfacePython.py	Sat Nov 07 15:54:09 2015 +0100
+++ b/Debugger/DebuggerInterfacePython.py	Sun Nov 08 17:01:39 2015 +0100
@@ -30,26 +30,6 @@
 
 
 ClientDefaultCapabilities = DebugClientCapabilities.HasAll
-    
-
-def getRegistryData():
-    """
-    Module function to get characterising data for the debugger interface.
-    
-    @return list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
-    """
-    exts = []
-    for ext in Preferences.getDebugger("PythonExtensions").split():
-        if ext.startswith("."):
-            exts.append(ext)
-        else:
-            exts.append(".{0}".format(ext))
-    
-    if exts and Preferences.getDebugger("PythonInterpreter"):
-        return ["Python2", ClientDefaultCapabilities, exts]
-    else:
-        return ["", 0, []]
 
 
 class DebuggerInterfacePython(QObject):
@@ -1086,3 +1066,40 @@
             self.qsock.write(cmd.encode('utf8'))
         else:
             self.queue.append(cmd)
+    
+
+def createDebuggerInterfacePython(debugServer, passive):
+    """
+    Module function to create a debugger interface instance.
+    
+        
+    @param debugServer reference to the debug server
+    @type DebugServer
+    @param passive flag indicating passive connection mode
+    @type bool
+    @return instantiated debugger interface
+    @rtype DebuggerInterfacePython
+    """
+    return DebuggerInterfacePython(debugServer, passive)
+
+
+def getRegistryData():
+    """
+    Module function to get characterizing data for the debugger interface.
+    
+    @return tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+    @rtype tuple of (str, int, list of str, function)
+    """
+    exts = []
+    for ext in Preferences.getDebugger("PythonExtensions").split():
+        if ext.startswith("."):
+            exts.append(ext)
+        else:
+            exts.append(".{0}".format(ext))
+    
+    if exts and Preferences.getDebugger("PythonInterpreter"):
+        return ["Python2", ClientDefaultCapabilities, exts,
+                createDebuggerInterfacePython]
+    else:
+        return ["", 0, [], None]
--- a/Debugger/DebuggerInterfacePython3.py	Sat Nov 07 15:54:09 2015 +0100
+++ b/Debugger/DebuggerInterfacePython3.py	Sun Nov 08 17:01:39 2015 +0100
@@ -29,26 +29,6 @@
 
 
 ClientDefaultCapabilities = DebugClientCapabilities.HasAll
-    
-
-def getRegistryData():
-    """
-    Module function to get characterising data for the debugger interface.
-    
-    @return list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
-    """
-    exts = []
-    for ext in Preferences.getDebugger("Python3Extensions").split():
-        if ext.startswith("."):
-            exts.append(ext)
-        else:
-            exts.append(".{0}".format(ext))
-    
-    if exts:
-        return ["Python3", ClientDefaultCapabilities, exts]
-    else:
-        return ["", 0, []]
 
 
 class DebuggerInterfacePython3(QObject):
@@ -1086,3 +1066,40 @@
             self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
         else:
             self.queue.append(cmd)
+    
+
+def createDebuggerInterfacePython3(debugServer, passive):
+    """
+    Module function to create a debugger interface instance.
+    
+        
+    @param debugServer reference to the debug server
+    @type DebugServer
+    @param passive flag indicating passive connection mode
+    @type bool
+    @return instantiated debugger interface
+    @rtype DebuggerInterfacePython
+    """
+    return DebuggerInterfacePython3(debugServer, passive)
+
+
+def getRegistryData():
+    """
+    Module function to get characterizing data for the debugger interface.
+    
+    @return tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+    @rtype tuple of (str, int, list of str, function)
+    """
+    exts = []
+    for ext in Preferences.getDebugger("Python3Extensions").split():
+        if ext.startswith("."):
+            exts.append(ext)
+        else:
+            exts.append(".{0}".format(ext))
+    
+    if exts:
+        return ["Python3", ClientDefaultCapabilities, exts,
+                createDebuggerInterfacePython3]
+    else:
+        return ["", 0, [], None]
--- a/Debugger/DebuggerInterfaceRuby.py	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,920 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2007 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the Ruby debugger interface for the debug server.
-"""
-
-from __future__ import unicode_literals
-
-import os
-
-from PyQt5.QtCore import QObject, QTextCodec, QProcess, QProcessEnvironment, \
-    QTimer
-
-from E5Gui.E5Application import e5App
-from E5Gui import E5MessageBox
-
-from . import DebugProtocol
-from . import DebugClientCapabilities
-
-import Preferences
-import Utilities
-
-from eric6config import getConfig
-
-
-ClientDefaultCapabilities = \
-    DebugClientCapabilities.HasDebugger | \
-    DebugClientCapabilities.HasShell | \
-    DebugClientCapabilities.HasInterpreter | \
-    DebugClientCapabilities.HasCompleter
-    
-ClientTypeAssociations = [".rb"]
-
-
-def getRegistryData():
-    """
-    Module function to get characterising data for the debugger interface.
-    
-    @return list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
-    """
-    if Preferences.getDebugger("RubyInterpreter"):
-        return ["Ruby", ClientDefaultCapabilities, ClientTypeAssociations]
-    else:
-        return ["", 0, []]
-
-
-class DebuggerInterfaceRuby(QObject):
-    """
-    Class implementing the Ruby debugger interface for the debug server.
-    """
-    def __init__(self, debugServer, passive):
-        """
-        Constructor
-        
-        @param debugServer reference to the debug server (DebugServer)
-        @param passive flag indicating passive connection mode (boolean)
-        """
-        super(DebuggerInterfaceRuby, self).__init__()
-        
-        self.__isNetworked = True
-        self.__autoContinue = not passive
-        
-        self.debugServer = debugServer
-        self.passive = passive
-        self.process = None
-        
-        self.qsock = None
-        self.queue = []
-        
-        # set default values for capabilities of clients
-        self.clientCapabilities = ClientDefaultCapabilities
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        self.codec = QTextCodec.codecForName(
-            str(Preferences.getSystem("StringEncoding")))
-        
-        if passive:
-            # set translation function
-            if Preferences.getDebugger("PathTranslation"):
-                self.translateRemote = \
-                    Preferences.getDebugger("PathTranslationRemote")
-                self.translateLocal = \
-                    Preferences.getDebugger("PathTranslationLocal")
-                self.translate = self.__remoteTranslation
-            else:
-                self.translate = self.__identityTranslation
-
-    def __identityTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the identity path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        return fn
-        
-    def __remoteTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        if remote2local:
-            return fn.replace(self.translateRemote, self.translateLocal)
-        else:
-            return fn.replace(self.translateLocal, self.translateRemote)
-        
-    def __startProcess(self, program, arguments, environment=None):
-        """
-        Private method to start the debugger client process.
-        
-        @param program name of the executable to start (string)
-        @param arguments arguments to be passed to the program (list of string)
-        @param environment dictionary of environment settings to pass
-            (dict of string)
-        @return the process object (QProcess) or None
-        """
-        proc = QProcess()
-        if environment is not None:
-            env = QProcessEnvironment()
-            for key, value in list(environment.items()):
-                env.insert(key, value)
-            proc.setProcessEnvironment(env)
-        args = []
-        for arg in arguments:
-            args.append(arg)
-        proc.start(program, args)
-        if not proc.waitForStarted(10000):
-            proc = None
-        
-        return proc
-        
-    def startRemote(self, port, runInConsole):
-        """
-        Public method to start a remote Ruby interpreter.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        interpreter = Preferences.getDebugger("RubyInterpreter")
-        if interpreter == "":
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr("""<p>No Ruby interpreter configured.</p>"""))
-            return None, False, ""
-        
-        debugClient = os.path.join(
-            getConfig('ericDir'), "DebugClients", "Ruby", "DebugClient.rb")
-        
-        redirect = str(Preferences.getDebugger("RubyRedirect"))
-        
-        if Preferences.getDebugger("RemoteDbgEnabled"):
-            ipaddr = self.debugServer.getHostAddress(False)[0]
-            rexec = Preferences.getDebugger("RemoteExecution")
-            rhost = Preferences.getDebugger("RemoteHost")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, os.path.abspath(debugClient),
-                        str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                
-                # set translation function
-                if Preferences.getDebugger("PathTranslation"):
-                    self.translateRemote = \
-                        Preferences.getDebugger("PathTranslationRemote")
-                    self.translateLocal = \
-                        Preferences.getDebugger("PathTranslationLocal")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if Preferences.getDebugger("DebugEnvironmentReplace"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            Preferences.getDebugger("DebugEnvironment"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or Preferences.getDebugger("ConsoleDbgEnabled"):
-            ccmd = Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def startRemoteForProject(self, port, runInConsole):
-        """
-        Public method to start a remote Ruby interpreter for a project.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        project = e5App().getObject("Project")
-        if not project.isDebugPropertiesLoaded():
-            return None, self.__isNetworked, ""
-        
-        # start debugger with project specific settings
-        interpreter = project.getDebugProperty("INTERPRETER")
-        debugClient = project.getDebugProperty("DEBUGCLIENT")
-        
-        redirect = str(project.getDebugProperty("REDIRECT"))
-        
-        if project.getDebugProperty("REMOTEDEBUGGER"):
-            ipaddr = self.debugServer.getHostAddress(False)[0]
-            rexec = project.getDebugProperty("REMOTECOMMAND")
-            rhost = project.getDebugProperty("REMOTEHOST")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, os.path.abspath(debugClient),
-                        str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                # set translation function
-                if project.getDebugProperty("PATHTRANSLATION"):
-                    self.translateRemote = \
-                        project.getDebugProperty("REMOTEPATH")
-                    self.translateLocal = \
-                        project.getDebugProperty("LOCALPATH")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if project.getDebugProperty("ENVIRONMENTOVERRIDE"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            project.getDebugProperty("ENVIRONMENTSTRING"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or project.getDebugProperty("CONSOLEDEBUGGER"):
-            ccmd = project.getDebugProperty("CONSOLECOMMAND") or \
-                Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def getClientCapabilities(self):
-        """
-        Public method to retrieve the debug clients capabilities.
-        
-        @return debug client capabilities (integer)
-        """
-        return self.clientCapabilities
-        
-    def newConnection(self, sock):
-        """
-        Public slot to handle a new connection.
-        
-        @param sock reference to the socket object (QTcpSocket)
-        @return flag indicating success (boolean)
-        """
-        # If we already have a connection, refuse this one.  It will be closed
-        # automatically.
-        if self.qsock is not None:
-            return False
-        
-        sock.disconnected.connect(self.debugServer.startClient)
-        sock.readyRead.connect(self.__parseClientLine)
-        
-        self.qsock = sock
-        
-        # Get the remote clients capabilities
-        self.remoteCapabilities()
-        return True
-        
-    def flush(self):
-        """
-        Public slot to flush the queue.
-        """
-        # Send commands that were waiting for the connection.
-        for cmd in self.queue:
-            self.qsock.write(cmd.encode('utf8'))
-        
-        self.queue = []
-        
-    def shutdown(self):
-        """
-        Public method to cleanly shut down.
-        
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
-        """
-        if self.qsock is None:
-            return
-        
-        # do not want any slots called during shutdown
-        self.qsock.disconnected.disconnect(self.debugServer.startClient)
-        self.qsock.readyRead.disconnect(self.__parseClientLine)
-        
-        # close down socket, and shut down client as well.
-        self.__sendCommand('{0}\n'.format(DebugProtocol.RequestShutdown))
-        self.qsock.flush()
-        
-        self.qsock.close()
-        
-        # reinitialize
-        self.qsock = None
-        self.queue = []
-        
-    def isConnected(self):
-        """
-        Public method to test, if a debug client has connected.
-        
-        @return flag indicating the connection status (boolean)
-        """
-        return self.qsock is not None
-        
-    def remoteEnvironment(self, env):
-        """
-        Public method to set the environment for a program to debug, run, ...
-        
-        @param env environment settings (dictionary)
-        """
-        self.__sendCommand('{0}{1}\n'.format(
-            DebugProtocol.RequestEnv, str(env)))
-        
-    def remoteLoad(self, fn, argv, wd, traceInterpreter=False,
-                   autoContinue=True, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to debug.
-        
-        @param fn the filename to debug (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam traceInterpreter flag indicating if the interpreter library
-            should be traced as well (boolean)
-        @keyparam autoContinue flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-            (ignored)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean) (ignored)
-        """
-        self.__autoContinue = autoContinue
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendCommand('{0}{1}|{2}|{3}|{4:d}\n'.format(
-            DebugProtocol.RequestLoad, wd, fn,
-            str(Utilities.parseOptionString(argv)),
-            traceInterpreter))
-        
-    def remoteRun(self, fn, argv, wd, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to run.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-            (ignored)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean) (ignored)
-        """
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendCommand('{0}{1}|{2}|{3}\n'.format(
-            DebugProtocol.RequestRun, wd, fn,
-            str(Utilities.parseOptionString(argv))))
-        
-    def remoteCoverage(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect coverage data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that coverage info should be
-            cleared first (boolean)
-        @exception NotImplementedError raised to indicate that this interface
-            is not supported
-        """
-        raise NotImplementedError("Interface not available.")
-
-    def remoteProfile(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect profiling data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that timing info should be cleared
-            first (boolean)
-        @exception NotImplementedError raised to indicate that this interface
-            is not supported
-        """
-        raise NotImplementedError("Interface not available.")
-
-    def remoteStatement(self, stmt):
-        """
-        Public method to execute a Ruby statement.
-        
-        @param stmt the Ruby statement to execute (string). It
-              should not have a trailing newline.
-        """
-        self.__sendCommand('{0}\n'.format(stmt))
-        self.__sendCommand(DebugProtocol.RequestOK + '\n')
-
-    def remoteStep(self):
-        """
-        Public method to single step the debugged program.
-        """
-        self.__sendCommand(DebugProtocol.RequestStep + '\n')
-
-    def remoteStepOver(self):
-        """
-        Public method to step over the debugged program.
-        """
-        self.__sendCommand(DebugProtocol.RequestStepOver + '\n')
-
-    def remoteStepOut(self):
-        """
-        Public method to step out the debugged program.
-        """
-        self.__sendCommand(DebugProtocol.RequestStepOut + '\n')
-
-    def remoteStepQuit(self):
-        """
-        Public method to stop the debugged program.
-        """
-        self.__sendCommand(DebugProtocol.RequestStepQuit + '\n')
-
-    def remoteContinue(self, special=False):
-        """
-        Public method to continue the debugged program.
-        
-        @param special flag indicating a special continue operation (boolean)
-        """
-        self.__sendCommand('{0}{1:d}\n'.format(
-            DebugProtocol.RequestContinue, special))
-
-    def remoteBreakpoint(self, fn, line, set, cond=None, temp=False):
-        """
-        Public method to set or clear a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param set flag indicating setting or resetting a breakpoint (boolean)
-        @param cond condition of the breakpoint (string)
-        @param temp flag indicating a temporary breakpoint (boolean)
-        """
-        fn = self.translate(fn, False)
-        self.__sendCommand('{0}{1}@@{2:d}@@{3:d}@@{4:d}@@{5}\n'.format(
-            DebugProtocol.RequestBreak, fn, line, temp, set, cond))
-        
-    def remoteBreakpointEnable(self, fn, line, enable):
-        """
-        Public method to enable or disable a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param enable flag indicating enabling or disabling a breakpoint
-            (boolean)
-        """
-        fn = self.translate(fn, False)
-        self.__sendCommand('{0}{1},{2:d},{3:d}\n'.format(
-            DebugProtocol.RequestBreakEnable, fn, line, enable))
-        
-    def remoteBreakpointIgnore(self, fn, line, count):
-        """
-        Public method to ignore a breakpoint the next couple of occurrences.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param count number of occurrences to ignore (int)
-        """
-        fn = self.translate(fn, False)
-        self.__sendCommand('{0}{1},{2:d},{3:d}\n'.format(
-            DebugProtocol.RequestBreakIgnore, fn, line, count))
-        
-    def remoteWatchpoint(self, cond, set, temp=False):
-        """
-        Public method to set or clear a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param set flag indicating setting or resetting a watch expression
-            (boolean)
-        @param temp flag indicating a temporary watch expression (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendCommand('{0}{1}@@{2:d}@@{3:d}\n'.format(
-            DebugProtocol.RequestWatch, cond, temp, set))
-    
-    def remoteWatchpointEnable(self, cond, enable):
-        """
-        Public method to enable or disable a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param enable flag indicating enabling or disabling a watch expression
-            (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendCommand('{0}{1},{2:d}\n'.format(
-            DebugProtocol.RequestWatchEnable, cond, enable))
-    
-    def remoteWatchpointIgnore(self, cond, count):
-        """
-        Public method to ignore a watch expression the next couple of
-        occurrences.
-        
-        @param cond expression of the watch expression (string)
-        @param count number of occurrences to ignore (int)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendCommand('{0}{1},{2:d}\n'.format(
-            DebugProtocol.RequestWatchIgnore, cond, count))
-    
-    def remoteRawInput(self, s):
-        """
-        Public method to send the raw input to the debugged program.
-        
-        @param s the raw input (string)
-        """
-        self.__sendCommand(s + '\n')
-        
-    def remoteThreadList(self):
-        """
-        Public method to request the list of threads from the client.
-        """
-        return
-        
-    def remoteSetThread(self, tid):
-        """
-        Public method to request to set the given thread as current thread.
-        
-        @param tid id of the thread (integer)
-        """
-        return
-        
-    def remoteClientVariables(self, scope, filter, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filter list of variable types to filter out (list of int)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendCommand('{0}{1:d}, {2:d}, {3}\n'.format(
-            DebugProtocol.RequestVariables, framenr, scope, str(filter)))
-        
-    def remoteClientVariable(self, scope, filter, var, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filter list of variable types to filter out (list of int)
-        @param var list encoded name of variable to retrieve (string)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendCommand('{0}{1}, {2:d}, {3:d}, {4}\n'.format(
-            DebugProtocol.RequestVariable, str(var), framenr, scope,
-            str(filter)))
-        
-    def remoteClientSetFilter(self, scope, filter):
-        """
-        Public method to set a variables filter list.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filter regexp string for variable names to filter out (string)
-        """
-        self.__sendCommand('{0}{1:d}, "{2}"\n'.format(
-            DebugProtocol.RequestSetFilter, scope, filter))
-        
-    def setCallTraceEnabled(self, on):
-        """
-        Public method to set the call trace state.
-        
-        @param on flag indicating to enable the call trace function (boolean)
-        """
-        return
-        
-    def remoteEval(self, arg):
-        """
-        Public method to evaluate arg in the current context of the debugged
-        program.
-        
-        @param arg the arguments to evaluate (string)
-        """
-        self.__sendCommand('{0}{1}\n'.format(DebugProtocol.RequestEval, arg))
-        
-    def remoteExec(self, stmt):
-        """
-        Public method to execute stmt in the current context of the debugged
-        program.
-        
-        @param stmt statement to execute (string)
-        """
-        self.__sendCommand('{0}{1}\n'.format(DebugProtocol.RequestExec, stmt))
-        
-    def remoteBanner(self):
-        """
-        Public slot to get the banner info of the remote client.
-        """
-        self.__sendCommand(DebugProtocol.RequestBanner + '\n')
-        
-    def remoteCapabilities(self):
-        """
-        Public slot to get the debug clients capabilities.
-        """
-        self.__sendCommand(DebugProtocol.RequestCapabilities + '\n')
-        
-    def remoteCompletion(self, text):
-        """
-        Public slot to get the a list of possible commandline completions
-        from the remote client.
-        
-        @param text the text to be completed (string)
-        """
-        self.__sendCommand("{0}{1}\n".format(
-            DebugProtocol.RequestCompletion, text))
-        
-    def remoteUTPrepare(self, fn, tn, tfn, failed, cov, covname, coverase):
-        """
-        Public method to prepare a new unittest run.
-        
-        @param fn the filename to load (string)
-        @param tn the testname to load (string)
-        @param tfn the test function name to load tests from (string)
-        @param failed list of failed test, if only failed test should be run
-            (list of strings)
-        @param cov flag indicating collection of coverage data is requested
-            (boolean)
-        @param covname filename to be used to assemble the coverage caches
-            filename (string)
-        @param coverase flag indicating erasure of coverage data is requested
-            (boolean)
-        @exception NotImplementedError raised to indicate that this interface
-            is not supported
-        """
-        raise NotImplementedError("Interface not available.")
-        
-    def remoteUTRun(self):
-        """
-        Public method to start a unittest run.
-        
-        @exception NotImplementedError raised to indicate that this interface
-            is not supported
-        """
-        raise NotImplementedError("Interface not available.")
-        
-    def remoteUTStop(self):
-        """
-        Public method to stop a unittest run.
-        
-        @exception NotImplementedError raised to indicate that this interface
-            is not supported
-        """
-        raise NotImplementedError("Interface not available.")
-        
-    def __parseClientLine(self):
-        """
-        Private method to handle data from the client.
-        """
-        while self.qsock and self.qsock.canReadLine():
-            qs = self.qsock.readLine()
-            if self.codec is not None:
-                line = self.codec.toUnicode(qs)
-            else:
-                line = bytes(qs).decode()
-            if line.endswith(DebugProtocol.EOT):
-                line = line[:-len(DebugProtocol.EOT)]
-                if not line:
-                    continue
-            
-##            print("Server: ", line)          ##debug
-            
-            eoc = line.find('<') + 1
-            
-            # Deal with case where user has written directly to stdout
-            # or stderr, but not line terminated and we stepped over the
-            # write call, in that case the >line< will not be the first
-            # string read from the socket...
-            boc = line.find('>')
-            if boc > 0 and eoc > boc:
-                self.debugServer.signalClientOutput(line[:boc])
-                line = line[boc:]
-                eoc = line.find('<') + 1
-                boc = line.find('>')
-            
-            if boc >= 0 and eoc > boc:
-                resp = line[boc:eoc]
-                
-                if resp == DebugProtocol.ResponseLine:
-                    stack = eval(line[eoc:-1])
-                    for s in stack:
-                        s[0] = self.translate(s[0], True)
-                    cf = stack[0]
-                    if self.__autoContinue:
-                        self.__autoContinue = False
-                        QTimer.singleShot(0, self.remoteContinue)
-                    else:
-                        self.debugServer.signalClientLine(cf[0], int(cf[1]))
-                        self.debugServer.signalClientStack(stack)
-                    continue
-                
-                if resp == DebugProtocol.ResponseVariables:
-                    vlist = eval(line[eoc:-1])
-                    scope = vlist[0]
-                    try:
-                        variables = vlist[1:]
-                    except IndexError:
-                        variables = []
-                    self.debugServer.signalClientVariables(scope, variables)
-                    continue
-                
-                if resp == DebugProtocol.ResponseVariable:
-                    vlist = eval(line[eoc:-1])
-                    scope = vlist[0]
-                    try:
-                        variables = vlist[1:]
-                    except IndexError:
-                        variables = []
-                    self.debugServer.signalClientVariable(scope, variables)
-                    continue
-                
-                if resp == DebugProtocol.ResponseOK:
-                    self.debugServer.signalClientStatement(False)
-                    continue
-                
-                if resp == DebugProtocol.ResponseContinue:
-                    self.debugServer.signalClientStatement(True)
-                    continue
-                
-                if resp == DebugProtocol.ResponseException:
-                    exc = line[eoc:-1]
-                    exc = self.translate(exc, True)
-                    try:
-                        exclist = eval(exc)
-                        exctype = exclist[0]
-                        excmessage = exclist[1]
-                        stack = exclist[2:]
-                    except (IndexError, ValueError, SyntaxError):
-                        exctype = None
-                        excmessage = ''
-                        stack = []
-                    self.debugServer.signalClientException(
-                        exctype, excmessage, stack)
-                    continue
-                
-                if resp == DebugProtocol.ResponseSyntax:
-                    exc = line[eoc:-1]
-                    exc = self.translate(exc, True)
-                    try:
-                        message, (fn, ln, cn) = eval(exc)
-                        if fn is None:
-                            fn = ''
-                    except (IndexError, ValueError):
-                        message = None
-                        fn = ''
-                        ln = 0
-                        cn = 0
-                    self.debugServer.signalClientSyntaxError(
-                        message, fn, ln, cn)
-                    continue
-                
-                if resp == DebugProtocol.ResponseExit:
-                    self.debugServer.signalClientExit(line[eoc:-1])
-                    continue
-                
-                if resp == DebugProtocol.ResponseClearBreak:
-                    fn, lineno = line[eoc:-1].split(',')
-                    lineno = int(lineno)
-                    fn = self.translate(fn, True)
-                    self.debugServer.signalClientClearBreak(fn, lineno)
-                    continue
-                
-                if resp == DebugProtocol.ResponseClearWatch:
-                    cond = line[eoc:-1]
-                    self.debugServer.signalClientClearWatch(cond)
-                    continue
-                
-                if resp == DebugProtocol.ResponseBanner:
-                    version, platform, dbgclient = eval(line[eoc:-1])
-                    self.debugServer.signalClientBanner(
-                        version, platform, dbgclient)
-                    continue
-                
-                if resp == DebugProtocol.ResponseCapabilities:
-                    cap, clType = eval(line[eoc:-1])
-                    self.clientCapabilities = cap
-                    self.debugServer.signalClientCapabilities(cap, clType)
-                    continue
-                
-                if resp == DebugProtocol.ResponseCompletion:
-                    clstring, text = line[eoc:-1].split('||')
-                    cl = eval(clstring)
-                    self.debugServer.signalClientCompletionList(cl, text)
-                    continue
-                
-                if resp == DebugProtocol.PassiveStartup:
-                    fn, exc = line[eoc:-1].split('|')
-                    exc = bool(exc)
-                    fn = self.translate(fn, True)
-                    self.debugServer.passiveStartUp(fn, exc)
-                    continue
-            
-            self.debugServer.signalClientOutput(line)
-
-    def __sendCommand(self, cmd):
-        """
-        Private method to send a single line command to the client.
-        
-        @param cmd command to send to the debug client (string)
-        """
-        if self.qsock is not None:
-            self.qsock.write(cmd.encode('utf8'))
-        else:
-            self.queue.append(cmd)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Nov 07 15:54:09 2015 +0100
+++ b/Documentation/Help/source.qhp	Sun Nov 08 17:01:39 2015 +0100
@@ -62,18 +62,6 @@
               <section title="eric6.DebugClients.Python3.eric6dbgstub" ref="eric6.DebugClients.Python3.eric6dbgstub.html" />
               <section title="eric6.DebugClients.Python3.getpass" ref="eric6.DebugClients.Python3.getpass.html" />
             </section>
-            <section title="eric6.DebugClients.Ruby" ref="index-eric6.DebugClients.Ruby.html">
-              <section title="eric6.DebugClients.Ruby.AsyncFile" ref="eric6.DebugClients.Ruby.AsyncFile.html" />
-              <section title="eric6.DebugClients.Ruby.AsyncIO" ref="eric6.DebugClients.Ruby.AsyncIO.html" />
-              <section title="eric6.DebugClients.Ruby.Completer" ref="eric6.DebugClients.Ruby.Completer.html" />
-              <section title="eric6.DebugClients.Ruby.Config" ref="eric6.DebugClients.Ruby.Config.html" />
-              <section title="eric6.DebugClients.Ruby.DebugClient" ref="eric6.DebugClients.Ruby.DebugClient.html" />
-              <section title="eric6.DebugClients.Ruby.DebugClientBaseModule" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html" />
-              <section title="eric6.DebugClients.Ruby.DebugClientCapabilities" ref="eric6.DebugClients.Ruby.DebugClientCapabilities.html" />
-              <section title="eric6.DebugClients.Ruby.DebugProtocol" ref="eric6.DebugClients.Ruby.DebugProtocol.html" />
-              <section title="eric6.DebugClients.Ruby.DebugQuit" ref="eric6.DebugClients.Ruby.DebugQuit.html" />
-              <section title="eric6.DebugClients.Ruby.Debuggee" ref="eric6.DebugClients.Ruby.Debuggee.html" />
-            </section>
           </section>
           <section title="eric6.Debugger" ref="index-eric6.Debugger.html">
             <section title="eric6.Debugger.BreakPointModel" ref="eric6.Debugger.BreakPointModel.html" />
@@ -89,7 +77,6 @@
             <section title="eric6.Debugger.DebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html" />
             <section title="eric6.Debugger.DebuggerInterfacePython" ref="eric6.Debugger.DebuggerInterfacePython.html" />
             <section title="eric6.Debugger.DebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython3.html" />
-            <section title="eric6.Debugger.DebuggerInterfaceRuby" ref="eric6.Debugger.DebuggerInterfaceRuby.html" />
             <section title="eric6.Debugger.EditBreakpointDialog" ref="eric6.Debugger.EditBreakpointDialog.html" />
             <section title="eric6.Debugger.EditWatchpointDialog" ref="eric6.Debugger.EditWatchpointDialog.html" />
             <section title="eric6.Debugger.ExceptionLogger" ref="eric6.Debugger.ExceptionLogger.html" />
@@ -1086,7 +1073,6 @@
       </section>
     </toc>
     <keywords>
-      <keyword name="&lt;&lt;" id="&lt;&lt;" ref="eric6.DebugClients.Ruby.AsyncFile.html#&lt;&lt;" />
       <keyword name="AES" id="AES" ref="eric6.Utilities.crypto.py3AES.html#AES" />
       <keyword name="AES.__addRoundKey" id="AES.__addRoundKey" ref="eric6.Utilities.crypto.py3AES.html#AES.__addRoundKey" />
       <keyword name="AES.__aes_invMain" id="AES.__aes_invMain" ref="eric6.Utilities.crypto.py3AES.html#AES.__aes_invMain" />
@@ -1428,27 +1414,22 @@
       <keyword name="AssociationItem.widgetMoved" id="AssociationItem.widgetMoved" ref="eric6.Graphics.AssociationItem.html#AssociationItem.widgetMoved" />
       <keyword name="AsyncFile" id="AsyncFile" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile" />
       <keyword name="AsyncFile" id="AsyncFile" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile" />
-      <keyword name="AsyncFile" id="AsyncFile" ref="eric6.DebugClients.Ruby.AsyncFile.html#AsyncFile" />
       <keyword name="AsyncFile (Constructor)" id="AsyncFile (Constructor)" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.__init__" />
       <keyword name="AsyncFile (Constructor)" id="AsyncFile (Constructor)" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.__init__" />
       <keyword name="AsyncFile (Module)" id="AsyncFile (Module)" ref="eric6.DebugClients.Python.AsyncFile.html" />
       <keyword name="AsyncFile (Module)" id="AsyncFile (Module)" ref="eric6.DebugClients.Python3.AsyncFile.html" />
-      <keyword name="AsyncFile (Module)" id="AsyncFile (Module)" ref="eric6.DebugClients.Ruby.AsyncFile.html" />
       <keyword name="AsyncFile.__checkMode" id="AsyncFile.__checkMode" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.__checkMode" />
       <keyword name="AsyncFile.__checkMode" id="AsyncFile.__checkMode" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.__checkMode" />
       <keyword name="AsyncFile.__nWrite" id="AsyncFile.__nWrite" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.__nWrite" />
       <keyword name="AsyncFile.__nWrite" id="AsyncFile.__nWrite" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.__nWrite" />
-      <keyword name="AsyncFile.checkMode" id="AsyncFile.checkMode" ref="eric6.DebugClients.Ruby.AsyncFile.html#AsyncFile.checkMode" />
       <keyword name="AsyncFile.close" id="AsyncFile.close" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.close" />
       <keyword name="AsyncFile.close" id="AsyncFile.close" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.close" />
       <keyword name="AsyncFile.fileno" id="AsyncFile.fileno" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.fileno" />
       <keyword name="AsyncFile.fileno" id="AsyncFile.fileno" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.fileno" />
       <keyword name="AsyncFile.flush" id="AsyncFile.flush" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.flush" />
       <keyword name="AsyncFile.flush" id="AsyncFile.flush" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.flush" />
-      <keyword name="AsyncFile.initialize" id="AsyncFile.initialize" ref="eric6.DebugClients.Ruby.AsyncFile.html#AsyncFile.initialize" />
       <keyword name="AsyncFile.isatty" id="AsyncFile.isatty" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.isatty" />
       <keyword name="AsyncFile.isatty" id="AsyncFile.isatty" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.isatty" />
-      <keyword name="AsyncFile.nWrite" id="AsyncFile.nWrite" ref="eric6.DebugClients.Ruby.AsyncFile.html#AsyncFile.nWrite" />
       <keyword name="AsyncFile.pendingWrite" id="AsyncFile.pendingWrite" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.pendingWrite" />
       <keyword name="AsyncFile.pendingWrite" id="AsyncFile.pendingWrite" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.pendingWrite" />
       <keyword name="AsyncFile.read" id="AsyncFile.read" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncFile.read" />
@@ -1476,31 +1457,22 @@
       <keyword name="AsyncFile.writelines" id="AsyncFile.writelines" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncFile.writelines" />
       <keyword name="AsyncIO" id="AsyncIO" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO" />
       <keyword name="AsyncIO" id="AsyncIO" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO" />
-      <keyword name="AsyncIO" id="AsyncIO" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO" />
       <keyword name="AsyncIO (Constructor)" id="AsyncIO (Constructor)" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.__init__" />
       <keyword name="AsyncIO (Constructor)" id="AsyncIO (Constructor)" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.__init__" />
       <keyword name="AsyncIO (Module)" id="AsyncIO (Module)" ref="eric6.DebugClients.Python.AsyncIO.html" />
       <keyword name="AsyncIO (Module)" id="AsyncIO (Module)" ref="eric6.DebugClients.Python3.AsyncIO.html" />
-      <keyword name="AsyncIO (Module)" id="AsyncIO (Module)" ref="eric6.DebugClients.Ruby.AsyncIO.html" />
       <keyword name="AsyncIO.disconnect" id="AsyncIO.disconnect" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.disconnect" />
       <keyword name="AsyncIO.disconnect" id="AsyncIO.disconnect" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.disconnect" />
-      <keyword name="AsyncIO.disconnect" id="AsyncIO.disconnect" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.disconnect" />
-      <keyword name="AsyncIO.initializeAsyncIO" id="AsyncIO.initializeAsyncIO" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.initializeAsyncIO" />
       <keyword name="AsyncIO.readReady" id="AsyncIO.readReady" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.readReady" />
       <keyword name="AsyncIO.readReady" id="AsyncIO.readReady" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.readReady" />
-      <keyword name="AsyncIO.readReady" id="AsyncIO.readReady" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.readReady" />
       <keyword name="AsyncIO.setDescriptors" id="AsyncIO.setDescriptors" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.setDescriptors" />
       <keyword name="AsyncIO.setDescriptors" id="AsyncIO.setDescriptors" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.setDescriptors" />
-      <keyword name="AsyncIO.setDescriptors" id="AsyncIO.setDescriptors" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.setDescriptors" />
       <keyword name="AsyncIO.write" id="AsyncIO.write" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.write" />
       <keyword name="AsyncIO.write" id="AsyncIO.write" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.write" />
-      <keyword name="AsyncIO.write" id="AsyncIO.write" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.write" />
       <keyword name="AsyncIO.writeReady" id="AsyncIO.writeReady" ref="eric6.DebugClients.Python.AsyncIO.html#AsyncIO.writeReady" />
       <keyword name="AsyncIO.writeReady" id="AsyncIO.writeReady" ref="eric6.DebugClients.Python3.AsyncIO.html#AsyncIO.writeReady" />
-      <keyword name="AsyncIO.writeReady" id="AsyncIO.writeReady" ref="eric6.DebugClients.Ruby.AsyncIO.html#AsyncIO.writeReady" />
       <keyword name="AsyncPendingWrite" id="AsyncPendingWrite" ref="eric6.DebugClients.Python.AsyncFile.html#AsyncPendingWrite" />
       <keyword name="AsyncPendingWrite" id="AsyncPendingWrite" ref="eric6.DebugClients.Python3.AsyncFile.html#AsyncPendingWrite" />
-      <keyword name="AsyncPendingWrite" id="AsyncPendingWrite" ref="eric6.DebugClients.Ruby.AsyncFile.html#AsyncPendingWrite" />
       <keyword name="Attribute" id="Attribute" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#Attribute" />
       <keyword name="Attribute" id="Attribute" ref="eric6.Utilities.ClassBrowsers.idlclbr.html#Attribute" />
       <keyword name="Attribute" id="Attribute" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Attribute" />
@@ -2138,18 +2110,6 @@
       <keyword name="ClickToFlashWhitelistDialog (Module)" id="ClickToFlashWhitelistDialog (Module)" ref="eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlashWhitelistDialog.html" />
       <keyword name="ClickToFlashWhitelistDialog.getWhitelist" id="ClickToFlashWhitelistDialog.getWhitelist" ref="eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlashWhitelistDialog.html#ClickToFlashWhitelistDialog.getWhitelist" />
       <keyword name="ClickToFlashWhitelistDialog.on_addButton_clicked" id="ClickToFlashWhitelistDialog.on_addButton_clicked" ref="eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlashWhitelistDialog.html#ClickToFlashWhitelistDialog.on_addButton_clicked" />
-      <keyword name="Client" id="Client" ref="eric6.DebugClients.Ruby.Debuggee.html#Client" />
-      <keyword name="Client.eventLoop" id="Client.eventLoop" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.eventLoop" />
-      <keyword name="Client.eventPoll" id="Client.eventPoll" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.eventPoll" />
-      <keyword name="Client.initialize" id="Client.initialize" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.initialize" />
-      <keyword name="Client.printf" id="Client.printf" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf" />
-      <keyword name="Client.printf_clear_breakpoint" id="Client.printf_clear_breakpoint" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_clear_breakpoint" />
-      <keyword name="Client.printf_clear_watchexpression" id="Client.printf_clear_watchexpression" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_clear_watchexpression" />
-      <keyword name="Client.printf_excn" id="Client.printf_excn" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_excn" />
-      <keyword name="Client.printf_exit" id="Client.printf_exit" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_exit" />
-      <keyword name="Client.printf_line" id="Client.printf_line" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_line" />
-      <keyword name="Client.printf_scriptExcn" id="Client.printf_scriptExcn" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.printf_scriptExcn" />
-      <keyword name="Client.traceRuby?" id="Client.traceRuby?" ref="eric6.DebugClients.Ruby.Debuggee.html#Client.traceRuby?" />
       <keyword name="ClosedTab" id="ClosedTab" ref="eric6.Helpviewer.ClosedTabsManager.html#ClosedTab" />
       <keyword name="ClosedTab (Constructor)" id="ClosedTab (Constructor)" ref="eric6.Helpviewer.ClosedTabsManager.html#ClosedTab.__init__" />
       <keyword name="ClosedTab.__eq__" id="ClosedTab.__eq__" ref="eric6.Helpviewer.ClosedTabsManager.html#ClosedTab.__eq__" />
@@ -2358,20 +2318,15 @@
       <keyword name="CompareWindow.eventFilter" id="CompareWindow.eventFilter" ref="eric6.UI.CompareDialog.html#CompareWindow.eventFilter" />
       <keyword name="Completer" id="Completer" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer" />
       <keyword name="Completer" id="Completer" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer" />
-      <keyword name="Completer" id="Completer" ref="eric6.DebugClients.Ruby.Completer.html#Completer" />
       <keyword name="Completer (Constructor)" id="Completer (Constructor)" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.__init__" />
       <keyword name="Completer (Constructor)" id="Completer (Constructor)" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.__init__" />
-      <keyword name="Completer (Module)" id="Completer (Module)" ref="eric6.DebugClients.Ruby.Completer.html" />
       <keyword name="Completer._callable_postfix" id="Completer._callable_postfix" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer._callable_postfix" />
       <keyword name="Completer.attr_matches" id="Completer.attr_matches" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.attr_matches" />
       <keyword name="Completer.attr_matches" id="Completer.attr_matches" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.attr_matches" />
       <keyword name="Completer.complete" id="Completer.complete" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.complete" />
       <keyword name="Completer.complete" id="Completer.complete" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.complete" />
-      <keyword name="Completer.complete" id="Completer.complete" ref="eric6.DebugClients.Ruby.Completer.html#Completer.complete" />
       <keyword name="Completer.global_matches" id="Completer.global_matches" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.global_matches" />
       <keyword name="Completer.global_matches" id="Completer.global_matches" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.global_matches" />
-      <keyword name="Completer.initialize" id="Completer.initialize" ref="eric6.DebugClients.Ruby.Completer.html#Completer.initialize" />
-      <keyword name="Completer.select_message" id="Completer.select_message" ref="eric6.DebugClients.Ruby.Completer.html#Completer.select_message" />
       <keyword name="CompleterBase" id="CompleterBase" ref="eric6.QScintilla.TypingCompleters.CompleterBase.html#CompleterBase" />
       <keyword name="CompleterBase (Constructor)" id="CompleterBase (Constructor)" ref="eric6.QScintilla.TypingCompleters.CompleterBase.html#CompleterBase.__init__" />
       <keyword name="CompleterBase (Module)" id="CompleterBase (Module)" ref="eric6.QScintilla.TypingCompleters.CompleterBase.html" />
@@ -2407,7 +2362,6 @@
       <keyword name="CompleterRuby.__inSingleQuotedString" id="CompleterRuby.__inSingleQuotedString" ref="eric6.QScintilla.TypingCompleters.CompleterRuby.html#CompleterRuby.__inSingleQuotedString" />
       <keyword name="CompleterRuby.charAdded" id="CompleterRuby.charAdded" ref="eric6.QScintilla.TypingCompleters.CompleterRuby.html#CompleterRuby.charAdded" />
       <keyword name="CompleterRuby.readSettings" id="CompleterRuby.readSettings" ref="eric6.QScintilla.TypingCompleters.CompleterRuby.html#CompleterRuby.readSettings" />
-      <keyword name="Config (Module)" id="Config (Module)" ref="eric6.DebugClients.Ruby.Config.html" />
       <keyword name="Config (Module)" id="Config (Module)" ref="eric6.Debugger.Config.html" />
       <keyword name="Config (Module)" id="Config (Module)" ref="eric6.DocumentationTools.Config.html" />
       <keyword name="Config (Module)" id="Config (Module)" ref="eric6.E5XML.Config.html" />
@@ -2497,23 +2451,6 @@
       <keyword name="ContentDisposition_1" id="ContentDisposition_1" ref="eric6.E5Network.E5RFC6266.html#ContentDisposition_1" />
       <keyword name="ContentDisposition_1 (Constructor)" id="ContentDisposition_1 (Constructor)" ref="eric6.E5Network.E5RFC6266.html#ContentDisposition_1.__init__" />
       <keyword name="ContentDisposition_1.filename" id="ContentDisposition_1.filename" ref="eric6.E5Network.E5RFC6266.html#ContentDisposition_1.filename" />
-      <keyword name="Context" id="Context" ref="eric6.DebugClients.Ruby.Debuggee.html#Context" />
-      <keyword name="Context.clear_suspend" id="Context.clear_suspend" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.clear_suspend" />
-      <keyword name="Context.current_binding" id="Context.current_binding" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.current_binding" />
-      <keyword name="Context.current_frame" id="Context.current_frame" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.current_frame" />
-      <keyword name="Context.eventLoop" id="Context.eventLoop" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.eventLoop" />
-      <keyword name="Context.eventPoll" id="Context.eventPoll" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.eventPoll" />
-      <keyword name="Context.get_binding" id="Context.get_binding" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.get_binding" />
-      <keyword name="Context.get_frame" id="Context.get_frame" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.get_frame" />
-      <keyword name="Context.initialize" id="Context.initialize" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.initialize" />
-      <keyword name="Context.set_suspend" id="Context.set_suspend" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.set_suspend" />
-      <keyword name="Context.step_continue" id="Context.step_continue" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.step_continue" />
-      <keyword name="Context.step_out" id="Context.step_out" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.step_out" />
-      <keyword name="Context.step_over" id="Context.step_over" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.step_over" />
-      <keyword name="Context.step_quit" id="Context.step_quit" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.step_quit" />
-      <keyword name="Context.stop_next" id="Context.stop_next" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.stop_next" />
-      <keyword name="Context.suspend_all" id="Context.suspend_all" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.suspend_all" />
-      <keyword name="Context.traceRuby?" id="Context.traceRuby?" ref="eric6.DebugClients.Ruby.Debuggee.html#Context.traceRuby?" />
       <keyword name="CookieDetailsDialog" id="CookieDetailsDialog" ref="eric6.Helpviewer.CookieJar.CookieDetailsDialog.html#CookieDetailsDialog" />
       <keyword name="CookieDetailsDialog (Constructor)" id="CookieDetailsDialog (Constructor)" ref="eric6.Helpviewer.CookieJar.CookieDetailsDialog.html#CookieDetailsDialog.__init__" />
       <keyword name="CookieDetailsDialog (Module)" id="CookieDetailsDialog (Module)" ref="eric6.Helpviewer.CookieJar.CookieDetailsDialog.html" />
@@ -2668,41 +2605,6 @@
       <keyword name="DCTestResult.startTest" id="DCTestResult.startTest" ref="eric6.DebugClients.Python3.DCTestResult.html#DCTestResult.startTest" />
       <keyword name="DCTestResult.stopTest" id="DCTestResult.stopTest" ref="eric6.DebugClients.Python.DCTestResult.html#DCTestResult.stopTest" />
       <keyword name="DCTestResult.stopTest" id="DCTestResult.stopTest" ref="eric6.DebugClients.Python3.DCTestResult.html#DCTestResult.stopTest" />
-      <keyword name="DEBUGGER__" id="DEBUGGER__" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__" />
-      <keyword name="DEBUGGER__.add_break_point" id="DEBUGGER__.add_break_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.add_break_point" />
-      <keyword name="DEBUGGER__.add_watch_point" id="DEBUGGER__.add_watch_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.add_watch_point" />
-      <keyword name="DEBUGGER__.attach" id="DEBUGGER__.attach" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.attach" />
-      <keyword name="DEBUGGER__.attached?" id="DEBUGGER__.attached?" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.attached?" />
-      <keyword name="DEBUGGER__.break_points" id="DEBUGGER__.break_points" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.break_points" />
-      <keyword name="DEBUGGER__.check_break_points" id="DEBUGGER__.check_break_points" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.check_break_points" />
-      <keyword name="DEBUGGER__.check_suspend" id="DEBUGGER__.check_suspend" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.check_suspend" />
-      <keyword name="DEBUGGER__.clear_break_point" id="DEBUGGER__.clear_break_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.clear_break_point" />
-      <keyword name="DEBUGGER__.clear_watch_point" id="DEBUGGER__.clear_watch_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.clear_watch_point" />
-      <keyword name="DEBUGGER__.client" id="DEBUGGER__.client" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.client" />
-      <keyword name="DEBUGGER__.context" id="DEBUGGER__.context" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.context" />
-      <keyword name="DEBUGGER__.debug_command" id="DEBUGGER__.debug_command" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.debug_command" />
-      <keyword name="DEBUGGER__.debug_silent_eval" id="DEBUGGER__.debug_silent_eval" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.debug_silent_eval" />
-      <keyword name="DEBUGGER__.delete_break_point" id="DEBUGGER__.delete_break_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.delete_break_point" />
-      <keyword name="DEBUGGER__.delete_watch_point" id="DEBUGGER__.delete_watch_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.delete_watch_point" />
-      <keyword name="DEBUGGER__.enable_break_point" id="DEBUGGER__.enable_break_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.enable_break_point" />
-      <keyword name="DEBUGGER__.enable_watch_point" id="DEBUGGER__.enable_watch_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.enable_watch_point" />
-      <keyword name="DEBUGGER__.excn_handle" id="DEBUGGER__.excn_handle" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.excn_handle" />
-      <keyword name="DEBUGGER__.frame_set_pos" id="DEBUGGER__.frame_set_pos" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.frame_set_pos" />
-      <keyword name="DEBUGGER__.ignore_break_point" id="DEBUGGER__.ignore_break_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.ignore_break_point" />
-      <keyword name="DEBUGGER__.ignore_watch_point" id="DEBUGGER__.ignore_watch_point" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.ignore_watch_point" />
-      <keyword name="DEBUGGER__.last_thread" id="DEBUGGER__.last_thread" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.last_thread" />
-      <keyword name="DEBUGGER__.quit" id="DEBUGGER__.quit" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.quit" />
-      <keyword name="DEBUGGER__.resume" id="DEBUGGER__.resume" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.resume" />
-      <keyword name="DEBUGGER__.resume_all" id="DEBUGGER__.resume_all" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.resume_all" />
-      <keyword name="DEBUGGER__.set_client" id="DEBUGGER__.set_client" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.set_client" />
-      <keyword name="DEBUGGER__.set_last_thread" id="DEBUGGER__.set_last_thread" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.set_last_thread" />
-      <keyword name="DEBUGGER__.skip_it?" id="DEBUGGER__.skip_it?" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.skip_it?" />
-      <keyword name="DEBUGGER__.stdout" id="DEBUGGER__.stdout" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.stdout" />
-      <keyword name="DEBUGGER__.stdout=" id="DEBUGGER__.stdout=" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.stdout=" />
-      <keyword name="DEBUGGER__.suspend" id="DEBUGGER__.suspend" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.suspend" />
-      <keyword name="DEBUGGER__.thnum" id="DEBUGGER__.thnum" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.thnum" />
-      <keyword name="DEBUGGER__.trace_func" id="DEBUGGER__.trace_func" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.trace_func" />
-      <keyword name="DEBUGGER__.waiting" id="DEBUGGER__.waiting" ref="eric6.DebugClients.Ruby.Debuggee.html#DEBUGGER__.waiting" />
       <keyword name="Data" id="Data" ref="eric6.Utilities.binplistlib.html#Data" />
       <keyword name="DataViews (Package)" id="DataViews (Package)" ref="index-eric6.DataViews.html" />
       <keyword name="DebugBase" id="DebugBase" ref="eric6.DebugClients.Python.DebugBase.html#DebugBase" />
@@ -2782,16 +2684,12 @@
       <keyword name="DebugBase.user_return" id="DebugBase.user_return" ref="eric6.DebugClients.Python3.DebugBase.html#DebugBase.user_return" />
       <keyword name="DebugClient" id="DebugClient" ref="eric6.DebugClients.Python.DebugClient.html#DebugClient" />
       <keyword name="DebugClient" id="DebugClient" ref="eric6.DebugClients.Python3.DebugClient.html#DebugClient" />
-      <keyword name="DebugClient" id="DebugClient" ref="eric6.DebugClients.Ruby.DebugClient.html#DebugClient" />
       <keyword name="DebugClient (Constructor)" id="DebugClient (Constructor)" ref="eric6.DebugClients.Python.DebugClient.html#DebugClient.__init__" />
       <keyword name="DebugClient (Constructor)" id="DebugClient (Constructor)" ref="eric6.DebugClients.Python3.DebugClient.html#DebugClient.__init__" />
       <keyword name="DebugClient (Module)" id="DebugClient (Module)" ref="eric6.DebugClients.Python.DebugClient.html" />
       <keyword name="DebugClient (Module)" id="DebugClient (Module)" ref="eric6.DebugClients.Python3.DebugClient.html" />
-      <keyword name="DebugClient (Module)" id="DebugClient (Module)" ref="eric6.DebugClients.Ruby.DebugClient.html" />
-      <keyword name="DebugClient.initialize" id="DebugClient.initialize" ref="eric6.DebugClients.Ruby.DebugClient.html#DebugClient.initialize" />
       <keyword name="DebugClientBase" id="DebugClientBase" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase" />
       <keyword name="DebugClientBase" id="DebugClientBase" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase" />
-      <keyword name="DebugClientBase" id="DebugClientBase" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase" />
       <keyword name="DebugClientBase (Constructor)" id="DebugClientBase (Constructor)" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__init__" />
       <keyword name="DebugClientBase (Constructor)" id="DebugClientBase (Constructor)" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.__init__" />
       <keyword name="DebugClientBase (Module)" id="DebugClientBase (Module)" ref="eric6.DebugClients.Python.DebugClientBase.html" />
@@ -2833,68 +2731,43 @@
       <keyword name="DebugClientBase.absPath" id="DebugClientBase.absPath" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.absPath" />
       <keyword name="DebugClientBase.attachThread" id="DebugClientBase.attachThread" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.attachThread" />
       <keyword name="DebugClientBase.attachThread" id="DebugClientBase.attachThread" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.attachThread" />
-      <keyword name="DebugClientBase.canEval?" id="DebugClientBase.canEval?" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.canEval?" />
       <keyword name="DebugClientBase.close" id="DebugClientBase.close" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.close" />
       <keyword name="DebugClientBase.close" id="DebugClientBase.close" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.close" />
-      <keyword name="DebugClientBase.completionList" id="DebugClientBase.completionList" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.completionList" />
       <keyword name="DebugClientBase.connectDebugger" id="DebugClientBase.connectDebugger" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.connectDebugger" />
       <keyword name="DebugClientBase.connectDebugger" id="DebugClientBase.connectDebugger" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.connectDebugger" />
-      <keyword name="DebugClientBase.connectDebugger" id="DebugClientBase.connectDebugger" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.connectDebugger" />
-      <keyword name="DebugClientBase.dumpVariable" id="DebugClientBase.dumpVariable" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.dumpVariable" />
-      <keyword name="DebugClientBase.dumpVariables" id="DebugClientBase.dumpVariables" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.dumpVariables" />
       <keyword name="DebugClientBase.eventLoop" id="DebugClientBase.eventLoop" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.eventLoop" />
       <keyword name="DebugClientBase.eventLoop" id="DebugClientBase.eventLoop" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.eventLoop" />
-      <keyword name="DebugClientBase.eventLoop" id="DebugClientBase.eventLoop" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.eventLoop" />
       <keyword name="DebugClientBase.eventPoll" id="DebugClientBase.eventPoll" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.eventPoll" />
       <keyword name="DebugClientBase.eventPoll" id="DebugClientBase.eventPoll" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.eventPoll" />
-      <keyword name="DebugClientBase.eventPoll" id="DebugClientBase.eventPoll" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.eventPoll" />
-      <keyword name="DebugClientBase.extractAddress" id="DebugClientBase.extractAddress" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.extractAddress" />
-      <keyword name="DebugClientBase.extractTypeAndAddress" id="DebugClientBase.extractTypeAndAddress" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.extractTypeAndAddress" />
       <keyword name="DebugClientBase.fork" id="DebugClientBase.fork" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.fork" />
       <keyword name="DebugClientBase.fork" id="DebugClientBase.fork" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.fork" />
-      <keyword name="DebugClientBase.formatVariablesList" id="DebugClientBase.formatVariablesList" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.formatVariablesList" />
-      <keyword name="DebugClientBase.generateFilterObjects" id="DebugClientBase.generateFilterObjects" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.generateFilterObjects" />
       <keyword name="DebugClientBase.getCoding" id="DebugClientBase.getCoding" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.getCoding" />
       <keyword name="DebugClientBase.getCoding" id="DebugClientBase.getCoding" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.getCoding" />
       <keyword name="DebugClientBase.getRunning" id="DebugClientBase.getRunning" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.getRunning" />
       <keyword name="DebugClientBase.getRunning" id="DebugClientBase.getRunning" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.getRunning" />
-      <keyword name="DebugClientBase.handleException" id="DebugClientBase.handleException" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.handleException" />
       <keyword name="DebugClientBase.handleLine" id="DebugClientBase.handleLine" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.handleLine" />
       <keyword name="DebugClientBase.handleLine" id="DebugClientBase.handleLine" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.handleLine" />
-      <keyword name="DebugClientBase.handleLine" id="DebugClientBase.handleLine" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.handleLine" />
-      <keyword name="DebugClientBase.inFilter?" id="DebugClientBase.inFilter?" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.inFilter?" />
-      <keyword name="DebugClientBase.initializeDebugClient" id="DebugClientBase.initializeDebugClient" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.initializeDebugClient" />
       <keyword name="DebugClientBase.input" id="DebugClientBase.input" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.input" />
       <keyword name="DebugClientBase.input" id="DebugClientBase.input" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.input" />
-      <keyword name="DebugClientBase.interact" id="DebugClientBase.interact" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.interact" />
       <keyword name="DebugClientBase.main" id="DebugClientBase.main" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.main" />
       <keyword name="DebugClientBase.main" id="DebugClientBase.main" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.main" />
-      <keyword name="DebugClientBase.main" id="DebugClientBase.main" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.main" />
       <keyword name="DebugClientBase.progTerminated" id="DebugClientBase.progTerminated" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.progTerminated" />
       <keyword name="DebugClientBase.progTerminated" id="DebugClientBase.progTerminated" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.progTerminated" />
-      <keyword name="DebugClientBase.progTerminated" id="DebugClientBase.progTerminated" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.progTerminated" />
       <keyword name="DebugClientBase.raw_input" id="DebugClientBase.raw_input" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.raw_input" />
       <keyword name="DebugClientBase.run_call" id="DebugClientBase.run_call" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.run_call" />
       <keyword name="DebugClientBase.run_call" id="DebugClientBase.run_call" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.run_call" />
       <keyword name="DebugClientBase.sessionClose" id="DebugClientBase.sessionClose" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sessionClose" />
       <keyword name="DebugClientBase.sessionClose" id="DebugClientBase.sessionClose" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.sessionClose" />
-      <keyword name="DebugClientBase.sessionClose" id="DebugClientBase.sessionClose" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.sessionClose" />
       <keyword name="DebugClientBase.shouldSkip" id="DebugClientBase.shouldSkip" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.shouldSkip" />
       <keyword name="DebugClientBase.shouldSkip" id="DebugClientBase.shouldSkip" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.shouldSkip" />
       <keyword name="DebugClientBase.startDebugger" id="DebugClientBase.startDebugger" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.startDebugger" />
       <keyword name="DebugClientBase.startDebugger" id="DebugClientBase.startDebugger" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.startDebugger" />
       <keyword name="DebugClientBase.startProgInDebugger" id="DebugClientBase.startProgInDebugger" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.startProgInDebugger" />
       <keyword name="DebugClientBase.startProgInDebugger" id="DebugClientBase.startProgInDebugger" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.startProgInDebugger" />
-      <keyword name="DebugClientBase.startProgInDebugger" id="DebugClientBase.startProgInDebugger" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.startProgInDebugger" />
-      <keyword name="DebugClientBase.trace_func" id="DebugClientBase.trace_func" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.trace_func" />
-      <keyword name="DebugClientBase.unhandled_exception" id="DebugClientBase.unhandled_exception" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.unhandled_exception" />
       <keyword name="DebugClientBase.write" id="DebugClientBase.write" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.write" />
       <keyword name="DebugClientBase.write" id="DebugClientBase.write" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.write" />
-      <keyword name="DebugClientBase.write" id="DebugClientBase.write" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html#DebugClientBase.write" />
-      <keyword name="DebugClientBaseModule (Module)" id="DebugClientBaseModule (Module)" ref="eric6.DebugClients.Ruby.DebugClientBaseModule.html" />
       <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.DebugClients.Python.DebugClientCapabilities.html" />
       <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.DebugClients.Python3.DebugClientCapabilities.html" />
-      <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.DebugClients.Ruby.DebugClientCapabilities.html" />
       <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.Debugger.DebugClientCapabilities.html" />
       <keyword name="DebugClientClose" id="DebugClientClose" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientClose" />
       <keyword name="DebugClientClose" id="DebugClientClose" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientClose" />
@@ -2930,10 +2803,7 @@
       <keyword name="DebugConfig (Module)" id="DebugConfig (Module)" ref="eric6.DebugClients.Python3.DebugConfig.html" />
       <keyword name="DebugProtocol (Module)" id="DebugProtocol (Module)" ref="eric6.DebugClients.Python.DebugProtocol.html" />
       <keyword name="DebugProtocol (Module)" id="DebugProtocol (Module)" ref="eric6.DebugClients.Python3.DebugProtocol.html" />
-      <keyword name="DebugProtocol (Module)" id="DebugProtocol (Module)" ref="eric6.DebugClients.Ruby.DebugProtocol.html" />
       <keyword name="DebugProtocol (Module)" id="DebugProtocol (Module)" ref="eric6.Debugger.DebugProtocol.html" />
-      <keyword name="DebugQuit" id="DebugQuit" ref="eric6.DebugClients.Ruby.DebugQuit.html#DebugQuit" />
-      <keyword name="DebugQuit (Module)" id="DebugQuit (Module)" ref="eric6.DebugClients.Ruby.DebugQuit.html" />
       <keyword name="DebugServer" id="DebugServer" ref="eric6.Debugger.DebugServer.html#DebugServer" />
       <keyword name="DebugServer (Constructor)" id="DebugServer (Constructor)" ref="eric6.Debugger.DebugServer.html#DebugServer.__init__" />
       <keyword name="DebugServer (Module)" id="DebugServer (Module)" ref="eric6.Debugger.DebugServer.html" />
@@ -2949,6 +2819,7 @@
       <keyword name="DebugServer.__createDebuggerInterface" id="DebugServer.__createDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.__createDebuggerInterface" />
       <keyword name="DebugServer.__deleteBreakPoints" id="DebugServer.__deleteBreakPoints" ref="eric6.Debugger.DebugServer.html#DebugServer.__deleteBreakPoints" />
       <keyword name="DebugServer.__deleteWatchPoints" id="DebugServer.__deleteWatchPoints" ref="eric6.Debugger.DebugServer.html#DebugServer.__deleteWatchPoints" />
+      <keyword name="DebugServer.__findLanguageForExtension" id="DebugServer.__findLanguageForExtension" ref="eric6.Debugger.DebugServer.html#DebugServer.__findLanguageForExtension" />
       <keyword name="DebugServer.__getNetworkInterfaceAndIndex" id="DebugServer.__getNetworkInterfaceAndIndex" ref="eric6.Debugger.DebugServer.html#DebugServer.__getNetworkInterfaceAndIndex" />
       <keyword name="DebugServer.__makeWatchCondition" id="DebugServer.__makeWatchCondition" ref="eric6.Debugger.DebugServer.html#DebugServer.__makeWatchCondition" />
       <keyword name="DebugServer.__newConnection" id="DebugServer.__newConnection" ref="eric6.Debugger.DebugServer.html#DebugServer.__newConnection" />
@@ -2983,6 +2854,7 @@
       <keyword name="DebugServer.isConnected" id="DebugServer.isConnected" ref="eric6.Debugger.DebugServer.html#DebugServer.isConnected" />
       <keyword name="DebugServer.passiveStartUp" id="DebugServer.passiveStartUp" ref="eric6.Debugger.DebugServer.html#DebugServer.passiveStartUp" />
       <keyword name="DebugServer.preferencesChanged" id="DebugServer.preferencesChanged" ref="eric6.Debugger.DebugServer.html#DebugServer.preferencesChanged" />
+      <keyword name="DebugServer.registerDebuggerInterface" id="DebugServer.registerDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.registerDebuggerInterface" />
       <keyword name="DebugServer.remoteBanner" id="DebugServer.remoteBanner" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteBanner" />
       <keyword name="DebugServer.remoteBreakpoint" id="DebugServer.remoteBreakpoint" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteBreakpoint" />
       <keyword name="DebugServer.remoteCapabilities" id="DebugServer.remoteCapabilities" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteCapabilities" />
@@ -3033,6 +2905,7 @@
       <keyword name="DebugServer.signalClientVariables" id="DebugServer.signalClientVariables" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientVariables" />
       <keyword name="DebugServer.signalClientWatchConditionError" id="DebugServer.signalClientWatchConditionError" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientWatchConditionError" />
       <keyword name="DebugServer.startClient" id="DebugServer.startClient" ref="eric6.Debugger.DebugServer.html#DebugServer.startClient" />
+      <keyword name="DebugServer.unregisterDebuggerInterface" id="DebugServer.unregisterDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.unregisterDebuggerInterface" />
       <keyword name="DebugThread" id="DebugThread" ref="eric6.DebugClients.Python.DebugThread.html#DebugThread" />
       <keyword name="DebugThread" id="DebugThread" ref="eric6.DebugClients.Python3.DebugThread.html#DebugThread" />
       <keyword name="DebugThread (Constructor)" id="DebugThread (Constructor)" ref="eric6.DebugClients.Python.DebugThread.html#DebugThread.__init__" />
@@ -3156,7 +3029,6 @@
       <keyword name="DebugViewer.showVariable" id="DebugViewer.showVariable" ref="eric6.Debugger.DebugViewer.html#DebugViewer.showVariable" />
       <keyword name="DebugViewer.showVariables" id="DebugViewer.showVariables" ref="eric6.Debugger.DebugViewer.html#DebugViewer.showVariables" />
       <keyword name="DebugViewer.showVariablesTab" id="DebugViewer.showVariablesTab" ref="eric6.Debugger.DebugViewer.html#DebugViewer.showVariablesTab" />
-      <keyword name="Debuggee (Module)" id="Debuggee (Module)" ref="eric6.DebugClients.Ruby.Debuggee.html" />
       <keyword name="Debugger (Package)" id="Debugger (Package)" ref="index-eric6.Debugger.html" />
       <keyword name="DebuggerGeneralPage" id="DebuggerGeneralPage" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#DebuggerGeneralPage" />
       <keyword name="DebuggerGeneralPage (Constructor)" id="DebuggerGeneralPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#DebuggerGeneralPage.__init__" />
@@ -3304,53 +3176,6 @@
       <keyword name="DebuggerInterfacePython3.shutdown" id="DebuggerInterfacePython3.shutdown" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.shutdown" />
       <keyword name="DebuggerInterfacePython3.startRemote" id="DebuggerInterfacePython3.startRemote" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemote" />
       <keyword name="DebuggerInterfacePython3.startRemoteForProject" id="DebuggerInterfacePython3.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemoteForProject" />
-      <keyword name="DebuggerInterfaceRuby" id="DebuggerInterfaceRuby" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby" />
-      <keyword name="DebuggerInterfaceRuby (Constructor)" id="DebuggerInterfaceRuby (Constructor)" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__init__" />
-      <keyword name="DebuggerInterfaceRuby (Module)" id="DebuggerInterfaceRuby (Module)" ref="eric6.Debugger.DebuggerInterfaceRuby.html" />
-      <keyword name="DebuggerInterfaceRuby.__identityTranslation" id="DebuggerInterfaceRuby.__identityTranslation" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__identityTranslation" />
-      <keyword name="DebuggerInterfaceRuby.__parseClientLine" id="DebuggerInterfaceRuby.__parseClientLine" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__parseClientLine" />
-      <keyword name="DebuggerInterfaceRuby.__remoteTranslation" id="DebuggerInterfaceRuby.__remoteTranslation" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__remoteTranslation" />
-      <keyword name="DebuggerInterfaceRuby.__sendCommand" id="DebuggerInterfaceRuby.__sendCommand" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__sendCommand" />
-      <keyword name="DebuggerInterfaceRuby.__startProcess" id="DebuggerInterfaceRuby.__startProcess" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.__startProcess" />
-      <keyword name="DebuggerInterfaceRuby.flush" id="DebuggerInterfaceRuby.flush" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.flush" />
-      <keyword name="DebuggerInterfaceRuby.getClientCapabilities" id="DebuggerInterfaceRuby.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.getClientCapabilities" />
-      <keyword name="DebuggerInterfaceRuby.isConnected" id="DebuggerInterfaceRuby.isConnected" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.isConnected" />
-      <keyword name="DebuggerInterfaceRuby.newConnection" id="DebuggerInterfaceRuby.newConnection" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.newConnection" />
-      <keyword name="DebuggerInterfaceRuby.remoteBanner" id="DebuggerInterfaceRuby.remoteBanner" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteBanner" />
-      <keyword name="DebuggerInterfaceRuby.remoteBreakpoint" id="DebuggerInterfaceRuby.remoteBreakpoint" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteBreakpoint" />
-      <keyword name="DebuggerInterfaceRuby.remoteBreakpointEnable" id="DebuggerInterfaceRuby.remoteBreakpointEnable" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteBreakpointEnable" />
-      <keyword name="DebuggerInterfaceRuby.remoteBreakpointIgnore" id="DebuggerInterfaceRuby.remoteBreakpointIgnore" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteBreakpointIgnore" />
-      <keyword name="DebuggerInterfaceRuby.remoteCapabilities" id="DebuggerInterfaceRuby.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteCapabilities" />
-      <keyword name="DebuggerInterfaceRuby.remoteClientSetFilter" id="DebuggerInterfaceRuby.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteClientSetFilter" />
-      <keyword name="DebuggerInterfaceRuby.remoteClientVariable" id="DebuggerInterfaceRuby.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteClientVariable" />
-      <keyword name="DebuggerInterfaceRuby.remoteClientVariables" id="DebuggerInterfaceRuby.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteClientVariables" />
-      <keyword name="DebuggerInterfaceRuby.remoteCompletion" id="DebuggerInterfaceRuby.remoteCompletion" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteCompletion" />
-      <keyword name="DebuggerInterfaceRuby.remoteContinue" id="DebuggerInterfaceRuby.remoteContinue" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteContinue" />
-      <keyword name="DebuggerInterfaceRuby.remoteCoverage" id="DebuggerInterfaceRuby.remoteCoverage" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteCoverage" />
-      <keyword name="DebuggerInterfaceRuby.remoteEnvironment" id="DebuggerInterfaceRuby.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteEnvironment" />
-      <keyword name="DebuggerInterfaceRuby.remoteEval" id="DebuggerInterfaceRuby.remoteEval" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteEval" />
-      <keyword name="DebuggerInterfaceRuby.remoteExec" id="DebuggerInterfaceRuby.remoteExec" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteExec" />
-      <keyword name="DebuggerInterfaceRuby.remoteLoad" id="DebuggerInterfaceRuby.remoteLoad" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteLoad" />
-      <keyword name="DebuggerInterfaceRuby.remoteProfile" id="DebuggerInterfaceRuby.remoteProfile" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteProfile" />
-      <keyword name="DebuggerInterfaceRuby.remoteRawInput" id="DebuggerInterfaceRuby.remoteRawInput" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteRawInput" />
-      <keyword name="DebuggerInterfaceRuby.remoteRun" id="DebuggerInterfaceRuby.remoteRun" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteRun" />
-      <keyword name="DebuggerInterfaceRuby.remoteSetThread" id="DebuggerInterfaceRuby.remoteSetThread" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteSetThread" />
-      <keyword name="DebuggerInterfaceRuby.remoteStatement" id="DebuggerInterfaceRuby.remoteStatement" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteStatement" />
-      <keyword name="DebuggerInterfaceRuby.remoteStep" id="DebuggerInterfaceRuby.remoteStep" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteStep" />
-      <keyword name="DebuggerInterfaceRuby.remoteStepOut" id="DebuggerInterfaceRuby.remoteStepOut" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteStepOut" />
-      <keyword name="DebuggerInterfaceRuby.remoteStepOver" id="DebuggerInterfaceRuby.remoteStepOver" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteStepOver" />
-      <keyword name="DebuggerInterfaceRuby.remoteStepQuit" id="DebuggerInterfaceRuby.remoteStepQuit" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteStepQuit" />
-      <keyword name="DebuggerInterfaceRuby.remoteThreadList" id="DebuggerInterfaceRuby.remoteThreadList" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteThreadList" />
-      <keyword name="DebuggerInterfaceRuby.remoteUTPrepare" id="DebuggerInterfaceRuby.remoteUTPrepare" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteUTPrepare" />
-      <keyword name="DebuggerInterfaceRuby.remoteUTRun" id="DebuggerInterfaceRuby.remoteUTRun" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteUTRun" />
-      <keyword name="DebuggerInterfaceRuby.remoteUTStop" id="DebuggerInterfaceRuby.remoteUTStop" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteUTStop" />
-      <keyword name="DebuggerInterfaceRuby.remoteWatchpoint" id="DebuggerInterfaceRuby.remoteWatchpoint" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpoint" />
-      <keyword name="DebuggerInterfaceRuby.remoteWatchpointEnable" id="DebuggerInterfaceRuby.remoteWatchpointEnable" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpointEnable" />
-      <keyword name="DebuggerInterfaceRuby.remoteWatchpointIgnore" id="DebuggerInterfaceRuby.remoteWatchpointIgnore" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpointIgnore" />
-      <keyword name="DebuggerInterfaceRuby.setCallTraceEnabled" id="DebuggerInterfaceRuby.setCallTraceEnabled" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.setCallTraceEnabled" />
-      <keyword name="DebuggerInterfaceRuby.shutdown" id="DebuggerInterfaceRuby.shutdown" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.shutdown" />
-      <keyword name="DebuggerInterfaceRuby.startRemote" id="DebuggerInterfaceRuby.startRemote" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.startRemote" />
-      <keyword name="DebuggerInterfaceRuby.startRemoteForProject" id="DebuggerInterfaceRuby.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.startRemoteForProject" />
       <keyword name="DebuggerPropertiesDialog" id="DebuggerPropertiesDialog" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog" />
       <keyword name="DebuggerPropertiesDialog (Constructor)" id="DebuggerPropertiesDialog (Constructor)" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.__init__" />
       <keyword name="DebuggerPropertiesDialog (Module)" id="DebuggerPropertiesDialog (Module)" ref="eric6.Project.DebuggerPropertiesDialog.html" />
@@ -10183,7 +10008,6 @@
       <keyword name="RevisionsValidator" id="RevisionsValidator" ref="eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.html#RevisionsValidator" />
       <keyword name="RevisionsValidator (Constructor)" id="RevisionsValidator (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.html#RevisionsValidator.__init__" />
       <keyword name="RevisionsValidator.validate" id="RevisionsValidator.validate" ref="eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.html#RevisionsValidator.validate" />
-      <keyword name="Ruby (Package)" id="Ruby (Package)" ref="index-eric6.DebugClients.Ruby.html" />
       <keyword name="SafariImporter" id="SafariImporter" ref="eric6.Helpviewer.Bookmarks.BookmarksImporters.SafariImporter.html#SafariImporter" />
       <keyword name="SafariImporter (Constructor)" id="SafariImporter (Constructor)" ref="eric6.Helpviewer.Bookmarks.BookmarksImporters.SafariImporter.html#SafariImporter.__init__" />
       <keyword name="SafariImporter (Module)" id="SafariImporter (Module)" ref="eric6.Helpviewer.Bookmarks.BookmarksImporters.SafariImporter.html" />
@@ -10482,8 +10306,6 @@
       <keyword name="ShortcutsWriter (Module)" id="ShortcutsWriter (Module)" ref="eric6.E5XML.ShortcutsWriter.html" />
       <keyword name="ShortcutsWriter.__writeActions" id="ShortcutsWriter.__writeActions" ref="eric6.E5XML.ShortcutsWriter.html#ShortcutsWriter.__writeActions" />
       <keyword name="ShortcutsWriter.writeXML" id="ShortcutsWriter.writeXML" ref="eric6.E5XML.ShortcutsWriter.html#ShortcutsWriter.writeXML" />
-      <keyword name="SilentObject" id="SilentObject" ref="eric6.DebugClients.Ruby.Debuggee.html#SilentObject" />
-      <keyword name="SilentObject.method_missing" id="SilentObject.method_missing" ref="eric6.DebugClients.Ruby.Debuggee.html#SilentObject.method_missing" />
       <keyword name="SingleApplication (Module)" id="SingleApplication (Module)" ref="eric6.Toolbox.SingleApplication.html" />
       <keyword name="SingleApplicationClient" id="SingleApplicationClient" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationClient" />
       <keyword name="SingleApplicationClient (Constructor)" id="SingleApplicationClient (Constructor)" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationClient.__init__" />
@@ -13446,7 +13268,6 @@
       <keyword name="cleanupSource" id="cleanupSource" ref="eric6.cleanupSource.html#cleanupSource" />
       <keyword name="cleanupSource" id="cleanupSource" ref="eric6.install.html#cleanupSource" />
       <keyword name="cleanupSource (Module)" id="cleanupSource (Module)" ref="eric6.cleanupSource.html" />
-      <keyword name="close" id="close" ref="eric6.DebugClients.Ruby.AsyncFile.html#close" />
       <keyword name="codeStyleBatchCheck" id="codeStyleBatchCheck" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#codeStyleBatchCheck" />
       <keyword name="codeStyleCheck" id="codeStyleCheck" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#codeStyleCheck" />
       <keyword name="compactPath" id="compactPath" ref="eric6.Utilities.__init__.html#compactPath" />
@@ -13460,7 +13281,6 @@
       <keyword name="compileUiFiles (Module)" id="compileUiFiles (Module)" ref="eric6.compileUiFiles.html" />
       <keyword name="compound_statements" id="compound_statements" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#compound_statements" />
       <keyword name="contentSniff" id="contentSniff" ref="eric6.Helpviewer.HelpBrowserWV.html#contentSniff" />
-      <keyword name="context" id="context" ref="eric6.DebugClients.Ruby.Debuggee.html#context" />
       <keyword name="context_diff" id="context_diff" ref="eric6.UI.DiffDialog.html#context_diff" />
       <keyword name="continued_indentation" id="continued_indentation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#continued_indentation" />
       <keyword name="convertLineEnds" id="convertLineEnds" ref="eric6.Utilities.__init__.html#convertLineEnds" />
@@ -13528,6 +13348,9 @@
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsMercurial.html#createConfigurationPage" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsPySvn.html#createConfigurationPage" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsSubversion.html#createConfigurationPage" />
+      <keyword name="createDebuggerInterfaceNone" id="createDebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html#createDebuggerInterfaceNone" />
+      <keyword name="createDebuggerInterfacePython" id="createDebuggerInterfacePython" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython" />
+      <keyword name="createDebuggerInterfacePython3" id="createDebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython3.html#createDebuggerInterfacePython3" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#createDefaultConfig" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#createDefaultConfig" />
       <keyword name="createGlobalPluginsDir" id="createGlobalPluginsDir" ref="eric6.install.html#createGlobalPluginsDir" />
@@ -13560,7 +13383,6 @@
       <keyword name="dataEncrypt" id="dataEncrypt" ref="eric6.Utilities.crypto.__init__.html#dataEncrypt" />
       <keyword name="dataString" id="dataString" ref="eric6.Helpviewer.Download.DownloadUtilities.html#dataString" />
       <keyword name="dateFromTime_t" id="dateFromTime_t" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#dateFromTime_t" />
-      <keyword name="debug_thread_info" id="debug_thread_info" ref="eric6.DebugClients.Ruby.Debuggee.html#debug_thread_info" />
       <keyword name="decode" id="decode" ref="eric6.Utilities.__init__.html#decode" />
       <keyword name="decodeBytes" id="decodeBytes" ref="eric6.Utilities.__init__.html#decodeBytes" />
       <keyword name="decodeString" id="decodeString" ref="eric6.Utilities.__init__.html#decodeString" />
@@ -13605,8 +13427,6 @@
       <keyword name="eric6dbgstub (Module)" id="eric6dbgstub (Module)" ref="eric6.DebugClients.Python3.eric6dbgstub.html" />
       <keyword name="escape_entities" id="escape_entities" ref="eric6.Utilities.__init__.html#escape_entities" />
       <keyword name="escape_uentities" id="escape_uentities" ref="eric6.Utilities.__init__.html#escape_uentities" />
-      <keyword name="eventLoop" id="eventLoop" ref="eric6.DebugClients.Ruby.Debuggee.html#eventLoop" />
-      <keyword name="eventPoll" id="eventPoll" ref="eric6.DebugClients.Ruby.Debuggee.html#eventPoll" />
       <keyword name="excepthook" id="excepthook" ref="eric6.eric6.html#excepthook" />
       <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginEricapi.html#exeDisplayData" />
       <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginVcsMercurial.html#exeDisplayData" />
@@ -13629,14 +13449,12 @@
       <keyword name="factory" id="factory" ref="eric6.ViewManager.__init__.html#factory" />
       <keyword name="fetch (Module)" id="fetch (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.FetchExtension.fetch.html" />
       <keyword name="filename_match" id="filename_match" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#filename_match" />
-      <keyword name="fileno" id="fileno" ref="eric6.DebugClients.Ruby.AsyncFile.html#fileno" />
       <keyword name="filterCharsFromFilename" id="filterCharsFromFilename" ref="eric6.Helpviewer.HelpUtilities.html#filterCharsFromFilename" />
       <keyword name="findPythonInterpreters" id="findPythonInterpreters" ref="eric6.Globals.__init__.html#findPythonInterpreters" />
       <keyword name="find_module" id="find_module" ref="eric6.Utilities.ClassBrowsers.__init__.html#find_module" />
       <keyword name="find_module" id="find_module" ref="eric6.Utilities.ModuleParser.html#find_module" />
       <keyword name="find_moduleAsStr" id="find_moduleAsStr" ref="eric6.Globals.compatibility_fixes.html#find_moduleAsStr" />
       <keyword name="flashDataPathForOS" id="flashDataPathForOS" ref="eric6.Helpviewer.FlashCookieManager.FlashCookieUtilities.html#flashDataPathForOS" />
-      <keyword name="flush" id="flush" ref="eric6.DebugClients.Ruby.AsyncFile.html#flush" />
       <keyword name="formatTime" id="formatTime" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#formatTime" />
       <keyword name="format_witnesses" id="format_witnesses" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#format_witnesses" />
       <keyword name="formatargvalues" id="formatargvalues" ref="eric6.DebugClients.Python3.DebugUtilities.html#formatargvalues" />
@@ -13730,14 +13548,12 @@
       <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfaceNone.html#getRegistryData" />
       <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython.html#getRegistryData" />
       <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython3.html#getRegistryData" />
-      <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfaceRuby.html#getRegistryData" />
       <keyword name="getSaveFileFiltersList" id="getSaveFileFiltersList" ref="eric6.QScintilla.Lexers.__init__.html#getSaveFileFiltersList" />
       <keyword name="getSaveFileName" id="getSaveFileName" ref="eric6.E5Gui.E5FileDialog.html#getSaveFileName" />
       <keyword name="getSaveFileNameAndFilter" id="getSaveFileNameAndFilter" ref="eric6.E5Gui.E5FileDialog.html#getSaveFileNameAndFilter" />
       <keyword name="getServersPath" id="getServersPath" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#getServersPath" />
       <keyword name="getServersPath" id="getServersPath" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#getServersPath" />
       <keyword name="getShell" id="getShell" ref="eric6.Preferences.__init__.html#getShell" />
-      <keyword name="getSock" id="getSock" ref="eric6.DebugClients.Ruby.AsyncFile.html#getSock" />
       <keyword name="getSupportedFormats" id="getSupportedFormats" ref="eric6.QScintilla.Exporters.__init__.html#getSupportedFormats" />
       <keyword name="getSupportedLanguages" id="getSupportedLanguages" ref="eric6.QScintilla.Lexers.__init__.html#getSupportedLanguages" />
       <keyword name="getSymlinkIcon" id="getSymlinkIcon" ref="eric6.UI.PixmapCache.html#getSymlinkIcon" />
@@ -13764,13 +13580,11 @@
       <keyword name="get_coding" id="get_coding" ref="eric6.Utilities.__init__.html#get_coding" />
       <keyword name="get_codingBytes" id="get_codingBytes" ref="eric6.Utilities.__init__.html#get_codingBytes" />
       <keyword name="get_parser" id="get_parser" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#get_parser" />
-      <keyword name="get_thread" id="get_thread" ref="eric6.DebugClients.Ruby.Debuggee.html#get_thread" />
       <keyword name="getargvalues" id="getargvalues" ref="eric6.DebugClients.Python3.DebugUtilities.html#getargvalues" />
       <keyword name="getpass" id="getpass" ref="eric6.DebugClients.Python.getpass.html#getpass" />
       <keyword name="getpass" id="getpass" ref="eric6.DebugClients.Python3.getpass.html#getpass" />
       <keyword name="getpass (Module)" id="getpass (Module)" ref="eric6.DebugClients.Python.getpass.html" />
       <keyword name="getpass (Module)" id="getpass (Module)" ref="eric6.DebugClients.Python3.getpass.html" />
-      <keyword name="gets" id="gets" ref="eric6.DebugClients.Ruby.AsyncFile.html#gets" />
       <keyword name="getuser" id="getuser" ref="eric6.DebugClients.Python.getpass.html#getuser" />
       <keyword name="getuser" id="getuser" ref="eric6.DebugClients.Python3.getpass.html#getuser" />
       <keyword name="gpg (Module)" id="gpg (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.GpgExtension.gpg.html" />
@@ -13811,7 +13625,6 @@
       <keyword name="install-i18n (Module)" id="install-i18n (Module)" ref="eric6.install-i18n.html" />
       <keyword name="installEric" id="installEric" ref="eric6.install.html#installEric" />
       <keyword name="installTranslations" id="installTranslations" ref="eric6.install-i18n.html#installTranslations" />
-      <keyword name="interrupt" id="interrupt" ref="eric6.DebugClients.Ruby.Debuggee.html#interrupt" />
       <keyword name="ircFilter" id="ircFilter" ref="eric6.Network.IRC.IrcUtilities.html#ircFilter" />
       <keyword name="ircTimestamp" id="ircTimestamp" ref="eric6.Network.IRC.IrcUtilities.html#ircTimestamp" />
       <keyword name="isConfigured" id="isConfigured" ref="eric6.Preferences.__init__.html#isConfigured" />
@@ -13821,7 +13634,6 @@
       <keyword name="isTextFile" id="isTextFile" ref="eric6.Utilities.MimeTypes.html#isTextFile" />
       <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric6.Globals.__init__.html#isWindowsPlatform" />
       <keyword name="is_stream_binary_plist" id="is_stream_binary_plist" ref="eric6.Utilities.binplistlib.html#is_stream_binary_plist" />
-      <keyword name="isatty" id="isatty" ref="eric6.DebugClients.Ruby.AsyncFile.html#isatty" />
       <keyword name="isinpath" id="isinpath" ref="eric6.Utilities.__init__.html#isinpath" />
       <keyword name="joinAsUnicode" id="joinAsUnicode" ref="eric6.Globals.compatibility_fixes.html#joinAsUnicode" />
       <keyword name="joinext" id="joinext" ref="eric6.Utilities.__init__.html#joinext" />
@@ -13864,7 +13676,6 @@
       <keyword name="main" id="main" ref="eric6.patch_modpython.html#main" />
       <keyword name="main" id="main" ref="eric6.uninstall.html#main" />
       <keyword name="makeAppInfo" id="makeAppInfo" ref="eric6.Globals.AppInfo.html#makeAppInfo" />
-      <keyword name="make_thread_list" id="make_thread_list" ref="eric6.DebugClients.Ruby.Debuggee.html#make_thread_list" />
       <keyword name="maximum_line_length" id="maximum_line_length" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#maximum_line_length" />
       <keyword name="mccabe (Module)" id="mccabe (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.html" />
       <keyword name="messageHandler" id="messageHandler" ref="eric6.E5Gui.E5ErrorMessage.html#messageHandler" />
@@ -13894,7 +13705,6 @@
       <keyword name="parse_udiff" id="parse_udiff" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#parse_udiff" />
       <keyword name="patch_modpython (Module)" id="patch_modpython (Module)" ref="eric6.patch_modpython.html" />
       <keyword name="pbkdf2" id="pbkdf2" ref="eric6.Utilities.crypto.py3PBKDF2.html#pbkdf2" />
-      <keyword name="pendingWrite" id="pendingWrite" ref="eric6.DebugClients.Ruby.AsyncFile.html#pendingWrite" />
       <keyword name="pep8 (Module)" id="pep8 (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html" />
       <keyword name="prepareInfoFile" id="prepareInfoFile" ref="eric6.install.html#prepareInfoFile" />
       <keyword name="prepareProcess" id="prepareProcess" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html#prepareProcess" />
@@ -13929,7 +13739,6 @@
       <keyword name="queues (Module)" id="queues (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html" />
       <keyword name="quote" id="quote" ref="eric6.Utilities.__init__.html#quote" />
       <keyword name="rbclbr (Module)" id="rbclbr (Module)" ref="eric6.Utilities.ClassBrowsers.rbclbr.html" />
-      <keyword name="read" id="read" ref="eric6.DebugClients.Ruby.AsyncFile.html#read" />
       <keyword name="readEncodedFile" id="readEncodedFile" ref="eric6.Utilities.__init__.html#readEncodedFile" />
       <keyword name="readEncodedFileWithEncoding" id="readEncodedFileWithEncoding" ref="eric6.Utilities.__init__.html#readEncodedFileWithEncoding" />
       <keyword name="readEncodedFileWithHash" id="readEncodedFileWithHash" ref="eric6.Utilities.__init__.html#readEncodedFileWithHash" />
@@ -13940,8 +13749,6 @@
       <keyword name="readStringFromStream" id="readStringFromStream" ref="eric6.Utilities.__init__.html#readStringFromStream" />
       <keyword name="readToolGroups" id="readToolGroups" ref="eric6.Preferences.__init__.html#readToolGroups" />
       <keyword name="read_config" id="read_config" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#read_config" />
-      <keyword name="readline" id="readline" ref="eric6.DebugClients.Ruby.AsyncFile.html#readline" />
-      <keyword name="readlines" id="readlines" ref="eric6.DebugClients.Ruby.AsyncFile.html#readlines" />
       <keyword name="readlines" id="readlines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#readlines" />
       <keyword name="readlines_1" id="readlines_1" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#readlines_1" />
       <keyword name="readmodule" id="readmodule" ref="eric6.Utilities.ClassBrowsers.__init__.html#readmodule" />
@@ -13974,7 +13781,6 @@
       <keyword name="saveToolGroups" id="saveToolGroups" ref="eric6.Preferences.__init__.html#saveToolGroups" />
       <keyword name="sbsdiff" id="sbsdiff" ref="eric6.UI.CompareDialog.html#sbsdiff" />
       <keyword name="schemeFromProxyType" id="schemeFromProxyType" ref="eric6.E5Network.E5NetworkProxyFactory.html#schemeFromProxyType" />
-      <keyword name="seek" id="seek" ref="eric6.DebugClients.Ruby.AsyncFile.html#seek" />
       <keyword name="setActions" id="setActions" ref="eric6.Preferences.Shortcuts.html#setActions" />
       <keyword name="setConfigDir" id="setConfigDir" ref="eric6.Globals.__init__.html#setConfigDir" />
       <keyword name="setCooperation" id="setCooperation" ref="eric6.Preferences.__init__.html#setCooperation" />
@@ -14040,9 +13846,6 @@
       <keyword name="syntaxAndPyflakesCheck" id="syntaxAndPyflakesCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html#syntaxAndPyflakesCheck" />
       <keyword name="tabs_obsolete" id="tabs_obsolete" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#tabs_obsolete" />
       <keyword name="tabs_or_spaces" id="tabs_or_spaces" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#tabs_or_spaces" />
-      <keyword name="tell" id="tell" ref="eric6.DebugClients.Ruby.AsyncFile.html#tell" />
-      <keyword name="thread_list" id="thread_list" ref="eric6.DebugClients.Ruby.Debuggee.html#thread_list" />
-      <keyword name="thread_list_all" id="thread_list_all" ref="eric6.DebugClients.Ruby.Debuggee.html#thread_list_all" />
       <keyword name="timeString" id="timeString" ref="eric6.Helpviewer.Download.DownloadUtilities.html#timeString" />
       <keyword name="toBool" id="toBool" ref="eric6.Globals.__init__.html#toBool" />
       <keyword name="toBool" id="toBool" ref="eric6.Preferences.__init__.html#toBool" />
@@ -14055,7 +13858,6 @@
       <keyword name="toList" id="toList" ref="eric6.Preferences.__init__.html#toList" />
       <keyword name="toNativeSeparators" id="toNativeSeparators" ref="eric6.Utilities.__init__.html#toNativeSeparators" />
       <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric6.Helpviewer.AdBlock.AdBlockRule.html#toSecondLevelDomain" />
-      <keyword name="traceRuby?" id="traceRuby?" ref="eric6.DebugClients.Ruby.Debuggee.html#traceRuby?" />
       <keyword name="trailing_blank_lines" id="trailing_blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#trailing_blank_lines" />
       <keyword name="trailing_whitespace" id="trailing_whitespace" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#trailing_whitespace" />
       <keyword name="translations (Module)" id="translations (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html" />
@@ -14098,11 +13900,9 @@
       <keyword name="worker" id="worker" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#worker" />
       <keyword name="wrapperName" id="wrapperName" ref="eric6.install.html#wrapperName" />
       <keyword name="wrapperName" id="wrapperName" ref="eric6.uninstall.html#wrapperName" />
-      <keyword name="write" id="write" ref="eric6.DebugClients.Ruby.AsyncFile.html#write" />
       <keyword name="writeEncodedFile" id="writeEncodedFile" ref="eric6.Utilities.__init__.html#writeEncodedFile" />
       <keyword name="writePlist" id="writePlist" ref="eric6.Utilities.binplistlib.html#writePlist" />
       <keyword name="writePlistToBytes" id="writePlistToBytes" ref="eric6.Utilities.binplistlib.html#writePlistToBytes" />
-      <keyword name="writelines" id="writelines" ref="eric6.DebugClients.Ruby.AsyncFile.html#writelines" />
       <keyword name="yesNo" id="yesNo" ref="eric6.E5Gui.E5MessageBox.html#yesNo" />
     </keywords>
     <files>
@@ -14145,17 +13945,6 @@
       <file>eric6.DebugClients.Python3.PyProfile.html</file>
       <file>eric6.DebugClients.Python3.eric6dbgstub.html</file>
       <file>eric6.DebugClients.Python3.getpass.html</file>
-      <file>eric6.DebugClients.Ruby.AsyncFile.html</file>
-      <file>eric6.DebugClients.Ruby.AsyncIO.html</file>
-      <file>eric6.DebugClients.Ruby.Completer.html</file>
-      <file>eric6.DebugClients.Ruby.Config.html</file>
-      <file>eric6.DebugClients.Ruby.DebugClient.html</file>
-      <file>eric6.DebugClients.Ruby.DebugClientBaseModule.html</file>
-      <file>eric6.DebugClients.Ruby.DebugClientCapabilities.html</file>
-      <file>eric6.DebugClients.Ruby.DebugProtocol.html</file>
-      <file>eric6.DebugClients.Ruby.DebugQuit.html</file>
-      <file>eric6.DebugClients.Ruby.Debuggee.html</file>
-      <file>eric6.DebugClients.Ruby.__init__.html</file>
       <file>eric6.Debugger.BreakPointModel.html</file>
       <file>eric6.Debugger.BreakPointViewer.html</file>
       <file>eric6.Debugger.CallStackViewer.html</file>
@@ -14169,7 +13958,6 @@
       <file>eric6.Debugger.DebuggerInterfaceNone.html</file>
       <file>eric6.Debugger.DebuggerInterfacePython.html</file>
       <file>eric6.Debugger.DebuggerInterfacePython3.html</file>
-      <file>eric6.Debugger.DebuggerInterfaceRuby.html</file>
       <file>eric6.Debugger.EditBreakpointDialog.html</file>
       <file>eric6.Debugger.EditWatchpointDialog.html</file>
       <file>eric6.Debugger.ExceptionLogger.html</file>
@@ -14969,7 +14757,6 @@
       <file>index-eric6.DataViews.html</file>
       <file>index-eric6.DebugClients.Python.html</file>
       <file>index-eric6.DebugClients.Python3.html</file>
-      <file>index-eric6.DebugClients.Ruby.html</file>
       <file>index-eric6.DebugClients.html</file>
       <file>index-eric6.Debugger.html</file>
       <file>index-eric6.DocumentationTools.html</file>
--- a/Documentation/Source/eric6.DebugClients.Ruby.AsyncFile.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,386 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.AsyncFile</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.AsyncFile</h1>
-<p>
-File implementing an asynchronous file like socket interface for the debugger.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#AsyncFile">AsyncFile</a></td>
-<td>Class wrapping a socket object with a file interface.</td>
-</tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#<<"><<</a></td>
-<td>Synonym for write(s).</td>
-</tr><tr>
-<td><a href="#AsyncPendingWrite">AsyncPendingWrite</a></td>
-<td>Module function to check for data to be written.</td>
-</tr><tr>
-<td><a href="#close">close</a></td>
-<td>Public method to close the file.</td>
-</tr><tr>
-<td><a href="#fileno">fileno</a></td>
-<td>Public method returning the file number.</td>
-</tr><tr>
-<td><a href="#flush">flush</a></td>
-<td>Public method to write all pending bytes.</td>
-</tr><tr>
-<td><a href="#getSock">getSock</a></td>
-<td>Public method to get the socket object.</td>
-</tr><tr>
-<td><a href="#gets">gets</a></td>
-<td>Public method to read a line from this file.</td>
-</tr><tr>
-<td><a href="#isatty">isatty</a></td>
-<td>Public method to indicate whether a tty interface is supported.</td>
-</tr><tr>
-<td><a href="#pendingWrite">pendingWrite</a></td>
-<td>Public method that returns the number of bytes waiting to be written.</td>
-</tr><tr>
-<td><a href="#read">read</a></td>
-<td>Public method to read bytes from this file.</td>
-</tr><tr>
-<td><a href="#readline">readline</a></td>
-<td>Public method to read a line from this file.</td>
-</tr><tr>
-<td><a href="#readlines">readlines</a></td>
-<td>Public method to read all lines from this file.</td>
-</tr><tr>
-<td><a href="#seek">seek</a></td>
-<td>Public method to move the filepointer.</td>
-</tr><tr>
-<td><a href="#tell">tell</a></td>
-<td>Public method to get the filepointer position.</td>
-</tr><tr>
-<td><a href="#write">write</a></td>
-<td>Public method to write a string to the file.</td>
-</tr><tr>
-<td><a href="#writelines">writelines</a></td>
-<td>Public method to write a list of strings to the file.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="AsyncFile" ID="AsyncFile"></a>
-<h2>AsyncFile</h2>
-<p>
-Class wrapping a socket object with a file interface.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>@@maxbuffersize</td></tr><tr><td>@@maxtries</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#AsyncFile.checkMode">checkMode</a></td>
-<td>Private method to check the mode.</td>
-</tr><tr>
-<td><a href="#AsyncFile.initialize">initialize</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#AsyncFile.nWrite">nWrite</a></td>
-<td>Private method to write a specific number of pending bytes.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="AsyncFile.checkMode" ID="AsyncFile.checkMode"></a>
-<h4>AsyncFile.checkMode</h4>
-<b>checkMode</b>(<i></i>)
-<p>
-Private method to check the mode.
-</p><p>
-This method checks, if an operation is permitted according to
-the mode of the file. If it is not, an IOError is raised.
-</p><dl>
-<dt><i>mode</i></dt>
-<dd>
-the mode to be checked (string)
-</dd>
-</dl><a NAME="AsyncFile.initialize" ID="AsyncFile.initialize"></a>
-<h4>AsyncFile.initialize</h4>
-<b>initialize</b>(<i>mode, name</i>)
-<p>
-Constructor
-</p><dl>
-<dt><i>sock</i></dt>
-<dd>
-the socket object being wrapped
-</dd><dt><i>mode</i></dt>
-<dd>
-mode of this file (string)
-</dd><dt><i>name</i></dt>
-<dd>
-name of this file (string)
-</dd>
-</dl><a NAME="AsyncFile.nWrite" ID="AsyncFile.nWrite"></a>
-<h4>AsyncFile.nWrite</h4>
-<b>nWrite</b>(<i></i>)
-<p>
-Private method to write a specific number of pending bytes.
-</p><dl>
-<dt><i>n</i></dt>
-<dd>
-the number of bytes to be written (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="<<" ID="<<"></a>
-<h2><<</h2>
-<b><<</b>(<i>s</i>)
-<p>
-Synonym for write(s).
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-bytes to be written (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="AsyncPendingWrite" ID="AsyncPendingWrite"></a>
-<h2>AsyncPendingWrite</h2>
-<b>AsyncPendingWrite</b>(<i>file</i>)
-<p>
-Module function to check for data to be written.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-The file object to be checked (file)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-Flag indicating if there is data wating (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="close" ID="close"></a>
-<h2>close</h2>
-<b>close</b>(<i></i>)
-<p>
-Public method to close the file.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="fileno" ID="fileno"></a>
-<h2>fileno</h2>
-<b>fileno</b>(<i></i>)
-<p>
-Public method returning the file number.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-file number (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="flush" ID="flush"></a>
-<h2>flush</h2>
-<b>flush</b>(<i></i>)
-<p>
-Public method to write all pending bytes.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="getSock" ID="getSock"></a>
-<h2>getSock</h2>
-<b>getSock</b>(<i></i>)
-<p>
-Public method to get the socket object.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-the socket object
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="gets" ID="gets"></a>
-<h2>gets</h2>
-<b>gets</b>(<i></i>)
-<p>
- Public method to read a line from this file.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="isatty" ID="isatty"></a>
-<h2>isatty</h2>
-<b>isatty</b>(<i></i>)
-<p>
-Public method to indicate whether a tty interface is supported.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-always false
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="pendingWrite" ID="pendingWrite"></a>
-<h2>pendingWrite</h2>
-<b>pendingWrite</b>(<i></i>)
-<p>
-Public method that returns the number of bytes waiting to be written.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-the number of bytes to be written (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="read" ID="read"></a>
-<h2>read</h2>
-<b>read</b>(<i>size = -1</i>)
-<p>
-Public method to read bytes from this file.
-</p><dl>
-<dt><i>size</i></dt>
-<dd>
-maximum number of bytes to be read (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the bytes read (any)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="readline" ID="readline"></a>
-<h2>readline</h2>
-<b>readline</b>(<i>size = -1</i>)
-<p>
-Public method to read a line from this file.
-</p><p>
-<b>Note</b>: This method will not block and may return
-only a part of a line if that is all that is available.
-</p><dl>
-<dt><i>size</i></dt>
-<dd>
-maximum number of bytes to be read (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-one line of text up to size bytes (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="readlines" ID="readlines"></a>
-<h2>readlines</h2>
-<b>readlines</b>(<i>sizehint = -1</i>)
-<p>
-Public method to read all lines from this file.
-</p><dl>
-<dt><i>sizehint</i></dt>
-<dd>
-hint of the numbers of bytes to be read (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-list of lines read (list of strings)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="seek" ID="seek"></a>
-<h2>seek</h2>
-<b>seek</b>(<i>offset, whence=IO::SEEK_SET</i>)
-<p>
-Public method to move the filepointer.
-</p><dl>
-<dt>Raises <b>IOError</b>:</dt>
-<dd>
-This method is not supported and always raises an
-       IOError.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="tell" ID="tell"></a>
-<h2>tell</h2>
-<b>tell</b>(<i></i>)
-<p>
-Public method to get the filepointer position.
-</p><dl>
-<dt>Raises <b>IOError</b>:</dt>
-<dd>
-This method is not supported and always raises an
-      IOError.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="write" ID="write"></a>
-<h2>write</h2>
-<b>write</b>(<i>s</i>)
-<p>
-Public method to write a string to the file.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-bytes to be written (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="writelines" ID="writelines"></a>
-<h2>writelines</h2>
-<b>writelines</b>(<i>list</i>)
-<p>
-Public method to write a list of strings to the file.
-</p><dl>
-<dt><i>list</i></dt>
-<dd>
-the list to be written (list of string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.AsyncIO.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.AsyncIO</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.AsyncIO</h1>
-<p>
-File implementing an asynchronous interface for the debugger.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr>
-<td><a href="#AsyncIO">AsyncIO</a></td>
-<td>Module implementing asynchronous reading and writing.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="AsyncIO" ID="AsyncIO"></a>
-<h2>AsyncIO</h2>
-<p>
-Module implementing asynchronous reading and writing.
-</p>
-<h3>Module Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#AsyncIO.disconnect">disconnect</a></td>
-<td>Function to disconnect any current connection.</td>
-</tr><tr>
-<td><a href="#AsyncIO.initializeAsyncIO">initializeAsyncIO</a></td>
-<td>Function to initialize the module.</td>
-</tr><tr>
-<td><a href="#AsyncIO.readReady">readReady</a></td>
-<td>Function called when there is data ready to be read.</td>
-</tr><tr>
-<td><a href="#AsyncIO.setDescriptors">setDescriptors</a></td>
-<td>Function called to set the descriptors for the connection.</td>
-</tr><tr>
-<td><a href="#AsyncIO.write">write</a></td>
-<td>Function to write a string.</td>
-</tr><tr>
-<td><a href="#AsyncIO.writeReady">writeReady</a></td>
-<td>Function called when we are ready to write data.</td>
-</tr>
-</table>
-<hr />
-
-<a NAME="AsyncIO.disconnect" ID="AsyncIO.disconnect"></a>
-<h4>AsyncIO.disconnect</h4>
-<b>disconnect</b>(<i></i>)
-<p>
-Function to disconnect any current connection.
-</p><a NAME="AsyncIO.initializeAsyncIO" ID="AsyncIO.initializeAsyncIO"></a>
-<h4>AsyncIO.initializeAsyncIO</h4>
-<b>initializeAsyncIO</b>(<i></i>)
-<p>
-Function to initialize the module.
-</p><a NAME="AsyncIO.readReady" ID="AsyncIO.readReady"></a>
-<h4>AsyncIO.readReady</h4>
-<b>readReady</b>(<i></i>)
-<p>
-Function called when there is data ready to be read.
-</p><dl>
-<dt><i>fd</i></dt>
-<dd>
-file descriptor of the file that has data to be read (int)
-</dd>
-</dl><a NAME="AsyncIO.setDescriptors" ID="AsyncIO.setDescriptors"></a>
-<h4>AsyncIO.setDescriptors</h4>
-<b>setDescriptors</b>(<i>wfd</i>)
-<p>
-Function called to set the descriptors for the connection.
-</p><dl>
-<dt><i>fd</i></dt>
-<dd>
-file descriptor of the input file (int)
-</dd><dt><i>wfd</i></dt>
-<dd>
-file descriptor of the output file (int)
-</dd>
-</dl><a NAME="AsyncIO.write" ID="AsyncIO.write"></a>
-<h4>AsyncIO.write</h4>
-<b>write</b>(<i></i>)
-<p>
-Function to write a string.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-the data to be written (string)
-</dd>
-</dl><a NAME="AsyncIO.writeReady" ID="AsyncIO.writeReady"></a>
-<h4>AsyncIO.writeReady</h4>
-<b>writeReady</b>(<i></i>)
-<p>
-Function called when we are ready to write data.
-</p><dl>
-<dt><i>fd</i></dt>
-<dd>
-file descriptor of the file that has data to be written (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.Completer.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.Completer</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.Completer</h1>
-<p>
-File implementing a command line completer class.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#Completer">Completer</a></td>
-<td>Class implementing a command completer.</td>
-</tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="Completer" ID="Completer"></a>
-<h2>Completer</h2>
-<p>
-Class implementing a command completer.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>Operators</td></tr><tr><td>ReservedWords</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#Completer.complete">complete</a></td>
-<td>Public method to select the possible completions</td>
-</tr><tr>
-<td><a href="#Completer.initialize">initialize</a></td>
-<td>constructor</td>
-</tr><tr>
-<td><a href="#Completer.select_message">select_message</a></td>
-<td>Method used to pick completion candidates.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Completer.complete" ID="Completer.complete"></a>
-<h4>Completer.complete</h4>
-<b>complete</b>(<i></i>)
-<p>
-Public method to select the possible completions
-</p><dl>
-<dt><i>input</i></dt>
-<dd>
-text to be completed (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-list of possible completions (Array)
-</dd>
-</dl><a NAME="Completer.initialize" ID="Completer.initialize"></a>
-<h4>Completer.initialize</h4>
-<b>initialize</b>(<i></i>)
-<p>
-constructor
-</p><dl>
-<dt><i>binding</i></dt>
-<dd>
-binding object used to determine the possible completions
-</dd>
-</dl><a NAME="Completer.select_message" ID="Completer.select_message"></a>
-<h4>Completer.select_message</h4>
-<b>select_message</b>(<i>message, candidates, sep = "."</i>)
-<p>
-Method used to pick completion candidates.
-</p><dl>
-<dt><i>receiver</i></dt>
-<dd>
-object receiving the message
-</dd><dt><i>message</i></dt>
-<dd>
-message to be sent to object
-</dd><dt><i>candidates</i></dt>
-<dd>
-possible completion candidates
-</dd><dt><i>sep</i></dt>
-<dd>
-separater string
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-filtered list of candidates
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.Config.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.Config</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.Config</h1>
-<p>
-File defining the different Ruby types
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>ConfigVarTypeStrings</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.DebugClient.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.DebugClient</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.DebugClient</h1>
-<p>
-File implementing a debug client.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#DebugClient">DebugClient</a></td>
-<td>Class implementing the client side of the debugger.</td>
-</tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="DebugClient" ID="DebugClient"></a>
-<h2>DebugClient</h2>
-<p>
-Class implementing the client side of the debugger.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#DebugClient.initialize">initialize</a></td>
-<td>Constructor</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="DebugClient.initialize" ID="DebugClient.initialize"></a>
-<h4>DebugClient.initialize</h4>
-<b>initialize</b>(<i></i>)
-<p>
-Constructor
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.DebugClientBaseModule.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,485 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.DebugClientBaseModule</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.DebugClientBaseModule</h1>
-<p>
-File implementing a debug client base module.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr>
-<td><a href="#DebugClientBase">DebugClientBase</a></td>
-<td>Module implementing the client side of the debugger.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="DebugClientBase" ID="DebugClientBase"></a>
-<h2>DebugClientBase</h2>
-<p>
-Module implementing the client side of the debugger.
-</p><p>
-It provides access to the Ruby interpeter from a debugger running in another
-process.
-</p><p>
-The protocol between the debugger and the client assumes that there will be
-a single source of debugger commands and a single source of Ruby
-statements.  Commands and statement are always exactly one line and may be
-interspersed.
-</p><p>
-The protocol is as follows.  First the client opens a connection to the
-debugger and then sends a series of one line commands.  A command is either
-&gt;Load&lt;, &gt;Step&lt;, &gt;StepInto&lt;, ... or a Ruby statement. 
-See DebugProtocol.rb for a listing of valid protocol tokens.
-</p><p>
-A Ruby statement consists of the statement to execute, followed (in a
-separate line) by &gt;OK?&lt;.  If the statement was incomplete then the response
-is &gt;Continue&lt;.  If there was an exception then the response is &gt;Exception&lt;.
-Otherwise the response is &gt;OK&lt;.  The reason for the &gt;OK?&lt; part is to
-provide a sentinal (ie. the responding &gt;OK&lt;) after any possible output as a
-result of executing the command.
-</p><p>
-The client may send any other lines at any other time which should be
-interpreted as program output.
-</p><p>
-If the debugger closes the session there is no response from the client.
-The client may close the session at any time as a result of the script
-being debugged closing or crashing.
-</p><p>
-<b>Note</b>: This module is meant to be mixed in by individual DebugClient classes.
-Do not use it directly.
-</p>
-<h3>Module Attributes</h3>
-<table>
-<tr><td>@@clientCapabilities</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#DebugClientBase.canEval?">canEval?</a></td>
-<td>Private method to check if the buffer's contents can be evaluated.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.completionList">completionList</a></td>
-<td>Method used to handle the command completion request</td>
-</tr><tr>
-<td><a href="#DebugClientBase.connectDebugger">connectDebugger</a></td>
-<td>Public method to establish a session with the debugger.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.dumpVariable">dumpVariable</a></td>
-<td>Private method to return the variables of a frame to the debug server.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.dumpVariables">dumpVariables</a></td>
-<td>Private method to return the variables of a frame to the debug server.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.eventLoop">eventLoop</a></td>
-<td>Private method implementing our event loop.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.eventPoll">eventPoll</a></td>
-<td>Private method to poll for events like 'set break point'.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.extractAddress">extractAddress</a></td>
-<td>Private method to extract the address part of an object description.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.extractTypeAndAddress">extractTypeAndAddress</a></td>
-<td>Private method to extract the address and type parts of an object description.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.formatVariablesList">formatVariablesList</a></td>
-<td>Private method to produce a formated variables list.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.generateFilterObjects">generateFilterObjects</a></td>
-<td>Private method to convert a filter string to a list of filter objects.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.handleException">handleException</a></td>
-<td>Private method called in the case of an exception</td>
-</tr><tr>
-<td><a href="#DebugClientBase.handleLine">handleLine</a></td>
-<td>Private method to handle the receipt of a complete line.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.inFilter?">inFilter?</a></td>
-<td>Private method to check, if a variable is to be filtered based on its type.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.initializeDebugClient">initializeDebugClient</a></td>
-<td>Method to initialize the module</td>
-</tr><tr>
-<td><a href="#DebugClientBase.interact">interact</a></td>
-<td>Private method to Interact with  the debugger.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.main">main</a></td>
-<td>Public method implementing the main method.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.progTerminated">progTerminated</a></td>
-<td>Private method to tell the debugger that the program has terminated.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.sessionClose">sessionClose</a></td>
-<td>Privat method to close the session with the debugger and terminate.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.startProgInDebugger">startProgInDebugger</a></td>
-<td>Method used to start the remote debugger.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.trace_func">trace_func</a></td>
-<td>Method executed by the tracing facility.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.unhandled_exception">unhandled_exception</a></td>
-<td>Private method to report an unhandled exception.</td>
-</tr><tr>
-<td><a href="#DebugClientBase.write">write</a></td>
-<td>Private method to write data to the output stream.</td>
-</tr>
-</table>
-<hr />
-
-<a NAME="DebugClientBase.canEval?" ID="DebugClientBase.canEval?"></a>
-<h4>DebugClientBase.canEval?</h4>
-<b>canEval?</b>(<i></i>)
-<p>
-Private method to check if the buffer's contents can be evaluated.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating if an eval might succeed (boolean)
-</dd>
-</dl><a NAME="DebugClientBase.completionList" ID="DebugClientBase.completionList"></a>
-<h4>DebugClientBase.completionList</h4>
-<b>completionList</b>(<i></i>)
-<p>
-Method used to handle the command completion request
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-the text to be completed (string)
-</dd>
-</dl><a NAME="DebugClientBase.connectDebugger" ID="DebugClientBase.connectDebugger"></a>
-<h4>DebugClientBase.connectDebugger</h4>
-<b>connectDebugger</b>(<i>remoteAddress=nil, redirect=true</i>)
-<p>
-Public method to establish a session with the debugger. 
-</p><p>
-It opens a network connection to the debugger, connects it to stdin, 
-stdout and stderr and saves these file objects in case the application
-being debugged redirects them itself.
-</p><dl>
-<dt><i>port</i></dt>
-<dd>
-the port number to connect to (int)
-</dd><dt><i>remoteAddress</i></dt>
-<dd>
-the network address of the debug server host (string)
-</dd><dt><i>redirect</i></dt>
-<dd>
-flag indicating redirection of stdin, stdout and stderr (boolean)
-</dd>
-</dl><a NAME="DebugClientBase.dumpVariable" ID="DebugClientBase.dumpVariable"></a>
-<h4>DebugClientBase.dumpVariable</h4>
-<b>dumpVariable</b>(<i>frmnr, scope, filter</i>)
-<p>
-Private method to return the variables of a frame to the debug server.
-</p><dl>
-<dt><i>var</i></dt>
-<dd>
-list encoded name of the requested variable (list of strings)
-</dd><dt><i>frmnr</i></dt>
-<dd>
-distance of frame reported on. 0 is the current frame (int)
-</dd><dt><i>scope</i></dt>
-<dd>
-1 to report global variables, 0 for local variables (int)
-</dd><dt><i>filter</i></dt>
-<dd>
-the indices of variable types to be filtered (list of int)
-</dd>
-</dl><a NAME="DebugClientBase.dumpVariables" ID="DebugClientBase.dumpVariables"></a>
-<h4>DebugClientBase.dumpVariables</h4>
-<b>dumpVariables</b>(<i>scope, filter</i>)
-<p>
-Private method to return the variables of a frame to the debug server.
-</p><dl>
-<dt><i>frmnr</i></dt>
-<dd>
-distance of frame reported on. 0 is the current frame (int)
-</dd><dt><i>scope</i></dt>
-<dd>
-1 to report global variables, 0 for local variables (int)
-</dd><dt><i>filter</i></dt>
-<dd>
-the indices of variable types to be filtered (list of int)
-</dd>
-</dl><a NAME="DebugClientBase.eventLoop" ID="DebugClientBase.eventLoop"></a>
-<h4>DebugClientBase.eventLoop</h4>
-<b>eventLoop</b>(<i></i>)
-<p>
-Private method implementing our event loop.
-</p><a NAME="DebugClientBase.eventPoll" ID="DebugClientBase.eventPoll"></a>
-<h4>DebugClientBase.eventPoll</h4>
-<b>eventPoll</b>(<i></i>)
-<p>
-Private method to poll for events like 'set break point'.
-</p><a NAME="DebugClientBase.extractAddress" ID="DebugClientBase.extractAddress"></a>
-<h4>DebugClientBase.extractAddress</h4>
-<b>extractAddress</b>(<i></i>)
-<p>
-Private method to extract the address part of an object description.
-</p><dl>
-<dt><i>var</i></dt>
-<dd>
-object description (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the address contained in the object description (String)
-</dd>
-</dl><a NAME="DebugClientBase.extractTypeAndAddress" ID="DebugClientBase.extractTypeAndAddress"></a>
-<h4>DebugClientBase.extractTypeAndAddress</h4>
-<b>extractTypeAndAddress</b>(<i></i>)
-<p>
-Private method to extract the address and type parts of an object description.
-</p><dl>
-<dt><i>var</i></dt>
-<dd>
-object description (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-list containing the type and address contained in the object
-    description (Array of two String)
-</dd>
-</dl><a NAME="DebugClientBase.formatVariablesList" ID="DebugClientBase.formatVariablesList"></a>
-<h4>DebugClientBase.formatVariablesList</h4>
-<b>formatVariablesList</b>(<i>binding_, scope, filter = [], excludeSelf = false, access = nil</i>)
-<p>
-Private method to produce a formated variables list.
-</p><p>
-The binding passed in to it is scanned. Variables are
-only added to the list, if their type is not contained 
-in the filter list and their name doesn't match any of the filter expressions.
-The formated variables list (a list of lists of 3 values) is returned.
-</p><dl>
-<dt><i>keylist</i></dt>
-<dd>
-keys of the dictionary
-</dd><dt><i>binding_</i></dt>
-<dd>
-the binding to be scanned
-</dd><dt><i>scope</i></dt>
-<dd>
-1 to filter using the globals filter, 0 using the locals filter (int).
-    Variables are only added to the list, if their name do not match any of the
-    filter expressions.
-</dd><dt><i>filter</i></dt>
-<dd>
-the indices of variable types to be filtered. Variables are
-    only added to the list, if their type is not contained in the filter 
-    list.
-</dd><dt><i>excludeSelf</i></dt>
-<dd>
-flag indicating if the self object should be excluded from
-    the listing (boolean)
-</dd><dt><i>access</i></dt>
-<dd>
-String specifying the access path to (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A list consisting of a list of formatted variables. Each variable
-    entry is a list of three elements, the variable name, its type and 
-    value.
-</dd>
-</dl><a NAME="DebugClientBase.generateFilterObjects" ID="DebugClientBase.generateFilterObjects"></a>
-<h4>DebugClientBase.generateFilterObjects</h4>
-<b>generateFilterObjects</b>(<i>filterString</i>)
-<p>
-Private method to convert a filter string to a list of filter objects.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-1 to generate filter for global variables, 0 for local variables (int)
-</dd><dt><i>filterString</i></dt>
-<dd>
-string of filter patterns separated by ';'
-</dd>
-</dl><a NAME="DebugClientBase.handleException" ID="DebugClientBase.handleException"></a>
-<h4>DebugClientBase.handleException</h4>
-<b>handleException</b>(<i></i>)
-<p>
-Private method called in the case of an exception
-</p><p>
-It ensures that the debug server is informed of the raised exception.
-</p><a NAME="DebugClientBase.handleLine" ID="DebugClientBase.handleLine"></a>
-<h4>DebugClientBase.handleLine</h4>
-<b>handleLine</b>(<i></i>)
-<p>
-Private method to handle the receipt of a complete line.
-</p><p>
-It first looks for a valid protocol token at the start of the line. Thereafter
-it trys to execute the lines accumulated so far.
-</p><dl>
-<dt><i>line</i></dt>
-<dd>
-the received line
-</dd>
-</dl><a NAME="DebugClientBase.inFilter?" ID="DebugClientBase.inFilter?"></a>
-<h4>DebugClientBase.inFilter?</h4>
-<b>inFilter?</b>(<i>otype, oval</i>)
-<p>
-Private method to check, if a variable is to be filtered based on its type.
-</p><dl>
-<dt><i>filter</i></dt>
-<dd>
-the indices of variable types to be filtered (Array of int.
-</dd><dt><i>otype</i></dt>
-<dd>
-type of the variable to be checked (String)
-</dd><dt><i>oval</i></dt>
-<dd>
-variable value to be checked (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating, whether the variable should be filtered (boolean)
-</dd>
-</dl><a NAME="DebugClientBase.initializeDebugClient" ID="DebugClientBase.initializeDebugClient"></a>
-<h4>DebugClientBase.initializeDebugClient</h4>
-<b>initializeDebugClient</b>(<i></i>)
-<p>
-Method to initialize the module
-</p><a NAME="DebugClientBase.interact" ID="DebugClientBase.interact"></a>
-<h4>DebugClientBase.interact</h4>
-<b>interact</b>(<i></i>)
-<p>
-Private method to Interact with  the debugger.
-</p><a NAME="DebugClientBase.main" ID="DebugClientBase.main"></a>
-<h4>DebugClientBase.main</h4>
-<b>main</b>(<i></i>)
-<p>
-Public method implementing the main method.
-</p><a NAME="DebugClientBase.progTerminated" ID="DebugClientBase.progTerminated"></a>
-<h4>DebugClientBase.progTerminated</h4>
-<b>progTerminated</b>(<i></i>)
-<p>
-Private method to tell the debugger that the program has terminated.
-</p><dl>
-<dt><i>status</i></dt>
-<dd>
-the return status
-</dd>
-</dl><a NAME="DebugClientBase.sessionClose" ID="DebugClientBase.sessionClose"></a>
-<h4>DebugClientBase.sessionClose</h4>
-<b>sessionClose</b>(<i></i>)
-<p>
-Privat method to close the session with the debugger and terminate.
-</p><a NAME="DebugClientBase.startProgInDebugger" ID="DebugClientBase.startProgInDebugger"></a>
-<h4>DebugClientBase.startProgInDebugger</h4>
-<b>startProgInDebugger</b>(<i>wd = '', host = nil, port = nil, exceptions = true, traceRuby = false, redirect=true</i>)
-<p>
-Method used to start the remote debugger.
-</p><dl>
-<dt><i>progargs</i></dt>
-<dd>
-commandline for the program to be debugged
-    (list of strings)
-</dd><dt><i>wd</i></dt>
-<dd>
-working directory for the program execution (string)
-</dd><dt><i>host</i></dt>
-<dd>
-hostname of the debug server (string)
-</dd><dt><i>port</i></dt>
-<dd>
-portnumber of the debug server (int)
-</dd><dt><i>exceptions</i></dt>
-<dd>
-flag to enable exception reporting of the IDE (boolean)
-</dd><dt><i>traceRuby</i></dt>
-<dd>
-flag to enable tracing into the Ruby library
-</dd><dt><i>redirect</i></dt>
-<dd>
-flag indicating redirection of stdin, stdout and stderr (boolean)
-</dd>
-</dl><a NAME="DebugClientBase.trace_func" ID="DebugClientBase.trace_func"></a>
-<h4>DebugClientBase.trace_func</h4>
-<b>trace_func</b>(<i>file, line, id, binding_, klass</i>)
-<p>
-Method executed by the tracing facility.
-</p><p>
-It is used to save the execution context of an exception.
-</p><dl>
-<dt><i>event</i></dt>
-<dd>
-the tracing event (String)
-</dd><dt><i>file</i></dt>
-<dd>
-the name of the file being traced (String)
-</dd><dt><i>line</i></dt>
-<dd>
-the line number being traced (int)
-</dd><dt><i>id</i></dt>
-<dd>
-object id
-</dd><dt><i>binding_</i></dt>
-<dd>
-a binding object
-</dd><dt><i>klass</i></dt>
-<dd>
-name of a class
-</dd>
-</dl><a NAME="DebugClientBase.unhandled_exception" ID="DebugClientBase.unhandled_exception"></a>
-<h4>DebugClientBase.unhandled_exception</h4>
-<b>unhandled_exception</b>(<i></i>)
-<p>
-Private method to report an unhandled exception.
-</p><dl>
-<dt><i>exc</i></dt>
-<dd>
-the exception object
-</dd>
-</dl><a NAME="DebugClientBase.write" ID="DebugClientBase.write"></a>
-<h4>DebugClientBase.write</h4>
-<b>write</b>(<i></i>)
-<p>
-Private method to write data to the output stream.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-data to be written (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.DebugClientCapabilities.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.DebugClientCapabilities</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.DebugClientCapabilities</h1>
-<p>
-File defining the debug clients capabilities.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>HasAll</td></tr><tr><td>HasCompleter</td></tr><tr><td>HasCoverage</td></tr><tr><td>HasDebugger</td></tr><tr><td>HasInterpreter</td></tr><tr><td>HasProfiler</td></tr><tr><td>HasShell</td></tr><tr><td>HasUnittest</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.DebugProtocol.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.DebugProtocol</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.DebugProtocol</h1>
-<p>
-File defining the debug protocol tokens
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>DebugAddress</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.DebugQuit.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.DebugQuit</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.DebugQuit</h1>
-<p>
-File implementing a debug quit exception class.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#DebugQuit">DebugQuit</a></td>
-<td>Class implementing an exception to signal the end of a debugging session.</td>
-</tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="DebugQuit" ID="DebugQuit"></a>
-<h2>DebugQuit</h2>
-<p>
-Class implementing an exception to signal the end of a debugging session.
-</p>
-<h3>Derived from</h3>
-Exception
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.Debuggee.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1128 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.Debuggee</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.Debuggee</h1>
-<p>
-File implementing the real debugger, which is connected to the IDE frontend.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#Client">Client</a></td>
-<td>Class handling the connection to the IDE.</td>
-</tr><tr>
-<td><a href="#Context">Context</a></td>
-<td>Class defining the current execution context.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__">DEBUGGER__</a></td>
-<td>Class defining a singleton object for the debugger.</td>
-</tr><tr>
-<td><a href="#SilentObject">SilentObject</a></td>
-<td>Class defining an object that ignores all messages.</td>
-</tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#context">context</a></td>
-<td>Method returning the context of a thread.</td>
-</tr><tr>
-<td><a href="#debug_thread_info">debug_thread_info</a></td>
-<td>Method handling the thread related debug commands.</td>
-</tr><tr>
-<td><a href="#eventLoop">eventLoop</a></td>
-<td>Method calling the main event loop.</td>
-</tr><tr>
-<td><a href="#eventPoll">eventPoll</a></td>
-<td>Method calling the main function polling for an event sent by the IDE.</td>
-</tr><tr>
-<td><a href="#get_thread">get_thread</a></td>
-<td>Method returning a thread by number.</td>
-</tr><tr>
-<td><a href="#interrupt">interrupt</a></td>
-<td>Method to stop execution at the next instruction.</td>
-</tr><tr>
-<td><a href="#make_thread_list">make_thread_list</a></td>
-<td>Method to create a thread list.</td>
-</tr><tr>
-<td><a href="#thread_list">thread_list</a></td>
-<td>Method to list the state of a thread.</td>
-</tr><tr>
-<td><a href="#thread_list_all">thread_list_all</a></td>
-<td>Method to list the state of all threads.</td>
-</tr><tr>
-<td><a href="#traceRuby?">traceRuby?</a></td>
-<td>Method to check, if we should trace into the Ruby interpreter libraries.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="Client" ID="Client"></a>
-<h2>Client</h2>
-<p>
-Class handling the connection to the IDE.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#Client.eventLoop">eventLoop</a></td>
-<td>Method calling the main event loop.</td>
-</tr><tr>
-<td><a href="#Client.eventPoll">eventPoll</a></td>
-<td>Method calling the main function polling for an event sent by the IDE.</td>
-</tr><tr>
-<td><a href="#Client.initialize">initialize</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#Client.printf">printf</a></td>
-<td>Method to print something to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_clear_breakpoint">printf_clear_breakpoint</a></td>
-<td>Method to report the deletion of a temporary breakpoint to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_clear_watchexpression">printf_clear_watchexpression</a></td>
-<td>Method to report the deletion of a temporary watch expression to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_excn">printf_excn</a></td>
-<td>Method to report an exception to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_exit">printf_exit</a></td>
-<td>Method to report the exit status to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_line">printf_line</a></td>
-<td>Method to report the current line and the current stack trace to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.printf_scriptExcn">printf_scriptExcn</a></td>
-<td>Method to report a ScriptError to the IDE.</td>
-</tr><tr>
-<td><a href="#Client.traceRuby?">traceRuby?</a></td>
-<td>Method to check, if we should trace into the Ruby interpreter libraries.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Client.eventLoop" ID="Client.eventLoop"></a>
-<h4>Client.eventLoop</h4>
-<b>eventLoop</b>(<i></i>)
-<p>
-Method calling the main event loop.
-</p><a NAME="Client.eventPoll" ID="Client.eventPoll"></a>
-<h4>Client.eventPoll</h4>
-<b>eventPoll</b>(<i></i>)
-<p>
-Method calling the main function polling for an event sent by the IDE.
-</p><a NAME="Client.initialize" ID="Client.initialize"></a>
-<h4>Client.initialize</h4>
-<b>initialize</b>(<i></i>)
-<p>
-Constructor
-</p><dl>
-<dt><i>debugger</i></dt>
-<dd>
-reference to the object having the IDE connection.
-</dd>
-</dl><a NAME="Client.printf" ID="Client.printf"></a>
-<h4>Client.printf</h4>
-<b>printf</b>(<i></i>)
-<p>
-Method to print something to the IDE.
-</p><dl>
-<dt><i>*args</i></dt>
-<dd>
-Arguments to be printed.
-</dd>
-</dl><a NAME="Client.printf_clear_breakpoint" ID="Client.printf_clear_breakpoint"></a>
-<h4>Client.printf_clear_breakpoint</h4>
-<b>printf_clear_breakpoint</b>(<i>line</i>)
-<p>
-Method to report the deletion of a temporary breakpoint to the IDE.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename of the breakpoint (String)
-</dd><dt><i>line</i></dt>
-<dd>
-line number of the breakpoint (int)
-</dd>
-</dl><a NAME="Client.printf_clear_watchexpression" ID="Client.printf_clear_watchexpression"></a>
-<h4>Client.printf_clear_watchexpression</h4>
-<b>printf_clear_watchexpression</b>(<i></i>)
-<p>
-Method to report the deletion of a temporary watch expression to the IDE.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (String)
-</dd>
-</dl><a NAME="Client.printf_excn" ID="Client.printf_excn"></a>
-<h4>Client.printf_excn</h4>
-<b>printf_excn</b>(<i></i>)
-<p>
-Method to report an exception to the IDE.
-</p><dl>
-<dt><i>exclist</i></dt>
-<dd>
-info about the exception to be reported
-</dd>
-</dl><a NAME="Client.printf_exit" ID="Client.printf_exit"></a>
-<h4>Client.printf_exit</h4>
-<b>printf_exit</b>(<i></i>)
-<p>
-Method to report the exit status to the IDE.
-</p><dl>
-<dt><i>status</i></dt>
-<dd>
-exit status of the program (int)
-</dd>
-</dl><a NAME="Client.printf_line" ID="Client.printf_line"></a>
-<h4>Client.printf_line</h4>
-<b>printf_line</b>(<i></i>)
-<p>
-Method to report the current line and the current stack trace to the IDE.
-</p><dl>
-<dt><i>frames</i></dt>
-<dd>
-reference to the array containing the stack trace.
-</dd>
-</dl><a NAME="Client.printf_scriptExcn" ID="Client.printf_scriptExcn"></a>
-<h4>Client.printf_scriptExcn</h4>
-<b>printf_scriptExcn</b>(<i></i>)
-<p>
-Method to report a ScriptError to the IDE.
-</p><dl>
-<dt><i>exclist</i></dt>
-<dd>
-info about the exception to be reported
-</dd>
-</dl><a NAME="Client.traceRuby?" ID="Client.traceRuby?"></a>
-<h4>Client.traceRuby?</h4>
-<b>traceRuby?</b>(<i></i>)
-<p>
-Method to check, if we should trace into the Ruby interpreter libraries.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="Context" ID="Context"></a>
-<h2>Context</h2>
-<p>
-Class defining the current execution context.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#Context.clear_suspend">clear_suspend</a></td>
-<td>Method to clear the suspend state.</td>
-</tr><tr>
-<td><a href="#Context.current_binding">current_binding</a></td>
-<td>Method returning the binding object of the current execution frame.</td>
-</tr><tr>
-<td><a href="#Context.current_frame">current_frame</a></td>
-<td>Method returning the current execution frame.</td>
-</tr><tr>
-<td><a href="#Context.eventLoop">eventLoop</a></td>
-<td>Method calling the main event loop.</td>
-</tr><tr>
-<td><a href="#Context.eventPoll">eventPoll</a></td>
-<td>Method calling the main function polling for an event sent by the IDE.</td>
-</tr><tr>
-<td><a href="#Context.get_binding">get_binding</a></td>
-<td>Method returning the binding object of a specific execution frame.</td>
-</tr><tr>
-<td><a href="#Context.get_frame">get_frame</a></td>
-<td>Method returning a specific execution frame.</td>
-</tr><tr>
-<td><a href="#Context.initialize">initialize</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#Context.set_suspend">set_suspend</a></td>
-<td>Method to suspend all threads.</td>
-</tr><tr>
-<td><a href="#Context.step_continue">step_continue</a></td>
-<td>Method to continue execution until next breakpoint or watch expression.</td>
-</tr><tr>
-<td><a href="#Context.step_out">step_out</a></td>
-<td>Method to set the next stop point after the function call returns.</td>
-</tr><tr>
-<td><a href="#Context.step_over">step_over</a></td>
-<td>Method to set the next stop point skipping function calls.</td>
-</tr><tr>
-<td><a href="#Context.step_quit">step_quit</a></td>
-<td>Method to stop debugging.</td>
-</tr><tr>
-<td><a href="#Context.stop_next">stop_next</a></td>
-<td>Method to set the next stop point (i.e.</td>
-</tr><tr>
-<td><a href="#Context.suspend_all">suspend_all</a></td>
-<td>Method to suspend all threads.</td>
-</tr><tr>
-<td><a href="#Context.traceRuby?">traceRuby?</a></td>
-<td>Method to check, if we should trace into the Ruby interpreter libraries.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Context.clear_suspend" ID="Context.clear_suspend"></a>
-<h4>Context.clear_suspend</h4>
-<b>clear_suspend</b>(<i></i>)
-<p>
-Method to clear the suspend state.
-</p><a NAME="Context.current_binding" ID="Context.current_binding"></a>
-<h4>Context.current_binding</h4>
-<b>current_binding</b>(<i></i>)
-<p>
-Method returning the binding object of the current execution frame.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-binding object of the current execution frame
-</dd>
-</dl><a NAME="Context.current_frame" ID="Context.current_frame"></a>
-<h4>Context.current_frame</h4>
-<b>current_frame</b>(<i></i>)
-<p>
-Method returning the current execution frame.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-current execution frame
-</dd>
-</dl><a NAME="Context.eventLoop" ID="Context.eventLoop"></a>
-<h4>Context.eventLoop</h4>
-<b>eventLoop</b>(<i></i>)
-<p>
-Method calling the main event loop.
-</p><a NAME="Context.eventPoll" ID="Context.eventPoll"></a>
-<h4>Context.eventPoll</h4>
-<b>eventPoll</b>(<i></i>)
-<p>
-Method calling the main function polling for an event sent by the IDE.
-</p><a NAME="Context.get_binding" ID="Context.get_binding"></a>
-<h4>Context.get_binding</h4>
-<b>get_binding</b>(<i></i>)
-<p>
-Method returning the binding object of a specific execution frame.
-</p><dl>
-<dt><i>frameno</i></dt>
-<dd>
-frame number of the frame (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the requested binding object
-</dd>
-</dl><a NAME="Context.get_frame" ID="Context.get_frame"></a>
-<h4>Context.get_frame</h4>
-<b>get_frame</b>(<i></i>)
-<p>
-Method returning a specific execution frame.
-</p><dl>
-<dt><i>frameno</i></dt>
-<dd>
-frame number of the frame to be returned (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the requested execution frame
-</dd>
-</dl><a NAME="Context.initialize" ID="Context.initialize"></a>
-<h4>Context.initialize</h4>
-<b>initialize</b>(<i></i>)
-<p>
-Constructor
-</p><a NAME="Context.set_suspend" ID="Context.set_suspend"></a>
-<h4>Context.set_suspend</h4>
-<b>set_suspend</b>(<i></i>)
-<p>
-Method to suspend all threads.
-</p><a NAME="Context.step_continue" ID="Context.step_continue"></a>
-<h4>Context.step_continue</h4>
-<b>step_continue</b>(<i></i>)
-<p>
-Method to continue execution until next breakpoint or watch expression.
-</p><a NAME="Context.step_out" ID="Context.step_out"></a>
-<h4>Context.step_out</h4>
-<b>step_out</b>(<i></i>)
-<p>
-Method to set the next stop point after the function call returns.
-</p><a NAME="Context.step_over" ID="Context.step_over"></a>
-<h4>Context.step_over</h4>
-<b>step_over</b>(<i></i>)
-<p>
-Method to set the next stop point skipping function calls.
-</p><dl>
-<dt><i>counter</i></dt>
-<dd>
-defining the stop point (int)
-</dd>
-</dl><a NAME="Context.step_quit" ID="Context.step_quit"></a>
-<h4>Context.step_quit</h4>
-<b>step_quit</b>(<i></i>)
-<p>
-Method to stop debugging.
-</p><a NAME="Context.stop_next" ID="Context.stop_next"></a>
-<h4>Context.stop_next</h4>
-<b>stop_next</b>(<i></i>)
-<p>
-Method to set the next stop point (i.e. stop at next line).
-</p><dl>
-<dt><i>counter</i></dt>
-<dd>
-defining the stop point (int)
-</dd>
-</dl><a NAME="Context.suspend_all" ID="Context.suspend_all"></a>
-<h4>Context.suspend_all</h4>
-<b>suspend_all</b>(<i></i>)
-<p>
-Method to suspend all threads.
-</p><a NAME="Context.traceRuby?" ID="Context.traceRuby?"></a>
-<h4>Context.traceRuby?</h4>
-<b>traceRuby?</b>(<i></i>)
-<p>
-Method to check, if we should trace into the Ruby interpreter libraries.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="DEBUGGER__" ID="DEBUGGER__"></a>
-<h2>DEBUGGER__</h2>
-<p>
-Class defining a singleton object for the debugger.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>MUTEX</td></tr><tr><td>SilentClient</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#DEBUGGER__.add_break_point">add_break_point</a></td>
-<td>Method to add a breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.add_watch_point">add_watch_point</a></td>
-<td>Method to add a watch expression.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.attach">attach</a></td>
-<td>Method to connect the debugger to the IDE.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.attached?">attached?</a></td>
-<td>Method returning the attached state.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.break_points">break_points</a></td>
-<td>Method to return the list of breakpoints</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.check_break_points">check_break_points</a></td>
-<td>Method to check, if the given position contains an active breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.check_suspend">check_suspend</a></td>
-<td>Method to check the suspend state.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.clear_break_point">clear_break_point</a></td>
-<td>Method to delete a specific breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.clear_watch_point">clear_watch_point</a></td>
-<td>Method to delete a specific watch expression.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.client">client</a></td>
-<td>Method returning a reference to the client object.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.context">context</a></td>
-<td>Method returning the context of a thread.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.debug_command">debug_command</a></td>
-<td>Method to execute the next debug command.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.debug_silent_eval">debug_silent_eval</a></td>
-<td>Method to eval a string without output.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.delete_break_point">delete_break_point</a></td>
-<td>Method to delete a breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.delete_watch_point">delete_watch_point</a></td>
-<td>Method to delete a watch expression.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.enable_break_point">enable_break_point</a></td>
-<td>Method to set the enabled state of a breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.enable_watch_point">enable_watch_point</a></td>
-<td>Method to set the enabled state of a watch expression.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.excn_handle">excn_handle</a></td>
-<td>Method to handle an exception</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.frame_set_pos">frame_set_pos</a></td>
-<td>Method to set the frame position of the current frame.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.ignore_break_point">ignore_break_point</a></td>
-<td>Method to set the ignore count of a breakpoint.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.ignore_watch_point">ignore_watch_point</a></td>
-<td>Method to set the ignore count of a watch expression.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.last_thread">last_thread</a></td>
-<td>Method returning the last active thread.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.quit">quit</a></td>
-<td>Method to quit the debugger.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.resume">resume</a></td>
-<td>Method to resume the program being debugged.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.resume_all">resume_all</a></td>
-<td>Method to resume all threads.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.set_client">set_client</a></td>
-<td>Method to set the client handling the connection.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.set_last_thread">set_last_thread</a></td>
-<td>Method to remember the last thread.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.skip_it?">skip_it?</a></td>
-<td>Method to filter out debugger files.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.stdout">stdout</a></td>
-<td>Method returning the stdout object.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.stdout=">stdout=</a></td>
-<td>Method to set the stdout object.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.suspend">suspend</a></td>
-<td>Method to suspend the program being debugged.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.thnum">thnum</a></td>
-<td>Method returning the thread number of the current thread.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.trace_func">trace_func</a></td>
-<td>Method executed by the tracing facility.</td>
-</tr><tr>
-<td><a href="#DEBUGGER__.waiting">waiting</a></td>
-<td>Method returning the waiting list.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="DEBUGGER__.add_break_point" ID="DEBUGGER__.add_break_point"></a>
-<h4>DEBUGGER__.add_break_point</h4>
-<b>add_break_point</b>(<i>pos, temp = false, cond = nil</i>)
-<p>
-Method to add a breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename for the breakpoint (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number for the breakpoint (int)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary breakpoint (boolean)
-</dd><dt><i>cond</i></dt>
-<dd>
-condition of a conditional breakpoint (String)
-</dd>
-</dl><a NAME="DEBUGGER__.add_watch_point" ID="DEBUGGER__.add_watch_point"></a>
-<h4>DEBUGGER__.add_watch_point</h4>
-<b>add_watch_point</b>(<i>temp = false</i>)
-<p>
-Method to add a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (String)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary watch expression (boolean)
-</dd>
-</dl><a NAME="DEBUGGER__.attach" ID="DEBUGGER__.attach"></a>
-<h4>DEBUGGER__.attach</h4>
-<b>attach</b>(<i></i>)
-<p>
-Method to connect the debugger to the IDE.
-</p><dl>
-<dt><i>debugger</i></dt>
-<dd>
-reference to the object handling the
-    communication with the IDE.
-</dd>
-</dl><a NAME="DEBUGGER__.attached?" ID="DEBUGGER__.attached?"></a>
-<h4>DEBUGGER__.attached?</h4>
-<b>attached?</b>(<i></i>)
-<p>
-Method returning the attached state.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating, whether the debugger is attached to the IDE.
-</dd>
-</dl><a NAME="DEBUGGER__.break_points" ID="DEBUGGER__.break_points"></a>
-<h4>DEBUGGER__.break_points</h4>
-<b>break_points</b>(<i></i>)
-<p>
-Method to return the list of breakpoints
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-Array containing all breakpoints.
-</dd>
-</dl><a NAME="DEBUGGER__.check_break_points" ID="DEBUGGER__.check_break_points"></a>
-<h4>DEBUGGER__.check_break_points</h4>
-<b>check_break_points</b>(<i>pos, binding_, id</i>)
-<p>
-Method to check, if the given position contains an active breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename containing the currently executed line (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number currently executed (int)
-</dd><dt><i>binding_</i></dt>
-<dd>
-current binding object
-</dd><dt><i>id</i></dt>
-<dd>
-(ignored)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating an active breakpoint (boolean)
-</dd>
-</dl><a NAME="DEBUGGER__.check_suspend" ID="DEBUGGER__.check_suspend"></a>
-<h4>DEBUGGER__.check_suspend</h4>
-<b>check_suspend</b>(<i></i>)
-<p>
-Method to check the suspend state.
-</p><a NAME="DEBUGGER__.clear_break_point" ID="DEBUGGER__.clear_break_point"></a>
-<h4>DEBUGGER__.clear_break_point</h4>
-<b>clear_break_point</b>(<i>pos</i>)
-<p>
-Method to delete a specific breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename containing the breakpoint (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number containing the breakpoint (int)
-</dd>
-</dl><a NAME="DEBUGGER__.clear_watch_point" ID="DEBUGGER__.clear_watch_point"></a>
-<h4>DEBUGGER__.clear_watch_point</h4>
-<b>clear_watch_point</b>(<i></i>)
-<p>
-Method to delete a specific watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression specifying the watch expression (String)
-</dd>
-</dl><a NAME="DEBUGGER__.client" ID="DEBUGGER__.client"></a>
-<h4>DEBUGGER__.client</h4>
-<b>client</b>(<i></i>)
-<p>
-Method returning a reference to the client object.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-reference to the client object.
-</dd>
-</dl><a NAME="DEBUGGER__.context" ID="DEBUGGER__.context"></a>
-<h4>DEBUGGER__.context</h4>
-<b>context</b>(<i></i>)
-<p>
-Method returning the context of a thread.
-</p><dl>
-<dt><i>th</i></dt>
-<dd>
-thread object to get the context for
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the context for the thread
-</dd>
-</dl><a NAME="DEBUGGER__.debug_command" ID="DEBUGGER__.debug_command"></a>
-<h4>DEBUGGER__.debug_command</h4>
-<b>debug_command</b>(<i>line, id, binding_</i>)
-<p>
-Method to execute the next debug command.
-</p><a NAME="DEBUGGER__.debug_silent_eval" ID="DEBUGGER__.debug_silent_eval"></a>
-<h4>DEBUGGER__.debug_silent_eval</h4>
-<b>debug_silent_eval</b>(<i>binding_</i>)
-<p>
-Method to eval a string without output.
-</p><dl>
-<dt><i>str</i></dt>
-<dd>
-String containing the expression to be evaluated
-</dd><dt><i>binding_</i></dt>
-<dd>
-the binding for the evaluation
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the result of the evaluation
-</dd>
-</dl><a NAME="DEBUGGER__.delete_break_point" ID="DEBUGGER__.delete_break_point"></a>
-<h4>DEBUGGER__.delete_break_point</h4>
-<b>delete_break_point</b>(<i>pos</i>)
-<p>
-Method to delete a breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename of the breakpoint (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number of the breakpoint (int)
-</dd>
-</dl><a NAME="DEBUGGER__.delete_watch_point" ID="DEBUGGER__.delete_watch_point"></a>
-<h4>DEBUGGER__.delete_watch_point</h4>
-<b>delete_watch_point</b>(<i></i>)
-<p>
-Method to delete a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (String)
-</dd>
-</dl><a NAME="DEBUGGER__.enable_break_point" ID="DEBUGGER__.enable_break_point"></a>
-<h4>DEBUGGER__.enable_break_point</h4>
-<b>enable_break_point</b>(<i>pos, enable</i>)
-<p>
-Method to set the enabled state of a breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename of the breakpoint (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number of the breakpoint (int)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating the new enabled state (boolean)
-</dd>
-</dl><a NAME="DEBUGGER__.enable_watch_point" ID="DEBUGGER__.enable_watch_point"></a>
-<h4>DEBUGGER__.enable_watch_point</h4>
-<b>enable_watch_point</b>(<i>enable</i>)
-<p>
-Method to set the enabled state of a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (String)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating the new enabled state (boolean)
-</dd>
-</dl><a NAME="DEBUGGER__.excn_handle" ID="DEBUGGER__.excn_handle"></a>
-<h4>DEBUGGER__.excn_handle</h4>
-<b>excn_handle</b>(<i>line, id, binding_</i>)
-<p>
-Method to handle an exception
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename containing the currently executed line (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number currently executed (int)
-</dd><dt><i>id</i></dt>
-<dd>
-(ignored)
-</dd><dt><i>binding_</i></dt>
-<dd>
-current binding object
-</dd>
-</dl><a NAME="DEBUGGER__.frame_set_pos" ID="DEBUGGER__.frame_set_pos"></a>
-<h4>DEBUGGER__.frame_set_pos</h4>
-<b>frame_set_pos</b>(<i>line</i>)
-<p>
-Method to set the frame position of the current frame.
-</p><a NAME="DEBUGGER__.ignore_break_point" ID="DEBUGGER__.ignore_break_point"></a>
-<h4>DEBUGGER__.ignore_break_point</h4>
-<b>ignore_break_point</b>(<i>pos, count</i>)
-<p>
-Method to set the ignore count of a breakpoint.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-filename of the breakpoint (String)
-</dd><dt><i>pos</i></dt>
-<dd>
-line number of the breakpoint (int)
-</dd><dt><i>count</i></dt>
-<dd>
-ignore count to be set (int)
-</dd>
-</dl><a NAME="DEBUGGER__.ignore_watch_point" ID="DEBUGGER__.ignore_watch_point"></a>
-<h4>DEBUGGER__.ignore_watch_point</h4>
-<b>ignore_watch_point</b>(<i>count</i>)
-<p>
-Method to set the ignore count of a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (String)
-</dd><dt><i>count</i></dt>
-<dd>
-ignore count to be set (int)
-</dd>
-</dl><a NAME="DEBUGGER__.last_thread" ID="DEBUGGER__.last_thread"></a>
-<h4>DEBUGGER__.last_thread</h4>
-<b>last_thread</b>(<i></i>)
-<p>
-Method returning the last active thread.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-active thread
-</dd>
-</dl><a NAME="DEBUGGER__.quit" ID="DEBUGGER__.quit"></a>
-<h4>DEBUGGER__.quit</h4>
-<b>quit</b>(<i></i>)
-<p>
-Method to quit the debugger.
-</p><dl>
-<dt><i>status</i></dt>
-<dd>
-exit status of the program
-</dd>
-</dl><a NAME="DEBUGGER__.resume" ID="DEBUGGER__.resume"></a>
-<h4>DEBUGGER__.resume</h4>
-<b>resume</b>(<i></i>)
-<p>
-Method to resume the program being debugged.
-</p><a NAME="DEBUGGER__.resume_all" ID="DEBUGGER__.resume_all"></a>
-<h4>DEBUGGER__.resume_all</h4>
-<b>resume_all</b>(<i></i>)
-<p>
-Method to resume all threads.
-</p><a NAME="DEBUGGER__.set_client" ID="DEBUGGER__.set_client"></a>
-<h4>DEBUGGER__.set_client</h4>
-<b>set_client</b>(<i></i>)
-<p>
-Method to set the client handling the connection.
-</p><dl>
-<dt><i>debugger</i></dt>
-<dd>
-reference to the object handling the connection
-</dd>
-</dl><a NAME="DEBUGGER__.set_last_thread" ID="DEBUGGER__.set_last_thread"></a>
-<h4>DEBUGGER__.set_last_thread</h4>
-<b>set_last_thread</b>(<i></i>)
-<p>
-Method to remember the last thread.
-</p><dl>
-<dt><i>th</i></dt>
-<dd>
-thread to be remembered.
-</dd>
-</dl><a NAME="DEBUGGER__.skip_it?" ID="DEBUGGER__.skip_it?"></a>
-<h4>DEBUGGER__.skip_it?</h4>
-<b>skip_it?</b>(<i></i>)
-<p>
-Method to filter out debugger files.
-</p><p>
-Tracing is turned off for files that are part of the
-debugger that are called from the application being debugged.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-name of the file to be checked (String)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating, whether the file should be skipped (boolean)
-</dd>
-</dl><a NAME="DEBUGGER__.stdout" ID="DEBUGGER__.stdout"></a>
-<h4>DEBUGGER__.stdout</h4>
-<b>stdout</b>(<i></i>)
-<p>
-Method returning the stdout object.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-reference to the stdout object
-</dd>
-</dl><a NAME="DEBUGGER__.stdout=" ID="DEBUGGER__.stdout="></a>
-<h4>DEBUGGER__.stdout=</h4>
-<b>stdout=</b>(<i></i>)
-<p>
-Method to set the stdout object.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-reference to the stdout object
-</dd>
-</dl><a NAME="DEBUGGER__.suspend" ID="DEBUGGER__.suspend"></a>
-<h4>DEBUGGER__.suspend</h4>
-<b>suspend</b>(<i></i>)
-<p>
-Method to suspend the program being debugged.
-</p><a NAME="DEBUGGER__.thnum" ID="DEBUGGER__.thnum"></a>
-<h4>DEBUGGER__.thnum</h4>
-<b>thnum</b>(<i></i>)
-<p>
-Method returning the thread number of the current thread.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-thread number of the current thread.
-</dd>
-</dl><a NAME="DEBUGGER__.trace_func" ID="DEBUGGER__.trace_func"></a>
-<h4>DEBUGGER__.trace_func</h4>
-<b>trace_func</b>(<i>file, line, id, binding_, klass</i>)
-<p>
-Method executed by the tracing facility.
-</p><dl>
-<dt><i>event</i></dt>
-<dd>
-the tracing event (String)
-</dd><dt><i>file</i></dt>
-<dd>
-the name of the file being traced (String)
-</dd><dt><i>line</i></dt>
-<dd>
-the line number being traced (int)
-</dd><dt><i>id</i></dt>
-<dd>
-object id
-</dd><dt><i>binding_</i></dt>
-<dd>
-a binding object
-</dd><dt><i>klass</i></dt>
-<dd>
-name of a class
-</dd>
-</dl><a NAME="DEBUGGER__.waiting" ID="DEBUGGER__.waiting"></a>
-<h4>DEBUGGER__.waiting</h4>
-<b>waiting</b>(<i></i>)
-<p>
-Method returning the waiting list.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-the waiting list
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="SilentObject" ID="SilentObject"></a>
-<h2>SilentObject</h2>
-<p>
-Class defining an object that ignores all messages.
-</p>
-<h3>Derived from</h3>
-None
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#SilentObject.method_missing">method_missing</a></td>
-<td>Method invoked for all messages it cannot handle.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="SilentObject.method_missing" ID="SilentObject.method_missing"></a>
-<h4>SilentObject.method_missing</h4>
-<b>method_missing</b>(<i>*a, &b</i>)
-<p>
-Method invoked for all messages it cannot handle.
-</p><dl>
-<dt><i>msg_id</i></dt>
-<dd>
-symbol for the method called
-</dd><dt><i>*a</i></dt>
-<dd>
-arguments passed to the missing method
-</dd><dt><i>&b</i></dt>
-<dd>
-unknown
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="context" ID="context"></a>
-<h2>context</h2>
-<b>context</b>(<i>thread=Thread.current</i>)
-<p>
-Method returning the context of a thread.
-</p><dl>
-<dt><i>th</i></dt>
-<dd>
-threat the context is requested for
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-context object for the thread
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="debug_thread_info" ID="debug_thread_info"></a>
-<h2>debug_thread_info</h2>
-<b>debug_thread_info</b>(<i>input, binding_</i>)
-<p>
-Method handling the thread related debug commands.
-</p><dl>
-<dt><i>input</i></dt>
-<dd>
-debug command (String)
-</dd><dt><i>binding_</i></dt>
-<dd>
-reference to the binding object
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="eventLoop" ID="eventLoop"></a>
-<h2>eventLoop</h2>
-<b>eventLoop</b>(<i></i>)
-<p>
-Method calling the main event loop.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="eventPoll" ID="eventPoll"></a>
-<h2>eventPoll</h2>
-<b>eventPoll</b>(<i></i>)
-<p>
-Method calling the main function polling for an event sent by the IDE.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="get_thread" ID="get_thread"></a>
-<h2>get_thread</h2>
-<b>get_thread</b>(<i>num</i>)
-<p>
-Method returning a thread by number.
-</p><dl>
-<dt><i>num</i></dt>
-<dd>
-thread number (int)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-thread with the requested number
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="interrupt" ID="interrupt"></a>
-<h2>interrupt</h2>
-<b>interrupt</b>(<i></i>)
-<p>
-Method to stop execution at the next instruction.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="make_thread_list" ID="make_thread_list"></a>
-<h2>make_thread_list</h2>
-<b>make_thread_list</b>(<i></i>)
-<p>
-Method to create a thread list.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="thread_list" ID="thread_list"></a>
-<h2>thread_list</h2>
-<b>thread_list</b>(<i>num</i>)
-<p>
-Method to list the state of a thread.
-</p><dl>
-<dt><i>num</i></dt>
-<dd>
-thread number (int)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="thread_list_all" ID="thread_list_all"></a>
-<h2>thread_list_all</h2>
-<b>thread_list_all</b>(<i></i>)
-<p>
-Method to list the state of all threads.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="traceRuby?" ID="traceRuby?"></a>
-<h2>traceRuby?</h2>
-<b>traceRuby?</b>(<i></i>)
-<p>
-Method to check, if we should trace into the Ruby interpreter libraries.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.DebugClients.Ruby.__init__.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.DebugClients.Ruby.__init__</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.DebugClients.Ruby.__init__</h1>
-<p>
-Package implementing the Ruby debugger.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Modules</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Debugger.DebugServer.html	Sat Nov 07 15:54:09 2015 +0100
+++ b/Documentation/Source/eric6.Debugger.DebugServer.html	Sun Nov 08 17:01:39 2015 +0100
@@ -247,6 +247,9 @@
 <td><a href="#DebugServer.__deleteWatchPoints">__deleteWatchPoints</a></td>
 <td>Private slot to delete watch expressions.</td>
 </tr><tr>
+<td><a href="#DebugServer.__findLanguageForExtension">__findLanguageForExtension</a></td>
+<td>Private method to get the language associated with a file extension.</td>
+</tr><tr>
 <td><a href="#DebugServer.__getNetworkInterfaceAndIndex">__getNetworkInterfaceAndIndex</a></td>
 <td>Private method to determine the network interface and the interface index.</td>
 </tr><tr>
@@ -260,7 +263,7 @@
 <td>Private method to shut down a passive debug connection.</td>
 </tr><tr>
 <td><a href="#DebugServer.__registerDebuggerInterfaces">__registerDebuggerInterfaces</a></td>
-<td>Private method to register the available debugger interface modules.</td>
+<td>Private method to register the available internal debugger interfaces.</td>
 </tr><tr>
 <td><a href="#DebugServer.__remoteBreakpointEnable">__remoteBreakpointEnable</a></td>
 <td>Private method to enable or disable a breakpoint.</td>
@@ -349,6 +352,9 @@
 <td><a href="#DebugServer.preferencesChanged">preferencesChanged</a></td>
 <td>Public slot to handle the preferencesChanged signal.</td>
 </tr><tr>
+<td><a href="#DebugServer.registerDebuggerInterface">registerDebuggerInterface</a></td>
+<td>Public method to register a debugger interface.</td>
+</tr><tr>
 <td><a href="#DebugServer.remoteBanner">remoteBanner</a></td>
 <td>Public slot to get the banner info of the remote client.</td>
 </tr><tr>
@@ -498,6 +504,9 @@
 </tr><tr>
 <td><a href="#DebugServer.startClient">startClient</a></td>
 <td>Public method to start a debug client.</td>
+</tr><tr>
+<td><a href="#DebugServer.unregisterDebuggerInterface">unregisterDebuggerInterface</a></td>
+<td>Private method to unregister a debugger interface.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -656,6 +665,26 @@
 <dd>
 end row (integer)
 </dd>
+</dl><a NAME="DebugServer.__findLanguageForExtension" ID="DebugServer.__findLanguageForExtension"></a>
+<h4>DebugServer.__findLanguageForExtension</h4>
+<b>__findLanguageForExtension</b>(<i>ext</i>)
+<p>
+        Private method to get the language associated with a file extension.
+</p><dl>
+<dt><i>ext</i> (str)</dt>
+<dd>
+file extension
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+associated language
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="DebugServer.__getNetworkInterfaceAndIndex" ID="DebugServer.__getNetworkInterfaceAndIndex"></a>
 <h4>DebugServer.__getNetworkInterfaceAndIndex</h4>
 <b>__getNetworkInterfaceAndIndex</b>(<i>address</i>)
@@ -704,7 +733,7 @@
 <h4>DebugServer.__registerDebuggerInterfaces</h4>
 <b>__registerDebuggerInterfaces</b>(<i></i>)
 <p>
-        Private method to register the available debugger interface modules.
+        Private method to register the available internal debugger interfaces.
 </p><a NAME="DebugServer.__remoteBreakpointEnable" ID="DebugServer.__remoteBreakpointEnable"></a>
 <h4>DebugServer.__remoteBreakpointEnable</h4>
 <b>__remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
@@ -1072,7 +1101,24 @@
 <b>preferencesChanged</b>(<i></i>)
 <p>
         Public slot to handle the preferencesChanged signal.
-</p><a NAME="DebugServer.remoteBanner" ID="DebugServer.remoteBanner"></a>
+</p><a NAME="DebugServer.registerDebuggerInterface" ID="DebugServer.registerDebuggerInterface"></a>
+<h4>DebugServer.registerDebuggerInterface</h4>
+<b>registerDebuggerInterface</b>(<i>name, getRegistryData</i>)
+<p>
+        Public method to register a debugger interface.
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name of the debugger interface
+</dd><dt><i>getRegistryData</i> (function)</dt>
+<dd>
+reference to a function to be called
+            to get the debugger interface details. This method shall
+            return the client language, the client capabilities, the
+            list of associated file extensions and a function reference
+            to create the debugger interface (see __createDebuggerInterface())
+</dd>
+</dl><a NAME="DebugServer.remoteBanner" ID="DebugServer.remoteBanner"></a>
 <h4>DebugServer.remoteBanner</h4>
 <b>remoteBanner</b>(<i></i>)
 <p>
@@ -1804,6 +1850,16 @@
 flag indicating to start the debugger in a
             console window (boolean)
 </dd>
+</dl><a NAME="DebugServer.unregisterDebuggerInterface" ID="DebugServer.unregisterDebuggerInterface"></a>
+<h4>DebugServer.unregisterDebuggerInterface</h4>
+<b>unregisterDebuggerInterface</b>(<i>name</i>)
+<p>
+        Private method to unregister a debugger interface.
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name of the debugger interface
+</dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Sat Nov 07 15:54:09 2015 +0100
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Sun Nov 08 17:01:39 2015 +0100
@@ -37,8 +37,11 @@
 <h3>Functions</h3>
 <table>
 <tr>
+<td><a href="#createDebuggerInterfaceNone">createDebuggerInterfaceNone</a></td>
+<td>Module function to create a debugger interface instance.</td>
+</tr><tr>
 <td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module functionto get characterising data for the debugger interface.</td>
+<td>Module functionto get characterizing data for the debugger interface.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -704,16 +707,49 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="createDebuggerInterfaceNone" ID="createDebuggerInterfaceNone"></a>
+<h2>createDebuggerInterfaceNone</h2>
+<b>createDebuggerInterfaceNone</b>(<i>debugServer, passive</i>)
+<p>
+    Module function to create a debugger interface instance.
+</p><p>
+
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+instantiated debugger interface
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+DebuggerInterfacePython
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="getRegistryData" ID="getRegistryData"></a>
 <h2>getRegistryData</h2>
 <b>getRegistryData</b>(<i></i>)
 <p>
-    Module functionto get characterising data for the debugger interface.
+    Module functionto get characterizing data for the debugger interface.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
+tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, int, list of str, function)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Sat Nov 07 15:54:09 2015 +0100
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Sun Nov 08 17:01:39 2015 +0100
@@ -37,8 +37,11 @@
 <h3>Functions</h3>
 <table>
 <tr>
+<td><a href="#createDebuggerInterfacePython">createDebuggerInterfacePython</a></td>
+<td>Module function to create a debugger interface instance.</td>
+</tr><tr>
 <td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module function to get characterising data for the debugger interface.</td>
+<td>Module function to get characterizing data for the debugger interface.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -802,16 +805,49 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="createDebuggerInterfacePython" ID="createDebuggerInterfacePython"></a>
+<h2>createDebuggerInterfacePython</h2>
+<b>createDebuggerInterfacePython</b>(<i>debugServer, passive</i>)
+<p>
+    Module function to create a debugger interface instance.
+</p><p>
+
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+instantiated debugger interface
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+DebuggerInterfacePython
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="getRegistryData" ID="getRegistryData"></a>
 <h2>getRegistryData</h2>
 <b>getRegistryData</b>(<i></i>)
 <p>
-    Module function to get characterising data for the debugger interface.
+    Module function to get characterizing data for the debugger interface.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
+tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, int, list of str, function)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfacePython3.html	Sat Nov 07 15:54:09 2015 +0100
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfacePython3.html	Sun Nov 08 17:01:39 2015 +0100
@@ -37,8 +37,11 @@
 <h3>Functions</h3>
 <table>
 <tr>
+<td><a href="#createDebuggerInterfacePython3">createDebuggerInterfacePython3</a></td>
+<td>Module function to create a debugger interface instance.</td>
+</tr><tr>
 <td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module function to get characterising data for the debugger interface.</td>
+<td>Module function to get characterizing data for the debugger interface.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -802,16 +805,49 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="createDebuggerInterfacePython3" ID="createDebuggerInterfacePython3"></a>
+<h2>createDebuggerInterfacePython3</h2>
+<b>createDebuggerInterfacePython3</b>(<i>debugServer, passive</i>)
+<p>
+    Module function to create a debugger interface instance.
+</p><p>
+
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+instantiated debugger interface
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+DebuggerInterfacePython
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="getRegistryData" ID="getRegistryData"></a>
 <h2>getRegistryData</h2>
 <b>getRegistryData</b>(<i></i>)
 <p>
-    Module function to get characterising data for the debugger interface.
+    Module function to get characterizing data for the debugger interface.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-list of the following data. Client type (string), client
-        capabilities (integer), client type association (list of strings)
+tuple containing  client type, client capabilities, client file
+        type associations and reference to creation function
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, int, list of str, function)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfaceRuby.html	Sat Nov 07 15:54:09 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,843 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.Debugger.DebuggerInterfaceRuby</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric6.Debugger.DebuggerInterfaceRuby</h1>
-<p>
-Module implementing the Ruby debugger interface for the debug server.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>ClientDefaultCapabilities</td></tr><tr><td>ClientTypeAssociations</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#DebuggerInterfaceRuby">DebuggerInterfaceRuby</a></td>
-<td>Class implementing the Ruby debugger interface for the debug server.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module function to get characterising data for the debugger interface.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="DebuggerInterfaceRuby" ID="DebuggerInterfaceRuby"></a>
-<h2>DebuggerInterfaceRuby</h2>
-<p>
-    Class implementing the Ruby debugger interface for the debug server.
-</p>
-<h3>Derived from</h3>
-QObject
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#DebuggerInterfaceRuby.__init__">DebuggerInterfaceRuby</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.__identityTranslation">__identityTranslation</a></td>
-<td>Private method to perform the identity path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.__parseClientLine">__parseClientLine</a></td>
-<td>Private method to handle data from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.__remoteTranslation">__remoteTranslation</a></td>
-<td>Private method to perform the path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.__sendCommand">__sendCommand</a></td>
-<td>Private method to send a single line command to the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.__startProcess">__startProcess</a></td>
-<td>Private method to start the debugger client process.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.flush">flush</a></td>
-<td>Public slot to flush the queue.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.getClientCapabilities">getClientCapabilities</a></td>
-<td>Public method to retrieve the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.isConnected">isConnected</a></td>
-<td>Public method to test, if a debug client has connected.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.newConnection">newConnection</a></td>
-<td>Public slot to handle a new connection.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteBanner">remoteBanner</a></td>
-<td>Public slot to get the banner info of the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteBreakpoint">remoteBreakpoint</a></td>
-<td>Public method to set or clear a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteBreakpointEnable">remoteBreakpointEnable</a></td>
-<td>Public method to enable or disable a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteBreakpointIgnore">remoteBreakpointIgnore</a></td>
-<td>Public method to ignore a breakpoint the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteCapabilities">remoteCapabilities</a></td>
-<td>Public slot to get the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteClientSetFilter">remoteClientSetFilter</a></td>
-<td>Public method to set a variables filter list.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteClientVariable">remoteClientVariable</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteClientVariables">remoteClientVariables</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteCompletion">remoteCompletion</a></td>
-<td>Public slot to get the a list of possible commandline completions from the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteContinue">remoteContinue</a></td>
-<td>Public method to continue the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteCoverage">remoteCoverage</a></td>
-<td>Public method to load a new program to collect coverage data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteEnvironment">remoteEnvironment</a></td>
-<td>Public method to set the environment for a program to debug, run, ...</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteEval">remoteEval</a></td>
-<td>Public method to evaluate arg in the current context of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteExec">remoteExec</a></td>
-<td>Public method to execute stmt in the current context of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteLoad">remoteLoad</a></td>
-<td>Public method to load a new program to debug.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteProfile">remoteProfile</a></td>
-<td>Public method to load a new program to collect profiling data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteRawInput">remoteRawInput</a></td>
-<td>Public method to send the raw input to the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteRun">remoteRun</a></td>
-<td>Public method to load a new program to run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteSetThread">remoteSetThread</a></td>
-<td>Public method to request to set the given thread as current thread.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteStatement">remoteStatement</a></td>
-<td>Public method to execute a Ruby statement.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteStep">remoteStep</a></td>
-<td>Public method to single step the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteStepOut">remoteStepOut</a></td>
-<td>Public method to step out the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteStepOver">remoteStepOver</a></td>
-<td>Public method to step over the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteStepQuit">remoteStepQuit</a></td>
-<td>Public method to stop the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteThreadList">remoteThreadList</a></td>
-<td>Public method to request the list of threads from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteUTPrepare">remoteUTPrepare</a></td>
-<td>Public method to prepare a new unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteUTRun">remoteUTRun</a></td>
-<td>Public method to start a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteUTStop">remoteUTStop</a></td>
-<td>Public method to stop a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteWatchpoint">remoteWatchpoint</a></td>
-<td>Public method to set or clear a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteWatchpointEnable">remoteWatchpointEnable</a></td>
-<td>Public method to enable or disable a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
-<td>Public method to ignore a watch expression the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.setCallTraceEnabled">setCallTraceEnabled</a></td>
-<td>Public method to set the call trace state.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.shutdown">shutdown</a></td>
-<td>Public method to cleanly shut down.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.startRemote">startRemote</a></td>
-<td>Public method to start a remote Ruby interpreter.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfaceRuby.startRemoteForProject">startRemoteForProject</a></td>
-<td>Public method to start a remote Ruby interpreter for a project.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="DebuggerInterfaceRuby.__init__" ID="DebuggerInterfaceRuby.__init__"></a>
-<h4>DebuggerInterfaceRuby (Constructor)</h4>
-<b>DebuggerInterfaceRuby</b>(<i>debugServer, passive</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>debugServer</i></dt>
-<dd>
-reference to the debug server (DebugServer)
-</dd><dt><i>passive</i></dt>
-<dd>
-flag indicating passive connection mode (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.__identityTranslation" ID="DebuggerInterfaceRuby.__identityTranslation"></a>
-<h4>DebuggerInterfaceRuby.__identityTranslation</h4>
-<b>__identityTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the identity path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.__parseClientLine" ID="DebuggerInterfaceRuby.__parseClientLine"></a>
-<h4>DebuggerInterfaceRuby.__parseClientLine</h4>
-<b>__parseClientLine</b>(<i></i>)
-<p>
-        Private method to handle data from the client.
-</p><a NAME="DebuggerInterfaceRuby.__remoteTranslation" ID="DebuggerInterfaceRuby.__remoteTranslation"></a>
-<h4>DebuggerInterfaceRuby.__remoteTranslation</h4>
-<b>__remoteTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.__sendCommand" ID="DebuggerInterfaceRuby.__sendCommand"></a>
-<h4>DebuggerInterfaceRuby.__sendCommand</h4>
-<b>__sendCommand</b>(<i>cmd</i>)
-<p>
-        Private method to send a single line command to the client.
-</p><dl>
-<dt><i>cmd</i></dt>
-<dd>
-command to send to the debug client (string)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.__startProcess" ID="DebuggerInterfaceRuby.__startProcess"></a>
-<h4>DebuggerInterfaceRuby.__startProcess</h4>
-<b>__startProcess</b>(<i>program, arguments, environment=None</i>)
-<p>
-        Private method to start the debugger client process.
-</p><dl>
-<dt><i>program</i></dt>
-<dd>
-name of the executable to start (string)
-</dd><dt><i>arguments</i></dt>
-<dd>
-arguments to be passed to the program (list of string)
-</dd><dt><i>environment</i></dt>
-<dd>
-dictionary of environment settings to pass
-            (dict of string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the process object (QProcess) or None
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.flush" ID="DebuggerInterfaceRuby.flush"></a>
-<h4>DebuggerInterfaceRuby.flush</h4>
-<b>flush</b>(<i></i>)
-<p>
-        Public slot to flush the queue.
-</p><a NAME="DebuggerInterfaceRuby.getClientCapabilities" ID="DebuggerInterfaceRuby.getClientCapabilities"></a>
-<h4>DebuggerInterfaceRuby.getClientCapabilities</h4>
-<b>getClientCapabilities</b>(<i></i>)
-<p>
-        Public method to retrieve the debug clients capabilities.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-debug client capabilities (integer)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.isConnected" ID="DebuggerInterfaceRuby.isConnected"></a>
-<h4>DebuggerInterfaceRuby.isConnected</h4>
-<b>isConnected</b>(<i></i>)
-<p>
-        Public method to test, if a debug client has connected.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating the connection status (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfaceRuby.newConnection" ID="DebuggerInterfaceRuby.newConnection"></a>
-<h4>DebuggerInterfaceRuby.newConnection</h4>
-<b>newConnection</b>(<i>sock</i>)
-<p>
-        Public slot to handle a new connection.
-</p><dl>
-<dt><i>sock</i></dt>
-<dd>
-reference to the socket object (QTcpSock