emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 333a946 104/215: Merge pull request #74 from rocky/ipdb


From: Rocky Bernstein
Subject: [elpa] master 333a946 104/215: Merge pull request #74 from rocky/ipdb
Date: Sat, 30 Jul 2016 14:48:57 +0000 (UTC)

branch: master
commit 333a9463ba6c287311ae3b8a1110ff8c015b734f
Merge: 74ee75c ba3b013
Author: R. Bernstein <address@hidden>
Commit: R. Bernstein <address@hidden>

    Merge pull request #74 from rocky/ipdb
    
    Add ipdb support and remove some of the older debuggers
---
 THANKS                                        |    2 +
 configure.ac                                  |    5 +-
 realgud.el                                    |    9 +-
 realgud/debugger/Makefile.am                  |    6 +-
 realgud/debugger/{pydb => ipdb}/Makefile.am   |    0
 realgud/debugger/ipdb/core.el                 |  269 +++++++++++++++++++++++++
 realgud/debugger/{pydb => ipdb}/init.el       |   63 ++++--
 realgud/debugger/ipdb/ipdb.el                 |  118 +++++++++++
 realgud/debugger/{pydb => ipdb}/track-mode.el |   46 +++--
 realgud/debugger/pydb/core.el                 |  160 ---------------
 realgud/debugger/pydb/pydb.el                 |   63 ------
 realgud/debugger/pydbgr/Makefile.am           |    1 -
 realgud/debugger/pydbgr/core.el               |  172 ----------------
 realgud/debugger/pydbgr/init.el               |   99 ---------
 realgud/debugger/pydbgr/pydbgr.el             |   64 ------
 realgud/debugger/pydbgr/track-mode.el         |   60 ------
 realgud/debugger/trepan8/Makefile.am          |    1 -
 realgud/debugger/trepan8/core.el              |  183 -----------------
 realgud/debugger/trepan8/init.el              |  159 ---------------
 realgud/debugger/trepan8/track-mode.el        |   74 -------
 realgud/debugger/trepan8/trepan8.el           |   78 -------
 realgud/debugger/trepanx/Makefile.am          |    1 -
 realgud/debugger/trepanx/core.el              |  166 ---------------
 realgud/debugger/trepanx/init.el              |  143 -------------
 realgud/debugger/trepanx/track-mode.el        |   77 -------
 realgud/debugger/trepanx/trepanx.el           |   64 ------
 test/test-bt-pydb.el                          |   44 ----
 test/test-bt-pydbgr.el                        |   43 ----
 test/test-bt-trepanx.el                       |   49 -----
 test/test-ipdb.el                             |   39 ++++
 test/test-loc-regexp-trepanx.el               |   68 -------
 test/test-pydb.el                             |   18 --
 test/test-pydbgr.el                           |   38 ----
 test/test-realgud.el                          |    2 +-
 test/test-regexp-ipdb.el                      |  105 ++++++++++
 test/test-regexp-pydb.el                      |   97 ---------
 test/test-regexp-pydbgr.el                    |   76 -------
 test/test-regexp-trepanx.el                   |   72 -------
 38 files changed, 608 insertions(+), 2126 deletions(-)

diff --git a/THANKS b/THANKS
index fba09c8..bacb71c 100644
--- a/THANKS
+++ b/THANKS
@@ -7,3 +7,5 @@ Nick Roberts - We used some of the code for the fringe icons 
from gdb-mi.
 NYC Emacs Meetup and Nicolas Dudebout - straightening me out on 
set-keymap-parent
 
 Kilian Kilger - gdb fixes
+
+Sean Farley - ipdb support
diff --git a/configure.ac b/configure.ac
index 0feab78..e616ad6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,13 +67,12 @@ AC_CONFIG_FILES([Makefile \
                 realgud/debugger/bashdb/Makefile \
                 realgud/debugger/gdb/Makefile \
                 realgud/debugger/gub/Makefile \
+                realgud/debugger/ipdb/Makefile \
                 realgud/debugger/jdb/Makefile \
                 realgud/debugger/kshdb/Makefile \
                 realgud/debugger/nodejs/Makefile \
                 realgud/debugger/perldb/Makefile \
                 realgud/debugger/pdb/Makefile \
-                realgud/debugger/pydb/Makefile \
-                realgud/debugger/pydbgr/Makefile \
                 realgud/debugger/rdebug/Makefile \
                 realgud/debugger/remake/Makefile \
                 realgud/debugger/trepan/Makefile \
@@ -81,8 +80,6 @@ AC_CONFIG_FILES([Makefile \
                 realgud/debugger/trepan3k/Makefile \
                 realgud/debugger/trepan.pl/Makefile \
                 realgud/debugger/trepanjs/Makefile \
-                realgud/debugger/trepanx/Makefile \
-                realgud/debugger/trepan8/Makefile \
                 realgud/debugger/zshdb/Makefile \
                 realgud/lang/Makefile \
                 test/Makefile \
diff --git a/realgud.el b/realgud.el
index 0e7eb6f..6430c5c 100644
--- a/realgud.el
+++ b/realgud.el
@@ -57,6 +57,7 @@
 ;;   kshdb          kshdb          Korn Shell 93u+
 ;;   nodejs         nodejs         node.js javascript debugger
 ;;   pdb            realgud:pdb    stock C Python debugger
+;;   ipdb           realgud:ipdb   iPython debugger
 ;;   perldb         realgud:perldb stock Perl5 debugger
 ;;   pydb           pydb           slighly enhanced pdb for Python 2.x
 ;;   pydbgr         pydbgr         obsolete trepanning debugger for Python 2.x
@@ -111,13 +112,12 @@
      "./realgud/debugger/bashdb/bashdb"
      "./realgud/debugger/gdb/gdb"
      "./realgud/debugger/gub/gub"
+     "./realgud/debugger/ipdb/ipdb"
      "./realgud/debugger/jdb/jdb"
      "./realgud/debugger/kshdb/kshdb"
      "./realgud/debugger/nodejs/nodejs"
      "./realgud/debugger/pdb/pdb"
      "./realgud/debugger/perldb/perldb"
-     "./realgud/debugger/pydb/pydb"
-     "./realgud/debugger/pydbgr/pydbgr"
      "./realgud/debugger/rdebug/rdebug"
      "./realgud/debugger/remake/remake"
      "./realgud/debugger/trepan/trepan"
@@ -125,8 +125,6 @@
      "./realgud/debugger/trepan.pl/trepanpl"
      "./realgud/debugger/trepan2/trepan2"
      "./realgud/debugger/trepan3k/trepan3k"
-     "./realgud/debugger/trepanx/trepanx"
-     "./realgud/debugger/trepan8/trepan8"
      "./realgud/debugger/zshdb/zshdb"
      ) "realgud-")
   )
@@ -154,9 +152,6 @@ like 'pydbgr'."
                 (string-prefix-p feature-str "nodejs"))
             (setq result (cons feature-str result)))
            ((eq 't
-                (string-prefix-p feature-str "pydbgr"))
-            (setq result (cons feature-str result)))
-           ((eq 't
                 ;; No trailing '-' to get a plain "trepan".
                 (string-prefix-p feature-str "trepan"))
             (setq result (cons feature-str result)))
diff --git a/realgud/debugger/Makefile.am b/realgud/debugger/Makefile.am
index 69ae438..5f7a769 100644
--- a/realgud/debugger/Makefile.am
+++ b/realgud/debugger/Makefile.am
@@ -1,7 +1,7 @@
 SUBDIRS = \
-       bashdb gdb gub jdb kshdb nodejs \
-       pdb perldb pydb pydbgr rdebug remake \
-       trepan trepan2 trepan3k trepan.pl trepanjs trepanx trepan8 \
+       bashdb gdb gub ipdb jdb kshdb nodejs \
+       pdb perldb rdebug remake \
+       trepan trepan2 trepan3k trepan.pl trepanjs \
        zshdb
 EXTRA_DIST = common.mk
 
diff --git a/realgud/debugger/pydb/Makefile.am 
b/realgud/debugger/ipdb/Makefile.am
similarity index 100%
rename from realgud/debugger/pydb/Makefile.am
rename to realgud/debugger/ipdb/Makefile.am
diff --git a/realgud/debugger/ipdb/core.el b/realgud/debugger/ipdb/core.el
new file mode 100644
index 0000000..43a42c5
--- /dev/null
+++ b/realgud/debugger/ipdb/core.el
@@ -0,0 +1,269 @@
+;; Copyright (C) 2016 Free Software Foundation, Inc
+
+;; Author: Rocky Bernstein <address@hidden>
+;; Author: Sean Farley <address@hidden>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+;;; Copyright (C) 2014-2015 Rocky Bernstein <address@hidden>
+
+(eval-when-compile (require 'cl))
+
+(require 'load-relative)
+(require-relative-list '("../../common/track"
+                        "../../common/core"
+                        "../../common/lang")
+                      "realgud-")
+(require-relative-list '("init") "realgud:ipdb-")
+
+
+(declare-function realgud-lang-mode? 'realgud-lang)
+(declare-function realgud-parse-command-arg 'realgud-core)
+(declare-function realgud-query-cmdline 'realgud-core)
+(declare-function realgud-suggest-invocation 'realgud-core)
+
+;; FIXME: I think the following could be generalized and moved to
+;; realgud-... probably via a macro.
+(defvar realgud:ipdb-minibuffer-history nil
+  "minibuffer history list for the command `ipdb'.")
+
+(defvar realgud:ipdb-remote-minibuffer-history nil
+  "minibuffer history list for the command `ipdb-remote'.")
+
+(easy-mmode-defmap ipdb-minibuffer-local-map
+  '(("\C-i" . comint-dynamic-complete-filename))
+  "Keymap for minibuffer prompting of gud startup command."
+  :inherit minibuffer-local-map)
+
+;; FIXME: I think this code and the keymaps and history
+;; variable chould be generalized, perhaps via a macro.
+(defun ipdb-query-cmdline (&optional opt-debugger)
+  (realgud-query-cmdline
+   'ipdb-suggest-invocation
+   ipdb-minibuffer-local-map
+   'realgud:ipdb-minibuffer-history
+   opt-debugger))
+
+(defun ipdb-parse-cmd-args (orig-args)
+  "Parse command line ORIG-ARGS for the annotate level and name of script to 
debug.
+
+ORIG-ARGS should contain a tokenized list of the command line to run.
+
+We return the a list containing:
+* the command processor (e.g. python) and it's arguments if any - a list of 
strings
+* the name of the debugger given (e.g. ipdb) and its arguments - a list of 
strings
+* the script name and its arguments - list of strings
+* whether the annotate or emacs option was given ('-A', '--annotate' or 
'--emacs) - a boolean
+
+For example for the following input:
+  (map 'list 'symbol-name
+   '(python2.6 -O -Qold ./gcd.py a b))
+
+we might return:
+   ((\"python2.6\" \"-O\" \"-Qold\") (\"ipdb\") (\"/tmp/gcd.py\" \"a\" \"b\") 
nil)
+
+Note that the script name path has been expanded via `expand-file-name'.
+"
+
+  ;; Parse the following kind of pattern:
+  ;;  [python python-options] ipdb ipdb-options script-name script-options
+  (let (
+       (args orig-args)
+       (pair)          ;; temp return from
+       (python-opt-two-args '())
+       ;; Python doesn't have mandatory 2-arg options in our sense,
+       ;; since the two args can be run together, e.g. "-C/tmp" or "-C /tmp"
+       ;;
+       (python-two-args '())
+       ;; ipdb doesn't have any arguments
+       (ipdb-two-args '())
+       (ipdb-opt-two-args '())
+       (interp-regexp
+        (if (member system-type (list 'windows-nt 'cygwin 'msdos))
+            "^python[-0-9.]*\\(.exe\\)?$"
+          "^python[-0-9.]*$"))
+
+       ;; Things returned
+       (annotate-p nil)
+       (debugger-args '())
+       (debugger-name nil)
+       (interpreter-args '())
+       (script-args '())
+       (script-name nil)
+       )
+
+    (if (not (and args))
+       ;; Got nothing: return '(nil, nil)
+       (list interpreter-args debugger-args script-args annotate-p)
+      ;; else
+      ;; Strip off optional "python" or "python182" etc.
+      (when (string-match interp-regexp
+                         (file-name-sans-extension
+                          (file-name-nondirectory (car args))))
+       (setq interpreter-args (list (pop args)))
+
+       ;; Strip off Python-specific options
+       (while (and args
+                   (string-match "^-" (car args)))
+         (setq pair (realgud-parse-command-arg
+                     args python-two-args python-opt-two-args))
+         (nconc interpreter-args (car pair))
+         (setq args (cadr pair))))
+
+      ;; Remove "ipdb" from "ipdb --ipdb-options script
+      ;; --script-options"
+      (setq debugger-name (file-name-sans-extension
+                          (file-name-nondirectory (car args))))
+      (unless (string-match "^\\(ipdb\\|cli.py\\)$" debugger-name)
+       (message
+        "Expecting debugger name `%s' to be `ipdb' or `cli.py'"
+        debugger-name))
+      (setq debugger-args (list (pop args)))
+
+      ;; Skip to the first non-option argument.
+      (while (and args (not script-name))
+       (let ((arg (car args)))
+         (cond
+          ;; Options with arguments.
+          ((string-match "^-" arg)
+           (setq pair (realgud-parse-command-arg
+                       args ipdb-two-args ipdb-opt-two-args))
+           (nconc debugger-args (car pair))
+           (setq args (cadr pair)))
+          ;; Anything else must be the script to debug.
+          (t (setq script-name (expand-file-name arg))
+             (setq script-args (cons script-name (cdr args))))
+          )))
+      (list interpreter-args debugger-args script-args annotate-p))))
+
+(defun ipdb-parse-remote-cmd-args (orig-args)
+    "Parse command line ORIG-ARGS
+ORIG-ARGS should contain a tokenized list of the command line to run.
+
+We return the a list containing:
+* the command processor (e.g. python) and it's arguments if any - a list of 
strings
+* the name of the debugger given (e.g. ipdb) and its arguments - a list of 
strings
+* the script name and its arguments - list of strings
+* nil
+
+For example for the following input:
+  (map 'list 'symbol-name
+   '(telnet localhost 6900))
+
+we might return:
+   ((\"telnet\" \"localhost\" \"6900\") (\"ipdb\") (\"\") nil)
+
+Note that the script name path has been expanded via `expand-file-name'.
+"
+    (list orig-args '("ipdb") '("") nil)
+  )
+
+  ;; To silence Warning: reference to free variable
+(defvar realgud:ipdb-command-name)
+
+(defun ipdb-suggest-invocation (debugger-name)
+  "Suggest a ipdb command invocation via `realgud-suggest-invocaton'"
+  (realgud-suggest-invocation realgud:ipdb-command-name
+                             realgud:ipdb-minibuffer-history
+                             "python" "\\.py"))
+
+(defun ipdb-reset ()
+  "Ipdb cleanup - remove debugger's internal buffers (frame,
+breakpoints, etc.)."
+  (interactive)
+  ;; (ipdb-breakpoint-remove-all-icons)
+  (dolist (buffer (buffer-list))
+    (when (string-match "\\*ipdb-[a-z]+\\*" (buffer-name buffer))
+      (let ((w (get-buffer-window buffer)))
+        (when w
+          (delete-window w)))
+      (kill-buffer buffer))))
+
+;; (defun ipdb-reset-keymaps()
+;;   "This unbinds the special debugger keys of the source buffers."
+;;   (interactive)
+;;   (setcdr (assq 'ipdb-debugger-support-minor-mode minor-mode-map-alist)
+;;       ipdb-debugger-support-minor-mode-map-when-deactive))
+
+(defun realgud:ipdb-backend-complete ()
+  "Send a command to the ipdb buffer and parse the output.
+
+The idea here is to rely on the
+`comint-redirect-send-command-to-process' function to send a
+python command that will return the completions for the given
+input. Specifically, here is the python code:
+
+>>> from IPython import get_ipython
+>>> comp = '''%s'''
+>>> ';'.join(get_ipython().complete(comp.split()[-1] if len(comp)else '', 
comp)[1])
+
+This returns a list of strings that match the current word (hence
+why we need the `bounds-of-thing-at-point')."
+  (interactive)
+  (let ((buffer (current-buffer))
+        (cmdbuf (realgud-get-cmdbuf))
+        (process (get-buffer-process (current-buffer)))
+        (end-position (point))
+        (bounds (bounds-of-thing-at-point 'word))
+        )
+
+    ;; get the input string
+    (save-excursion
+      (comint-goto-process-mark)
+      (let* ((start-position (point))
+             (input-str (buffer-substring-no-properties start-position
+                                                        end-position))
+             )
+        (when (not (= (length input-str) 0))
+          (let* ((python-str (concat
+                              "from IPython import get_ipython; "
+                              "comp = '''%s''';"
+                              "';'.join(get_ipython()"
+                              ".complete(comp.split()[-1] if len(comp)"
+                              "else '', comp)[1])"))
+                 (command-str (format python-str input-str))
+                 (output-str (with-temp-buffer
+                               (let ((tmpbuf (current-buffer)))
+                                 (comint-redirect-send-command-to-process
+                                  command-str tmpbuf process nil t)
+                                 ;; Wait for the process to complete
+                                 (set-buffer (process-buffer process))
+                                 (while (null comint-redirect-completed)
+                                   (accept-process-output nil 0 5)) ;; wait 5ms
+                                 (set-buffer tmpbuf)
+                                 (buffer-substring (1+ (point-min))
+                                                   (1- (1- (point-max)))))))
+                 )
+
+            ;; we need to change the start position to that of the current word
+            ;; since python returns just the word (and not the whole line)
+            (setq start-position (car bounds))
+
+            (list start-position
+                  end-position
+                  (split-string output-str ";"))))))))
+
+(defun realgud:ipdb-completion-at-point ()
+  (let ((ipdb (realgud:ipdb-backend-complete)))
+    (when ipdb
+      (list (nth 0 ipdb)
+            (nth 1 ipdb)
+            (nth 2 ipdb)
+            :exclusive 'yes))))
+
+(defun realgud:ipdb-customize ()
+  "Use `customize' to edit the settings of the `ipdb' debugger."
+  (interactive)
+  (customize-group 'realgud:ipdb))
+
+(provide-me "realgud:ipdb-")
diff --git a/realgud/debugger/pydb/init.el b/realgud/debugger/ipdb/init.el
similarity index 52%
rename from realgud/debugger/pydb/init.el
rename to realgud/debugger/ipdb/init.el
index e5a6a17..c854f68 100644
--- a/realgud/debugger/pydb/init.el
+++ b/realgud/debugger/ipdb/init.el
@@ -1,5 +1,21 @@
-;;; Copyright (C) 2012 Rocky Bernstein <address@hidden>
-;;; Stock Python debugger pydb
+;; Copyright (C) 2016 Free Software Foundation, Inc
+
+;; Author: Rocky Bernstein <address@hidden>
+;; Author: Sean Farley <address@hidden>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+;; Stock Python debugger ipdb
 
 (eval-when-compile (require 'cl))
 
@@ -13,38 +29,42 @@
 (defvar realgud-pat-hash)
 (declare-function make-realgud-loc-pat (realgud-loc))
 
-(defvar realgud:pydb-pat-hash (make-hash-table :test 'equal)
+(defvar realgud:ipdb-pat-hash (make-hash-table :test 'equal)
   "Hash key is the what kind of pattern we want to match:
 backtrace, prompt, etc.  The values of a hash entry is a
 realgud-loc-pat struct")
 
 (declare-function make-realgud-loc "realgud-loc" (a b c d e f))
 
-;; Regular expression that describes a pydb location generally shown
+;; Regular expression that describes a ipdb location generally shown
 ;; before a command prompt.
 ;;
 ;; Program-location lines look like this:
 ;;   > /usr/bin/zonetab2pot.py(15)<module>()
 ;; or MS Windows:
 ;;   > c:\\mydirectory\\gcd.py(10)<module>
-(setf (gethash "loc" realgud:pydb-pat-hash)
+(setf (gethash "loc" realgud:ipdb-pat-hash)
       (make-realgud-loc-pat
-       :regexp "^(\\(\\(?:[a-zA-Z]:\\)?[-a-zA-Z0-9_/.\\\\ ]+\\):\\([0-9]+\\))"
+       :regexp "^> \\(\\(?:[a-zA-Z]:\\)?[-a-zA-Z0-9_/.\\\\ ]+\\)(\\([0-9]+\\))"
        :file-group 1
        :line-group 2))
 
-(setf (gethash "prompt" realgud:pydb-pat-hash)
+(setf (gethash "prompt" realgud:ipdb-pat-hash)
       (make-realgud-loc-pat
-       :regexp   "^[(]+Pydb[)]+ "
+       :regexp   "^ipdb[>] "
        ))
 
 ;;  Regular expression that describes a Python backtrace line.
-(setf (gethash "lang-backtrace" realgud:pydb-pat-hash)
+(setf (gethash "lang-backtrace" realgud:ipdb-pat-hash)
       realgud-python-backtrace-loc-pat)
 
+;;  Regular expression that describes location in a pytest error
+(setf (gethash "pytest-error" realgud:ipdb-pat-hash)
+      realgud-pytest-error-loc-pat)
+
 ;;  Regular expression that describes a "breakpoint set" line. For example:
-;;     Breakpoint 1 at /usr/bin/pydb:7
-(setf (gethash "brkpt-set" realgud:pydb-pat-hash)
+;;     Breakpoint 1 at /usr/bin/ipdb:7
+(setf (gethash "brkpt-set" realgud:ipdb-pat-hash)
       (make-realgud-loc-pat
        :regexp "^Breakpoint \\([0-9]+\\) at[ 
\t\n]+\\(.+\\):\\([0-9]+\\)\\(\n\\|$\\)"
        :num 1
@@ -52,12 +72,12 @@ realgud-loc-pat struct")
        :line-group 3))
 
 ;;  Regular expression that describes a "delete breakpoint" line
-(setf (gethash "brkpt-del" realgud:pydb-pat-hash)
+(setf (gethash "brkpt-del" realgud:ipdb-pat-hash)
       (make-realgud-loc-pat
        :regexp "^Deleted breakpoint \\([0-9]+\\)\n"
        :num 1))
 
-(setf (gethash "font-lock-keywords" realgud:pydb-pat-hash)
+(setf (gethash "font-lock-keywords" realgud:ipdb-pat-hash)
       '(
        ;; The frame number and first type name, if present.
        ("^\\(->\\|##\\)\\([0-9]+\\) \\(<module>\\)? 
*\\([a-zA-Z_][a-zA-Z0-9_]*\\)(\\(.+\\))?"
@@ -83,17 +103,18 @@ realgud-loc-pat struct")
        ("\\<\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\.\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
         (1 font-lock-type-face)
         (2 font-lock-function-name-face))
-       ;; (pydb-frames-match-current-line
-       ;;  (0 pydb-frames-current-frame-face append))
+       ;; (ipdb-frames-match-current-line
+       ;;  (0 ipdb-frames-current-frame-face append))
        ))
 
-(setf (gethash "pydb" realgud-pat-hash) realgud:pydb-pat-hash)
+(setf (gethash "ipdb" realgud-pat-hash) realgud:ipdb-pat-hash)
 
-(defvar realgud:pydb-command-hash (make-hash-table :test 'equal)
+(defvar realgud:ipdb-command-hash (make-hash-table :test 'equal)
   "Hash key is command name like 'shell' and the value is
-  the pydb command to use, like 'python'")
+  the ipdb command to use, like 'python'")
 
-(setf (gethash "shell" realgud:pydb-command-hash) "python")
-(setf (gethash "pydb" realgud-command-hash) realgud:pydb-command-hash)
+(setf (gethash "shell" realgud:ipdb-command-hash) "python")
+(setf (gethash "eval"  realgud:ipdb-command-hash) "p %s")
+(setf (gethash "ipdb" realgud-command-hash) realgud:ipdb-command-hash)
 
-(provide-me "realgud:pydb-")
+(provide-me "realgud:ipdb-")
diff --git a/realgud/debugger/ipdb/ipdb.el b/realgud/debugger/ipdb/ipdb.el
new file mode 100644
index 0000000..0cc8eb7
--- /dev/null
+++ b/realgud/debugger/ipdb/ipdb.el
@@ -0,0 +1,118 @@
+;; Copyright (C) 2016 Free Software Foundation, Inc
+
+;; Author: Rocky Bernstein <address@hidden>
+;; Author: Sean Farley <address@hidden>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;  `ipdb' Main interface to ipdb via Emacs
+(require 'load-relative)
+(require-relative-list '("core" "track-mode") "realgud:ipdb-")
+(require-relative-list '("../../common/run")  "realgud:")
+(require-relative-list '("core" "track-mode") "realgud:ipdb-")
+
+;; This is needed, or at least the docstring part of it is needed to
+;; get the customization menu to work in Emacs 24.
+(defgroup realgud:ipdb nil
+  "The realgud interface to the Python ipdb debugger"
+  :group 'realgud
+  :version "24.1")
+
+;; -------------------------------------------------------------------
+;; User-definable variables
+;;
+
+(defcustom realgud:ipdb-command-name
+  "ipdb"
+  "File name for executing the stock Python debugger and command options.
+This should be an executable on your path, or an absolute file name."
+  :type 'string
+  :group 'realgud:ipdb)
+;; -------------------------------------------------------------------
+;; The end.
+;;
+
+(declare-function ipdb-track-mode       'realgud:ipdb-track)
+(declare-function ipdb-query-cmdline    'realgud:ipdb-core)
+(declare-function ipdb-parse-cmd-args   'realgud:ipdb-core)
+(declare-function realgud:ipdb-completion-at-point 'realgud:ipdb-core)
+(declare-function realgud:run-debugger 'realgud:run)
+
+;;;###autoload
+(defun realgud:ipdb (&optional opt-cmd-line no-reset)
+  "Invoke the ipdb Python debugger and start the Emacs user interface.
+
+String OPT-CMD-LINE specifies how to run ipdb. You will be prompted
+for a command line is one isn't supplied.
+
+OPT-COMMAND-LINE is treated like a shell string; arguments are
+tokenized by `split-string-and-unquote'. The tokenized string is
+parsed by `ipdb-parse-cmd-args' and path elements found by that
+are expanded using `realgud:expand-file-name-if-exists'.
+
+Normally, command buffers are reused when the same debugger is
+reinvoked inside a command buffer with a similar command. If we
+discover that the buffer has prior command-buffer information and
+NO-RESET is nil, then that information which may point into other
+buffers and source buffers which may contain marks and fringe or
+marginal icons is reset. See `loc-changes-clear-buffer' to clear
+fringe and marginal icons.
+"
+  (interactive)
+  (let ((cmd-buf (realgud:run-debugger "ipdb" 'ipdb-query-cmdline
+                                       'ipdb-parse-cmd-args
+                                       'realgud:ipdb-minibuffer-history
+                                       opt-cmd-line no-reset))
+        )
+    (add-hook 'completion-at-point-functions
+              'realgud:ipdb-completion-at-point nil t)
+    cmd-buf)
+  )
+
+
+;;;###autoload
+(defun realgud:ipdb-remote (&optional opt-cmd-line no-reset)
+  "Invoke the ipdb Python debugger and start the Emacs user interface.
+
+String OPT-CMD-LINE specifies how to run ipdb. You will be prompted
+for a command line is one isn't supplied.
+
+OPT-COMMAND-LINE is treated like a shell string; arguments are
+tokenized by `split-string-and-unquote'. The tokenized string is
+parsed by `ipdb-parse-remote-cmd-args' and path elements found by that
+are expanded using `realgud:expand-file-name-if-exists'.
+
+Normally, command buffers are reused when the same debugger is
+reinvoked inside a command buffer with a similar command. If we
+discover that the buffer has prior command-buffer information and
+NO-RESET is nil, then that information which may point into other
+buffers and source buffers which may contain marks and fringe or
+marginal icons is reset. See `loc-changes-clear-buffer' to clear
+fringe and marginal icons.
+"
+  (interactive)
+  (let ((cmd-buf (realgud:run-debugger "ipdb" 'ipdb-remote-query-cmdline
+                                       'ipdb-parse-remote-cmd-args
+                                       'realgud:ipdb-remote-minibuffer-history
+                                       opt-cmd-line no-reset))
+        )
+    (add-hook 'completion-at-point-functions
+              'realgud:ipdb-completion-at-point nil t)
+    cmd-buf)
+  )
+
+
+(defalias 'ipdb 'realgud:ipdb)
+
+(provide-me "realgud-")
diff --git a/realgud/debugger/pydb/track-mode.el 
b/realgud/debugger/ipdb/track-mode.el
similarity index 60%
rename from realgud/debugger/pydb/track-mode.el
rename to realgud/debugger/ipdb/track-mode.el
index 142717b..17133b3 100644
--- a/realgud/debugger/pydb/track-mode.el
+++ b/realgud/debugger/ipdb/track-mode.el
@@ -1,6 +1,7 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
+;; Copyright (C) 2016 Free Software Foundation, Inc
 
 ;; Author: Rocky Bernstein <address@hidden>
+;; Author: Sean Farley <address@hidden>
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -14,7 +15,7 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-;; Python "pydb" Debugger
+;; Python "ipdb" Debugger tracking a comint buffer.
 
 (eval-when-compile (require 'cl))
 (require 'load-relative)
@@ -25,48 +26,53 @@
                          "../../common/track-mode"
                          )
                        "realgud-")
-(require-relative-list '("core" "init") "realgud:pydb-")
+(require-relative-list '("core" "init") "realgud:ipdb-")
 
-(realgud-track-mode-vars "pydb")
+(realgud-track-mode-vars "ipdb")
 
 (declare-function realgud-track-mode 'realgud-track-mode)
 (declare-function realgud-track-mode-setup 'realgud-track-mode)
 (declare-function realgud:track-set-debugger 'realgud-track-mode)
 (declare-function realgud-python-populate-command-keys 'realgud-lang-python)
+(declare-function realgud:ipdb-completion-at-point 'realgud:ipdb-core)
 
-(realgud-python-populate-command-keys pydb-track-mode-map)
+(realgud-python-populate-command-keys ipdb-track-mode-map)
 
-(defun pydb-track-mode-hook()
-  (if pydb-track-mode
+(defun ipdb-track-mode-hook()
+  (if ipdb-track-mode
       (progn
-        (use-local-map pydb-track-mode-map)
-        (message "using pydb mode map")
+        (use-local-map ipdb-track-mode-map)
+        (add-hook 'completion-at-point-functions
+                  'realgud:ipdb-completion-at-point nil t)
+        (message "using ipdb mode map")
         )
-    (message "pydb track-mode-hook disable called")
+    (message "ipdb track-mode-hook disable called")
     )
 )
 
-(define-minor-mode pydb-track-mode
-  "Minor mode for tracking pydb source locations inside a process shell via 
realgud. pydb is a Python debugger.
+(define-minor-mode ipdb-track-mode
+  "Minor mode for tracking ipdb source locations inside a process shell via 
realgud. ipdb is a Python debugger based on ipython.
 
 If called interactively with no prefix argument, the mode is toggled. A prefix 
argument, captured as ARG, enables the mode if the argument is positive, and 
disables it otherwise.
 
-\\{pydb-track-mode-map}
+a process shell.
+
+\\{ipdb-track-mode-map}
 "
   :init-value nil
-  ;; :lighter " pydb"   ;; mode-line indicator from realgud-track is 
sufficient.
+  ;; :lighter " ipdb"   ;; mode-line indicator from realgud-track is 
sufficient.
   ;; The minor mode bindings.
   :global nil
-  :group 'realgud:pydb
-  :keymap pydb-track-mode-map
-  (realgud:track-set-debugger "pydb")
-  (if pydb-track-mode
+  :group 'realgud:ipdb
+  :keymap ipdb-track-mode-map
+  (realgud:track-set-debugger "ipdb")
+  (if ipdb-track-mode
       (progn
        (realgud-track-mode-setup 't)
-        (pydb-track-mode-hook))
+        (ipdb-track-mode-hook))
     (progn
       (setq realgud-track-mode nil)
       ))
 )
 
-(provide-me "realgud:pydb-")
+(provide-me "realgud:ipdb-")
diff --git a/realgud/debugger/pydb/core.el b/realgud/debugger/pydb/core.el
deleted file mode 100644
index 19fbc1e..0000000
--- a/realgud/debugger/pydb/core.el
+++ /dev/null
@@ -1,160 +0,0 @@
-;;; Copyright (C) 2012 Rocky Bernstein <address@hidden>
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-(require-relative-list '("../../common/track"
-                        "../../common/core"
-                        "../../common/lang")
-                      "realgud-")
-(require-relative-list '("init") "realgud:pydb-")
-
-
-(declare-function realgud-lang-mode? 'realgud-lang)
-(declare-function realgud-parse-command-arg 'realgud-core)
-(declare-function realgud-query-cmdline 'realgud-core)
-(declare-function realgud-suggest-invocation 'realgud-core)
-
-;; FIXME: I think the following could be generalized and moved to
-;; realgud-... probably via a macro.
-(defvar realgud:pydb-minibuffer-history nil
-  "minibuffer history list for the command `pydb'.")
-
-(easy-mmode-defmap pydb-minibuffer-local-map
-  '(("\C-i" . comint-dynamic-complete-filename))
-  "Keymap for minibuffer prompting of gud startup command."
-  :inherit minibuffer-local-map)
-
-;; FIXME: I think this code and the keymaps and history
-;; variable chould be generalized, perhaps via a macro.
-(defun pydb-query-cmdline (&optional opt-debugger)
-  (realgud-query-cmdline
-   'pydb-suggest-invocation
-   pydb-minibuffer-local-map
-   'realgud:pydb-minibuffer-history
-   opt-debugger))
-
-(defun pydb-parse-cmd-args (orig-args)
-  "Parse command line ARGS for the annotate level and name of script to debug.
-
-ARGS should contain a tokenized list of the command line to run.
-
-We return the a list containing
-- the command processor (e.g. python) and it's arguments if any - a list of 
strings
-- the name of the debugger given (e.g. pydb) and its arguments - a list of 
strings
-- the script name and its arguments - list of strings
-- whether the annotate or emacs option was given ('-A', '--annotate' or 
'--emacs) - a boolean
-
-For example for the following input
-  (map 'list 'symbol-name
-   '(python2.6 -O -Qold ./gcd.py a b))
-
-we might return:
-   ((python2.6 -O -Qold) (pydb) (./gcd.py a b) 't)
-
-NOTE: the above should have each item listed in quotes.
-"
-
-  ;; Parse the following kind of pattern:
-  ;;  [python python-options] pydb pydb-options script-name script-options
-  (let (
-       (args orig-args)
-       (pair)          ;; temp return from
-       (python-opt-two-args '())
-       ;; Python doesn't have mandatory 2-arg options in our sense,
-       ;; since the two args can be run together, e.g. "-C/tmp" or "-C /tmp"
-       ;;
-       (python-two-args '())
-       ;; pydb doesn't have any arguments
-       (pydb-two-args '())
-       (pydb-opt-two-args '())
-       (interp-regexp
-        (if (member system-type (list 'windows-nt 'cygwin 'msdos))
-            "^python[-0-9.]*\\(.exe\\)?$"
-          "^python[-0-9.]*$"))
-
-       ;; Things returned
-       (annotate-p nil)
-       (debugger-args '())
-       (debugger-name nil)
-       (interpreter-args '())
-       (script-args '())
-       (script-name nil)
-       )
-
-    (if (not (and args))
-       ;; Got nothing: return '(nil, nil)
-       (list interpreter-args debugger-args script-args annotate-p)
-      ;; else
-      ;; Strip off optional "python" or "python182" etc.
-      (when (string-match interp-regexp
-                         (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-       (setq interpreter-args (list (pop args)))
-
-       ;; Strip off Python-specific options
-       (while (and args
-                   (string-match "^-" (car args)))
-         (setq pair (realgud-parse-command-arg
-                     args python-two-args python-opt-two-args))
-         (nconc interpreter-args (car pair))
-         (setq args (cadr pair))))
-
-      ;; Remove "pydb" from "pydb --pydb-options script
-      ;; --script-options"
-      (setq debugger-name (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-      (unless (string-match "^\\(pydb\\|cli.py\\)$" debugger-name)
-       (message
-        "Expecting debugger name `%s' to be `pydb' or `cli.py'"
-        debugger-name))
-      (setq debugger-args (list (pop args)))
-
-      ;; Skip to the first non-option argument.
-      (while (and args (not script-name))
-       (let ((arg (car args)))
-         (cond
-          ;; Options with arguments.
-          ((string-match "^-" arg)
-           (setq pair (realgud-parse-command-arg
-                       args pydb-two-args pydb-opt-two-args))
-           (nconc debugger-args (car pair))
-           (setq args (cadr pair)))
-          ;; Anything else must be the script to debug.
-          (t (setq script-name arg)
-             (setq script-args args))
-          )))
-      (list interpreter-args debugger-args script-args annotate-p))))
-
-;; To silence Warning: reference to free variable
-(defvar realgud:pydb-command-name)
-
-(defun pydb-suggest-invocation (debugger-name)
-  "Suggest a pydb command invocation via `realgud-suggest-invocaton'"
-  (realgud-suggest-invocation realgud:pydb-command-name
-                             realgud:pydb-minibuffer-history
-                             "python" "\\.py"))
-
-(defun pydb-reset ()
-  "Pydb cleanup - remove debugger's internal buffers (frame,
-breakpoints, etc.)."
-  (interactive)
-  ;; (pydb-breakpoint-remove-all-icons)
-  (dolist (buffer (buffer-list))
-    (when (string-match "\\*pydb-[a-z]+\\*" (buffer-name buffer))
-      (let ((w (get-buffer-window buffer)))
-        (when w
-          (delete-window w)))
-      (kill-buffer buffer))))
-
-;; (defun pydb-reset-keymaps()
-;;   "This unbinds the special debugger keys of the source buffers."
-;;   (interactive)
-;;   (setcdr (assq 'pydb-debugger-support-minor-mode minor-mode-map-alist)
-;;       pydb-debugger-support-minor-mode-map-when-deactive))
-
-
-(defun realgud:pydb-customize ()
-  "Use `customize' to edit the settings of the `pydb' debugger."
-  (interactive)
-  (customize-group 'realgud:pydb))
-(provide-me "realgud:pydb-")
diff --git a/realgud/debugger/pydb/pydb.el b/realgud/debugger/pydb/pydb.el
deleted file mode 100644
index 2dd8f97..0000000
--- a/realgud/debugger/pydb/pydb.el
+++ /dev/null
@@ -1,63 +0,0 @@
-;;; Copyright (C) 2012, 2014 Rocky Bernstein <address@hidden>
-;;  `pydb' Main interface to pydb via Emacs
-(require 'load-relative)
-(require-relative-list '("../../common/helper") "realgud-")
-(require-relative-list '("../../common/run")   "realgud:")
-(require-relative-list '("core" "track-mode") "realgud:pydb-")
-
-(declare-function pydb-query-cmdline   'realgud:pydb-core)
-(declare-function pydb-parse-cmd-args  'realgud:pydb-core)
-(declare-function realgud:run-debugger 'realgud:run)
-
-;; This is needed, or at least the docstring part of it is needed to
-;; get the customization menu to work in Emacs 24.
-(defgroup realgud:pydb nil
-  "The realgud interface to the Python pydb debugger"
-  :group 'realgud
-  :group 'python
-  :version "24.1")
-
-;; -------------------------------------------------------------------
-;; User-definable variables
-;;
-
-(defcustom realgud:pydb-command-name
-  "pydb"
-  "File name for executing the stock Python debugger and command options.
-This should be an executable on your path, or an absolute file name."
-  :type 'string
-  :group 'realgud:pydb)
-
-(declare-function pydb-track-mode (bool))
-
-;; -------------------------------------------------------------------
-;; The end.
-;;
-
-;;;###autoload
-(defun realgud:pydb (&optional opt-cmd-line no-reset)
-  "Invoke the pydb Python debugger and start the Emacs user interface.
-
-OPT-COMMAND-LINE is treated like a shell string; arguments are
-tokenized by `split-string-and-unquote'. The tokenized string is
-parsed by `pydb-parse-cmd-args' and path elements found by that
-are expanded using `realgud:expand-file-name-if-exists'.
-
-Normally, command buffers are reused when the same debugger is
-reinvoked inside a command buffer with a similar command. If we
-discover that the buffer has prior command-buffer information and
-NO-RESET is nil, then that information which may point into other
-buffers and source buffers which may contain marks and fringe or
-marginal icons is reset. See `loc-changes-clear-buffer' to clear
-fringe and marginal icons.
-"
-  (interactive)
-  (realgud:run-debugger "pydb" 'pydb-query-cmdline 'pydb-parse-cmd-args
-                       'realgud:pydb-minibuffer-history
-                       opt-cmd-line no-reset)
-  )
-
-
-(defalias 'pydb 'realgud:pydb)
-
-(provide-me "realgud-")
diff --git a/realgud/debugger/pydbgr/Makefile.am 
b/realgud/debugger/pydbgr/Makefile.am
deleted file mode 100644
index 23f8a8f..0000000
--- a/realgud/debugger/pydbgr/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-include ../common.mk
diff --git a/realgud/debugger/pydbgr/core.el b/realgud/debugger/pydbgr/core.el
deleted file mode 100644
index 9124640..0000000
--- a/realgud/debugger/pydbgr/core.el
+++ /dev/null
@@ -1,172 +0,0 @@
-;;; Copyright (C) 2010, 2013 Rocky Bernstein <address@hidden>
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-(require-relative-list '("../../common/track"
-                        "../../common/core"
-                        "../../common/lang")
-                      "realgud-")
-(require-relative-list '("init") "realgud-pydbgr-")
-
-(declare-function realgud-lang-mode? 'realgud-lang)
-(declare-function realgud-parse-command-arg 'realgud-core)
-(declare-function realgud-query-cmdline 'realgud-core)
-(declare-function realgud-suggest-invocation 'realgud-core)
-
-;; FIXME: I think the following could be generalized and moved to
-;; realgud-... probably via a macro.
-(defvar realgud:pydbgr-minibuffer-history nil
-  "minibuffer history list for the command `pydbgr'.")
-
-(easy-mmode-defmap pydbgr-minibuffer-local-map
-  '(("\C-i" . comint-dynamic-complete-filename))
-  "Keymap for minibuffer prompting of gud startup command."
-  :inherit minibuffer-local-map)
-
-;; FIXME: I think this code and the keymaps and history
-;; variable chould be generalized, perhaps via a macro.
-(defun pydbgr-query-cmdline (&optional opt-debugger)
-  (realgud-query-cmdline
-   'pydbgr-suggest-invocation
-   pydbgr-minibuffer-local-map
-   'realgud:pydbgr-minibuffer-history
-   opt-debugger))
-
-(defun pydbgr-parse-cmd-args (orig-args)
-  "Parse command line ARGS for the annotate level and name of script to debug.
-
-ARGS should contain a tokenized list of the command line to run.
-
-We return the a list containing
-- the command processor (e.g. python) and it's arguments if any - a list of 
strings
-- the name of the debugger given (e.g. pydbgr) and its arguments - a list of 
strings
-- the script name and its arguments - list of strings
-- whether the annotate or emacs option was given ('-A', '--annotate' or 
'--emacs) - a boolean
-
-For example for the following input
-  (map 'list 'symbol-name
-   '(python2.6 -O -Qold --emacs ./gcd.py a b))
-
-we might return:
-   ((python2.6 -O -Qold) (pydbgr --emacs) (./gcd.py a b) 't)
-
-NOTE: the above should have each item listed in quotes.
-"
-
-  ;; Parse the following kind of pattern:
-  ;;  [python python-options] pydbgr pydbgr-options script-name script-options
-  (let (
-       (args orig-args)
-       (pair)          ;; temp return from
-       (python-opt-two-args '("c" "m" "Q" "W"))
-       ;; Python doesn't have mandatory 2-arg options in our sense,
-       ;; since the two args can be run together, e.g. "-C/tmp" or "-C /tmp"
-       ;;
-       (python-two-args '())
-       ;; One dash is added automatically to the below, so
-       ;; h is really -h and -host is really --host.
-       (pydbgr-two-args '("x" "-command" "e" "-execute"
-                          "o" "-output"  "t" "-target"
-                          "a" "-annotate"))
-       (pydbgr-opt-two-args '())
-       (interp-regexp
-        (if (member system-type (list 'windows-nt 'cygwin 'msdos))
-            "^python[-0-9.]*\\(.exe\\)?$"
-          "^python[-0-9.]*$"))
-
-       ;; Things returned
-       (annotate-p nil)
-       (debugger-args '())
-       (debugger-name nil)
-       (interpreter-args '())
-       (script-args '())
-       (script-name nil)
-       )
-
-    (if (not (and args))
-       ;; Got nothing: return '(nil, nil)
-       (list interpreter-args debugger-args script-args annotate-p)
-      ;; else
-      ;; Strip off optional "python" or "python182" etc.
-      (when (string-match interp-regexp
-                         (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-       (setq interpreter-args (list (pop args)))
-
-       ;; Strip off Python-specific options
-       (while (and args
-                   (string-match "^-" (car args)))
-         (setq pair (realgud-parse-command-arg
-                     args python-two-args python-opt-two-args))
-         (nconc interpreter-args (car pair))
-         (setq args (cadr pair))))
-
-      ;; Remove "pydbgr" from "pydbgr --pydbgr-options script
-      ;; --script-options"
-      (setq debugger-name (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-      (unless (string-match "^\\(pydbgr\\|cli.py\\)$" debugger-name)
-       (message
-        "Expecting debugger name `%s' to be `pydbgr' or `cli.py'"
-        debugger-name))
-      (setq debugger-args (list (pop args)))
-
-      ;; Skip to the first non-option argument.
-      (while (and args (not script-name))
-       (let ((arg (car args)))
-         (cond
-          ;; Annotation or emacs option with level number.
-          ((or (member arg '("--annotate" "-A"))
-               (equal arg "--emacs"))
-           (setq annotate-p t)
-           (nconc debugger-args (list (pop args))))
-          ;; Combined annotation and level option.
-          ((string-match "^--annotate=[0-9]" arg)
-           (nconc debugger-args (list (pop args)) )
-           (setq annotate-p t))
-          ;; Options with arguments.
-          ((string-match "^-" arg)
-           (setq pair (realgud-parse-command-arg
-                       args pydbgr-two-args pydbgr-opt-two-args))
-           (nconc debugger-args (car pair))
-           (setq args (cadr pair)))
-          ;; Anything else must be the script to debug.
-          (t (setq script-name arg)
-             (setq script-args args))
-          )))
-      (list interpreter-args debugger-args script-args annotate-p))))
-
-;; To silence Warning: reference to free variable
-(defvar realgud:pydbgr-command-name)
-
-(defun pydbgr-suggest-invocation (debugger-name)
-  "Suggest a pydbgr command invocation via `realgud-suggest-invocaton'"
-  (realgud-suggest-invocation realgud:pydbgr-command-name
-                             realgud:pydbgr-minibuffer-history
-                             "python" "\\.py"))
-
-(defun pydbgr-reset ()
-  "Pydbgr cleanup - remove debugger's internal buffers (frame,
-breakpoints, etc.)."
-  (interactive)
-  ;; (pydbgr-breakpoint-remove-all-icons)
-  (dolist (buffer (buffer-list))
-    (when (string-match "\\*pydbgr-[a-z]+\\*" (buffer-name buffer))
-      (let ((w (get-buffer-window buffer)))
-        (when w
-          (delete-window w)))
-      (kill-buffer buffer))))
-
-;; (defun pydbgr-reset-keymaps()
-;;   "This unbinds the special debugger keys of the source buffers."
-;;   (interactive)
-;;   (setcdr (assq 'pydbgr-debugger-support-minor-mode minor-mode-map-alist)
-;;       pydbgr-debugger-support-minor-mode-map-when-deactive))
-
-
-(defun realgud:pydbgr-customize ()
-  "Use `customize' to edit the settings of the `pydbgr' debugger."
-  (interactive)
-  (customize-group 'realgud:pydbgr))
-
-(provide-me "realgud-pydbgr-")
diff --git a/realgud/debugger/pydbgr/init.el b/realgud/debugger/pydbgr/init.el
deleted file mode 100644
index 5778fc8..0000000
--- a/realgud/debugger/pydbgr/init.el
+++ /dev/null
@@ -1,99 +0,0 @@
-;;; Copyright (C) 2010-2012 Rocky Bernstein <address@hidden>
-;;; pydbgr: Python 2.5 but less than 3K
-
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-(require-relative-list '("../../common/regexp"
-                        "../../common/loc"
-                        "../../common/init")
-                      "realgud-")
-(require-relative-list '("../../lang/python") "realgud-lang-")
-
-(defvar realgud-pat-hash)
-(declare-function make-realgud-loc-pat (realgud-loc))
-
-(defvar realgud-pydbgr-pat-hash (make-hash-table :test 'equal)
-  "Hash key is the what kind of pattern we want to match:
-backtrace, prompt, etc.  The values of a hash entry is a
-realgud-loc-pat struct")
-
-(declare-function make-realgud-loc "realgud-loc" (a b c d e f))
-
-;; Regular expression that describes a pydbgr location generally shown
-;; before a command prompt.
-;;
-;; For example:
-;;   (/usr/bin/zonetab2pot.py:15): <module>
-;;   (/usr/bin/zonetab2pot.py:15 remapped <string>): <module>
-;; or MS Windows:
-;;   (c:\\mydirectory\\gcd.py:10): <module>
-(setf (gethash "loc" realgud-pydbgr-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^(\\(\\(?:[a-zA-Z]:\\)?[-a-zA-Z0-9_/.\\\\ 
]+\\):\\([0-9]+\\)\\(?: remapped .*\\)?)"
-       :file-group 1
-       :line-group 2))
-
-(setf (gethash "prompt" realgud-pydbgr-pat-hash)
-      (make-realgud-loc-pat
-       :regexp   "^(Pydbgr) "
-       ))
-
-;;  Regular expression that describes a Python backtrace line.
-(setf (gethash "lang-backtrace" realgud-pydbgr-pat-hash)
-      realgud-python-backtrace-loc-pat)
-
-;;  Regular expression that describes a "breakpoint set" line
-(setf (gethash "brkpt-set" realgud-pydbgr-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^Breakpoint \\([0-9]+\\) set at line \\([0-9]+\\)[ \t\n]+of 
file \\(.+\\)\\(\n\\|$\\)"
-       :num 1
-       :file-group 3
-       :line-group 2))
-
-;;  Regular expression that describes a "delete breakpoint" line
-(setf (gethash "brkpt-del" realgud-pydbgr-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^Deleted breakpoint \\([0-9]+\\)\n"
-       :num 1))
-
-(setf (gethash "font-lock-keywords" realgud-pydbgr-pat-hash)
-      '(
-       ;; The frame number and first type name, if present.
-       ("^\\(->\\|##\\)\\([0-9]+\\) \\(<module>\\)? 
*\\([a-zA-Z_][a-zA-Z0-9_]*\\)(\\(.+\\))?"
-        (2 realgud-backtrace-number-face)
-        (4 font-lock-function-name-face nil t))     ; t means optional.
-
-       ;; Parameter sequence, E.g. gcd(a=3, b=5)
-       ;;                             ^^^^^^^^^
-       ("(\\(.+\\))"
-        (1 font-lock-variable-name-face))
-
-       ;; File name. E.g  file '/test/gcd.py'
-       ;;                 ------^^^^^^^^^^^^-
-       ("[ \t]+file '\\([^ ]+*\\)'"
-        (1 realgud-file-name-face))
-
-       ;; Line number. E.g. at line 28
-        ;;                  ---------^^
-       ("[ \t]+at line \\([0-9]+\\)$"
-        (1 realgud-line-number-face))
-
-       ;; Function name.
-       ("\\<\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\.\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
-        (1 font-lock-type-face)
-        (2 font-lock-function-name-face))
-       ;; (pydbgr-frames-match-current-line
-       ;;  (0 pydbgr-frames-current-frame-face append))
-       ))
-
-(setf (gethash "pydbgr" realgud-pat-hash) realgud-pydbgr-pat-hash)
-
-(defvar realgud-pydbgr-command-hash (make-hash-table :test 'equal)
-  "Hash key is command name like 'shell' and the value is
-  the pydbgr command to use, like 'python'")
-
-(setf (gethash "shell" realgud-pydbgr-command-hash) "python")
-(setf (gethash "pydbgr" realgud-command-hash) realgud-pydbgr-command-hash)
-
-(provide-me "realgud-pydbgr-")
diff --git a/realgud/debugger/pydbgr/pydbgr.el 
b/realgud/debugger/pydbgr/pydbgr.el
deleted file mode 100644
index c0dba95..0000000
--- a/realgud/debugger/pydbgr/pydbgr.el
+++ /dev/null
@@ -1,64 +0,0 @@
-;;; Copyright (C) 2010-2012, 2014 Rocky Bernstein <address@hidden>
-;;  `pydbgr' Main interface to pydbgr via Emacs
-(require 'load-relative)
-(require-relative-list '("../../common/helper"
-                        "../../common/track") "realgud-")
-(require-relative-list '("core" "track-mode") "realgud-pydbgr-")
-
-;; This is needed, or at least the docstring part of it is needed to
-;; get the customization menu to work in Emacs 24.
-(defgroup realgud:pydbgr nil
-  "The realgud interface to the Python pydbgr debugger"
-  :group 'realgud
-  :group 'python
-  :version "24.1")
-
-(declare-function pydbgr-query-cmdline  'realgud-pydbgr-core)
-(declare-function pydbgr-parse-cmd-args 'realgud-pydbgr-core)
-(declare-function pydbgr-track-mode     'realgud:pydbgr-track-mode)
-(declare-function realgud:run-debugger  'realgud:run)
-
-;; -------------------------------------------------------------------
-;; User-definable variables
-;;
-
-(defcustom realgud:pydbgr-command-name
-  ;;"pydbgr --emacs 3"
-  "pydbgr"
-  "File name for executing the Python debugger and command options.
-This should be an executable on your path, or an absolute file name."
-  :type 'string
-  :group 'realgud:pydbgr)
-
-;; -------------------------------------------------------------------
-;; The end.
-;;
-
-;;;###autoload
-(defun realgud-pydbgr (&optional opt-cmd-line no-reset)
-  "Invoke the pydbgr Python debugger and start the Emacs user interface.
-
-String OPT-CMD-LINE is treated like a shell string; arguments are
-tokenized by `split-string-and-unquote'. The tokenized string is
-parsed by `pydbgr-parse-cmd-args' and path elements found by that
-are expanded using `realgud:expand-file-name-if-exists'.
-
-Normally, command buffers are reused when the same debugger is
-reinvoked inside a command buffer with a similar command. If we
-discover that the buffer has prior command-buffer information and
-NO-RESET is nil, then that information which may point into other
-buffers and source buffers which may contain marks and fringe or
-marginal icons is reset. See `loc-changes-clear-buffer' to clear
-fringe and marginal icons.
-"
-  (interactive)
-  (realgud:run-debugger "pydbgr"
-                       'pydbgr-query-cmdline
-                       'pydbgr-parse-cmd-args
-                       'realgud:pydbgr-minibuffer-history
-                       opt-cmd-line no-reset)
-  )
-
-(defalias 'pydbgr 'realgud-pydbgr)
-
-(provide-me "realgud-")
diff --git a/realgud/debugger/pydbgr/track-mode.el 
b/realgud/debugger/pydbgr/track-mode.el
deleted file mode 100644
index 6889c7e..0000000
--- a/realgud/debugger/pydbgr/track-mode.el
+++ /dev/null
@@ -1,60 +0,0 @@
-;; Copyright (C) 2010, 2012-2015 Rocky Bernstein <address@hidden>
-;;
-;; Python "pydbgr" Debugger tracking a comint buffer.
-
-(eval-when-compile (require 'cl))
-(require 'load-relative)
-(require-relative-list '(
-                        "../../common/cmds"
-                        "../../common/menu"
-                        "../../common/track"
-                        "../../common/track-mode"
-                        )
-                      "realgud-")
-
-(require-relative-list '("../../lang/python") "realgud-lang-")
-(require-relative-list '("core" "init") "realgud-pydbgr-")
-
-(realgud-track-mode-vars "pydbgr")
-
-(declare-function realgud-track-mode 'realgud-track-mode)
-(declare-function realgud-track-mode-setup 'realgud-track-mode)
-(declare-function realgud:track-set-debugger 'realgud-track-mode)
-(declare-function realgud-python-populate-command-keys 'realgud-lang-python)
-
-(realgud-python-populate-command-keys pydbgr-track-mode-map)
-
-(defun pydbgr-track-mode-hook()
-  (if pydbgr-track-mode
-      (progn
-       (use-local-map pydbgr-track-mode-map)
-       (message "using pydbgr mode map")
-       )
-    (message "pydbgr track-mode-hook disable called")
-    )
-)
-
-(define-minor-mode pydbgr-track-mode
-  "Minor mode for tracking pydbgr source locations inside a process shelll via 
realgud. pydbgr is a Python debugger. See URL 
`https://code.google.com/p/pydbgr/'.
-
-If called interactively with no prefix argument, the mode is toggled. A prefix 
argument, captured as ARG, enables the mode if the argument is positive, and 
disables it otherwise.
-
-\\{pydbgr-track-mode-map}
-"
-  :init-value nil
-  ;; :lighter " pydbgr"   ;; mode-line indicator from realgud-track is 
sufficient.
-  ;; The minor mode bindings.
-  :global nil
-  :group 'realgud:pydbgr
-  :keymap pydbgr-track-mode-map
-  (realgud:track-set-debugger "pydbgr")
-  (if pydbgr-track-mode
-      (progn
-       (realgud-track-mode-setup 't)
-       (pydbgr-track-mode-hook))
-    (progn
-      (setq realgud-track-mode nil)
-      ))
-)
-
-(provide-me "realgud-pydbgr-")
diff --git a/realgud/debugger/trepan8/Makefile.am 
b/realgud/debugger/trepan8/Makefile.am
deleted file mode 100644
index 23f8a8f..0000000
--- a/realgud/debugger/trepan8/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-include ../common.mk
diff --git a/realgud/debugger/trepan8/core.el b/realgud/debugger/trepan8/core.el
deleted file mode 100644
index 9939e5a..0000000
--- a/realgud/debugger/trepan8/core.el
+++ /dev/null
@@ -1,183 +0,0 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
-
-;; Author: Rocky Bernstein <address@hidden>
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-
-(require-relative-list '("../../common/track"
-                        "../../common/core"
-                        "../../common/lang")
-                      "realgud-")
-(require-relative-list '("init") "realgud:trepan8-")
-
-(declare-function realgud:expand-file-name-if-exists 'realgud-core)
-(declare-function realgud-parse-command-arg  'realgud-core)
-(declare-function realgud-query-cmdline      'realgud-core)
-(declare-function realgud-suggest-invocation 'realgud-core)
-
-;; FIXME: I think the following could be generalized and moved to
-;; realgud-... probably via a macro.
-(defvar realgud:trepan8-minibuffer-history nil
-  "minibuffer history list for the command `realgud:trepan8'.")
-
-(easy-mmode-defmap trepan8-minibuffer-local-map
-  '(("\C-i" . comint-dynamic-complete-filename))
-  "Keymap for minibuffer prompting of gud startup command."
-  :inherit minibuffer-local-map)
-
-;; FIXME: I think this code and the keymaps and history
-;; variable chould be generalized, perhaps via a macro.
-(defun trepan8-query-cmdline (&optional opt-debugger)
-  (realgud-query-cmdline
-   'trepan8-suggest-invocation
-   trepan8-minibuffer-local-map
-   'realgud:trepan8-minibuffer-history
-   opt-debugger))
-
-(defun trepan8-parse-cmd-args (orig-args)
-  "Parse command line ARGS for the annotate level and name of script to debug.
-
-ARGS should contain a tokenized list of the command line to run.
-
-We return the a list containing
-* the command processor (e.g. ruby) and it's arguments if any - a list of 
strings
-* the name of the debugger given (e.g. trepan8) and its arguments - a list of 
strings
-* the script name and its arguments - list of strings
-* whether the annotate or emacs option was given ('-A', '--annotate' or 
'--emacs) - a boolean
-
-For example for the following input
-  (map 'list 'symbol-name
-   '(ruby1.9 -W -C /tmp trepan8 --emacs ./gcd.rb a b))
-
-we might return:
-   ((ruby1.9 -W -C) (trepan8 --emacs) (./gcd.rb a b) 't)
-
-Note that the script name path has been expanded via `expand-file-name'.
-"
-
-  ;; Parse the following kind of pattern:
-  ;;  [ruby ruby-options] trepan8 trepan8-options script-name script-options
-  (let (
-       (args orig-args)
-       (pair)          ;; temp return from
-       (ruby-opt-two-args '("0" "C" "e" "E" "F" "i"))
-       ;; Ruby doesn't have mandatory 2-arg options in our sense,
-       ;; since the two args can be run together, e.g. "-C/tmp" or "-C /tmp"
-       ;;
-       (ruby-two-args '())
-       ;; One dash is added automatically to the below, so
-       ;; h is really -h and -host is really --host.
-       (trepan8-two-args '("h" "-host" "p" "-port"
-                          "I" "-include" "-r" "-require"))
-       (trepan8-opt-two-args '())
-
-       ;; Things returned
-       (script-name nil)
-       (debugger-name nil)
-       (interpreter-args '())
-       (debugger-args '())
-       (script-args '())
-       (annotate-p nil))
-
-    (if (not (and args))
-       ;; Got nothing: return '(nil, nil)
-       (list interpreter-args debugger-args script-args annotate-p)
-      ;; else
-      ;; Strip off optional "ruby" or "ruby182" etc.
-      (when (string-match "^ruby[-0-9]*$"
-                         (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-       (setq interpreter-args (list (pop args)))
-
-       ;; Strip off Ruby-specific options
-       (while (and args
-                   (string-match "^-" (car args)))
-         (setq pair (realgud-parse-command-arg
-                     args ruby-two-args ruby-opt-two-args))
-         (nconc interpreter-args (car pair))
-         (setq args (cadr pair))))
-
-      ;; Remove "trepan8" from "trepan8 --trepan8-options script
-      ;; --script-options"
-      (setq debugger-name (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-      (unless (string-match "^trepan8$" debugger-name)
-       (message
-        "Expecting debugger name `%s' to be `trepan8'"
-        debugger-name))
-      (setq debugger-args (list (pop args)))
-
-      ;; Skip to the first non-option argument.
-      (while (and args (not script-name))
-       (let ((arg (car args)))
-         (cond
-          ;; Annotation or emacs option with level number.
-          ((or (member arg '("--annotate" "-A"))
-               (equal arg "--emacs"))
-           (setq annotate-p t)
-           (nconc debugger-args (list (pop args))))
-          ;; Combined annotation and level option.
-          ((string-match "^--annotate=[0-9]" arg)
-           (nconc debugger-args (list (pop args)) )
-           (setq annotate-p t))
-          ;; Options with arguments.
-          ((string-match "^-" arg)
-           (setq pair (realgud-parse-command-arg
-                       args trepan8-two-args trepan8-opt-two-args))
-           (nconc debugger-args (car pair))
-           (setq args (cadr pair)))
-          ;; Anything else must be the script to debug.
-          (t (setq script-name (realgud:expand-file-name-if-exists arg))
-             (setq script-args (cons script-name (cdr args))))
-          )))
-      (list interpreter-args debugger-args script-args annotate-p))))
-
-;; To silence Warning: reference to free variable
-(defvar realgud:trepan8-command-name)
-
-(defun trepan8-suggest-invocation (debugger-name)
-  "Suggest a trepan8 command invocation via `realgud-suggest-invocaton'"
-  (realgud-suggest-invocation realgud:trepan8-command-name
-                             realgud:trepan8-minibuffer-history
-                             "ruby" "\\.rb$"))
-
-(defun trepan8-reset ()
-  "Trepan8 cleanup - remove debugger's internal buffers (frame,
-breakpoints, etc.)."
-  (interactive)
-  ;; (trepan8-breakpoint-remove-all-icons)
-  (dolist (buffer (buffer-list))
-    (when (string-match "\\*trepan8-[a-z]+\\*" (buffer-name buffer))
-      (let ((w (get-buffer-window buffer)))
-        (when w
-          (delete-window w)))
-      (kill-buffer buffer))))
-
-;; (defun trepan8-reset-keymaps()
-;;   "This unbinds the special debugger keys of the source buffers."
-;;   (interactive)
-;;   (setcdr (assq 'trepan8-debugger-support-minor-mode minor-mode-map-alist)
-;;       trepan8-debugger-support-minor-mode-map-when-deactive))
-
-
-(defun realgud:trepan8-customize ()
-  "Use `customize' to edit the settings of the `trepan8' debugger."
-  (interactive)
-  (customize-group 'realgud:trepan8))
-
-(provide-me "realgud:trepan8-")
diff --git a/realgud/debugger/trepan8/init.el b/realgud/debugger/trepan8/init.el
deleted file mode 100644
index 622a4e7..0000000
--- a/realgud/debugger/trepan8/init.el
+++ /dev/null
@@ -1,159 +0,0 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
-
-;; Author: Rocky Bernstein <address@hidden>
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-(require-relative-list '("../../common/regexp" "../../common/loc") "realgud-")
-(require-relative-list '("../../lang/ruby") "realgud-lang-")
-
-(defvar realgud-pat-hash)
-(declare-function make-realgud-loc-pat (realgud-loc))
-
-(defvar realgud:trepan8-pat-hash (make-hash-table :test 'equal)
-  "Hash key is the what kind of pattern we want to match:
-backtrace, prompt, etc.  The values of a hash entry is a
-realgud-loc-pat struct")
-
-;; Regular expression that describes a trepan8 location generally shown
-;; before a command prompt.
-;; For example:
-;;  -> (/tmp/fact.rb:1)
-;;  -- (kernel/common/scope.rb:134 remapped /tmp/scope.rb:134)
-(setf (gethash "loc" realgud:trepan8-pat-hash)
-      (make-realgud-loc-pat
-       :regexp (format ".. (\\(?:.+ \\(?:via\\|remapped\\) 
\\)?\\(.+\\):%s\\(?: @[0-9]+\\)?)"
-                      realgud:regexp-captured-num)
-       :file-group 1
-       :line-group 2))
-
-;;  Regular expression that describes a trepan8 command prompt
-;; For example:
-;;   (trepan8):
-;;   ((trepan8)):
-(setf (gethash "prompt" realgud:trepan8-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^(+trepan8\\(@[0-9]+\\|@main\\)?)+: "
-       ))
-
-;;  Regular expression that describes a MRI 1.8 Ruby backtrace line.
-(setf (gethash "lang-backtrace" realgud:trepan8-pat-hash)
-      realgud-ruby-backtrace-loc-pat)
-
-;;  Regular expression that describes a ruby $! backtrace
-(setf (gethash "dollar-bang-backtrace" realgud:trepan8-pat-hash)
-      realgud-ruby-dollar-bang-loc-pat)
-
-;; Regular expression that describes a "breakpoint set" line
-;; For example:
-;; Set breakpoint 1: /tmp/fact.rb:1 (@0)
-(setf (gethash "brkpt-set" realgud:trepan8-pat-hash)
-      (make-realgud-loc-pat
-       :regexp (format "^Set breakpoint %s: .+ at \\(.+\\):\\([0-9]+\\) 
(@[0-9]+)"
-                      realgud:regexp-captured-num)
-       :num 1
-       :file-group 2
-       :line-group 3))
-
-;; Regular expression that describes a debugger "delete" (breakpoint) response.
-;; For example:'
-;;   Deleted breakpoint 1.
-(setf (gethash "brkpt-del" realgud:trepan8-pat-hash)
-      (make-realgud-loc-pat
-       :regexp (format "^Deleted breakpoint %s.\n"
-                      realgud:regexp-captured-num)
-       :num 1))
-
-;;  Regular expression that describes a Ruby $! string
-(setf (gethash "dollar-bang" realgud:trepan8-pat-hash)
-      realgud-ruby-dollar-bang-loc-pat)
-
-(setf (gethash "trepan8" realgud-pat-hash) realgud:trepan8-pat-hash)
-
-(defconst realgud:trepan8-frame-file-line-regexp
-  (format " at \\(.*\\):%s$" realgud:regexp-captured-num))
-
-(defconst realgud:trepan8-frame-start-regexp realgud:trepan-frame-start-regexp)
-(defconst realgud:trepan8-frame-num-regexp   realgud:trepan-frame-start-regexp)
-
-;;  Regular expression that describes a debugger "backtrace" command line.
-;;  e.g.
-;; --> #0 at line /usr/bin/irb:12
-;;     #1 main.__script__ at /tmp/fact.rb:1
-;;     #1 main.__script__ at /tmp/fact.rb:1
-;;     #0 IRB.start(ap_path#String) at line /usr/lib/ruby/1.8/irb.rb:52
-(setf (gethash "debugger-backtrace" realgud:trepan8-pat-hash)
-      (make-realgud-loc-pat
-       :regexp         (concat realgud:trepan8-frame-start-regexp " "
-                       realgud:trepan8-frame-num-regexp
-                       "\\(?: \\(?:\\(.+\\)(\\(.*\\))\\)\\)?"
-                       realgud:trepan8-frame-file-line-regexp
-                       )
-       :num 2
-       :file-group 5
-       :line-group 6)
-      )
-
-;; Regular expression that for a termination message.
-(setf (gethash "termination" realgud:trepan8-pat-hash)
-       "^trepan8: That's all, folks...\n")
-
-(setf (gethash "font-lock-keywords" realgud:trepan8-pat-hash)
-      '(
-       ;; Parameters and first type entry. E.g Object.gcd(a#Fixnum, b#Fixnum)
-       ;;                                                 ^-^^^^^^  ^-^^^^^^
-       ("\\<\\([a-zA-Z_][a-zA-Z0-9_]*\\)#\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\>"
-        (1 font-lock-variable-name-face)
-        (2 font-lock-constant-face))
-
-       ;; "::Type", which occurs in class name of function and in
-       ;; parameter list.
-       ("::\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
-        (1 font-lock-type-face))
-
-       ;; The frame number and first type name, if present.
-       ;; E.g. --> #0 Object.gcd(a#Fixnum, b#Fixnum)
-        ;;      -----^-^^^^^^.^^^
-       ("^\\(-->\\)? *#\\([0-9]+\\) *\\(\\([a-zA-Z_][a-zA-Z0-9_]*\\)[.:]\\)?"
-        (2 realgud-backtrace-number-face)
-        (4 font-lock-constant-face nil t))     ; t means optional.
-
-       ;; File name and line number. E.g. at line /test/gcd.rb:6
-        ;;                                 -------^^^^^^^^^^^^^-^
-       ("at line \\(.*\\):\\([0-9]+\\)$"
-        (1 realgud-file-name-face)
-        (2 realgud-line-number-face))
-
-       ;; Function name.
-       ("\\<\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\.\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
-        (1 font-lock-type-face)
-        (2 font-lock-function-name-face))
-       ;; (trepan-frames-match-current-line
-       ;;  (0 trepan-frames-current-frame-face append))
-       ))
-
-(setf (gethash "trepan8" realgud-pat-hash) realgud:trepan8-pat-hash)
-
-(defvar realgud:trepan8-command-hash (make-hash-table :test 'equal)
-  "Hash key is command name like 'quit' and the value is
-  the trepan8 command to use, like 'quit!'")
-
-(setf (gethash "quit" realgud:trepan8-command-hash) "quit!")
-(setf (gethash "shell" realgud:trepan8-command-hash) "irb")
-(setf (gethash "trepan8" realgud-command-hash) realgud:trepan8-command-hash)
-
-(provide-me "realgud:trepan8-")
diff --git a/realgud/debugger/trepan8/track-mode.el 
b/realgud/debugger/trepan8/track-mode.el
deleted file mode 100644
index 2040a8b..0000000
--- a/realgud/debugger/trepan8/track-mode.el
+++ /dev/null
@@ -1,74 +0,0 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
-
-;; Author: Rocky Bernstein <address@hidden>
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Ruby "trepan8" Debugger tracking a comint buffer.
-
-(eval-when-compile (require 'cl))
-(require 'load-relative)
-(require-relative-list '(
-                        "../../common/cmds"
-                        "../../common/menu"
-                        "../../common/track"
-                        "../../common/track-mode"
-                        )
-                      "realgud-")
-(require-relative-list '("core" "init") "realgud:trepan8-")
-(require-relative-list '("../../lang/ruby") "realgud-lang-")
-
-(realgud-track-mode-vars "trepan8")
-
-(declare-function realgud-track-mode 'realgud-track-mode)
-(declare-function realgud-track-mode-hook 'realgud-track-mode)
-(declare-function realgud-track-mode-setup 'realgud-track-mode)
-(declare-function realgud:track-set-debugger 'realgud-track-mode)
-(declare-function realgud:ruby-populate-command-keys 'realgud-lang-ruby)
-
-(realgud:ruby-populate-command-keys trepan8-track-mode-map)
-
-(define-key trepan8-track-mode-map
-  (kbd "C-c !!") 'realgud:ruby-goto-dollar-bang-line)
-
-(defun trepan8-track-mode-hook()
-  (use-local-map trepan8-track-mode-map)
-  (realgud-track-mode-setup 't)
-  (message "trepan8 track-mode-hook called")
-)
-(define-minor-mode trepan8-track-mode
-  "Minor mode for tracking trepan8 source locations inside a process shell via 
realgud. trepan8 is a Ruby debugger for version 1.8.
-
-If called interactively with no prefix argument, the mode is toggled. A prefix 
argument, captured as ARG, enables the mode if the argument is positive, and 
disables it otherwise.
-
-\\{trepan8-track-mode-map}
-"
-  :init-value nil
-  ;; :lighter " trepan8"   ;; mode-line indicator from realgud-track is 
sufficient.
-  ;; The minor mode bindings.
-  :global nil
-  :group 'realgud:trepan8
-  :keymap trepan8-track-mode-map
-
-  (realgud:track-set-debugger "trepan8")
-  (if trepan8-track-mode
-      (progn
-       (realgud-track-mode 't)
-       (trepan8-track-mode-hook))
-    (progn
-      (realgud-track-mode nil)
-      ))
-)
-
-(provide-me "realgud:trepan8-")
diff --git a/realgud/debugger/trepan8/trepan8.el 
b/realgud/debugger/trepan8/trepan8.el
deleted file mode 100644
index 6d80fa5..0000000
--- a/realgud/debugger/trepan8/trepan8.el
+++ /dev/null
@@ -1,78 +0,0 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
-
-;; Author: Rocky Bernstein <address@hidden>
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;  `trepan8' Main interface to trepan8 via Emacs
-(require 'load-relative)
-(require-relative-list '("../../common/helper") "realgud-")
-(require-relative-list '("../../common/run")    "realgud:")
-(require-relative-list '("core" "track-mode")   "realgud:trepan8-")
-
-(declare-function trepan8-query-cmdline  'realgud:trepan8-core)
-(declare-function trepan8-parse-cmd-args 'realgud:trepan8-core)
-(declare-function realgud:run-debugger   'realgud:run)
-
-;; This is needed, or at least the docstring part of it is needed to
-;; get the customization menu to work in Emacs 24.
-(defgroup realgud:trepan8 nil
-  "The reagud interface toe th Ruby \"trepanning\" debugger for Ruby 1.8"
-  :group 'ruby
-  :group 'realgud
-  :version "23.4")
-
-;; -------------------------------------------------------------------
-;; User-definable variables
-;;
-
-(defcustom realgud:trepan8-command-name
-  ;;"trepan8 --emacs 3"
-  "trepan8"
-  "File name for executing the Ruby debugger and command options.
-This should be an executable on your path, or an absolute file name."
-  :type 'string
-  :group 'realgud:trepan8)
-
-;; -------------------------------------------------------------------
-;; The end.
-;;
-
-;;;###autoload
-(defun realgud:trepan8 (&optional opt-cmd-line no-reset)
-  "Invoke the trepan8 Ruby debugger and start the Emacs user interface.
-
-String OPT-CMD-LINE is treated like a shell string; arguments are
-tokenized by `split-string-and-unquote'. The tokenized string is
-parsed by `trepan8-parse-cmd-args' and path elements found by that
-are expanded using `realgud:expand-file-name-if-exists'.
-
-Normally, command buffers are reused when the same debugger is
-reinvoked inside a command buffer with a similar command. If we
-discover that the buffer has prior command-buffer information and
-NO-RESET is nil, then that information which may point into other
-buffers and source buffers which may contain marks and fringe or
-marginal icons is reset. See `loc-changes-clear-buffer' to clear
-fringe and marginal icons.
-"
-  (interactive)
-  (realgud:run-debugger "trepan8" 'trepan8-query-cmdline
-                       'trepan8-parse-cmd-args
-                       'realgud:trepan8-minibuffer-history
-                       opt-cmd-line no-reset)
-  )
-
-(defalias 'trepan8 'realgud:trepan8)
-
-(provide-me "realgud-")
diff --git a/realgud/debugger/trepanx/Makefile.am 
b/realgud/debugger/trepanx/Makefile.am
deleted file mode 100644
index 23f8a8f..0000000
--- a/realgud/debugger/trepanx/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-include ../common.mk
diff --git a/realgud/debugger/trepanx/core.el b/realgud/debugger/trepanx/core.el
deleted file mode 100644
index f00d301..0000000
--- a/realgud/debugger/trepanx/core.el
+++ /dev/null
@@ -1,166 +0,0 @@
-;;; Copyright (C) 2010, 2014 Rocky Bernstein <address@hidden>
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-
-(require-relative-list '("../../common/track"
-                        "../../common/core"
-                        "../../common/lang")
-                      "realgud-")
-(require-relative-list '("init") "realgud:trepanx-")
-
-(declare-function realgud-parse-command-arg  'realgud-core)
-(declare-function realgud-query-cmdline      'realgud-core)
-(declare-function realgud-suggest-invocation 'realgud-core)
-
-;; FIXME: I think the following could be generalized and moved to
-;; realgud-... probably via a macro.
-(defvar realgud:trepanx-minibuffer-history nil
-  "minibuffer history list for the command `realgud:trepanx'.")
-
-(easy-mmode-defmap trepanx-minibuffer-local-map
-  '(("\C-i" . comint-dynamic-complete-filename))
-  "Keymap for minibuffer prompting of gud startup command."
-  :inherit minibuffer-local-map)
-
-;; FIXME: I think this code and the keymaps and history
-;; variable chould be generalized, perhaps via a macro.
-(defun trepanx-query-cmdline (&optional opt-debugger)
-  (realgud-query-cmdline
-   'trepanx-suggest-invocation
-   trepanx-minibuffer-local-map
-   'realgud:trepanx-minibuffer-history
-   opt-debugger))
-
-(defun trepanx-parse-cmd-args (orig-args)
-  "Parse command line ARGS for the annotate level and name of script to debug.
-
-ARGS should contain a tokenized list of the command line to run.
-
-We return the a list containing
-- the command processor (e.g. ruby) and it's arguments if any - a list of 
strings
-- the name of the debugger given (e.g. trepanx) and its arguments - a list of 
strings
-- the script name and its arguments - list of strings
-- whether the annotate or emacs option was given ('-A', '--annotate' or 
'--emacs) - a boolean
-
-For example for the following input
-  (map 'list 'symbol-name
-   '(ruby1.9 -W -C /tmp trepanx --emacs ./gcd.rb a b))
-
-we might return:
-   ((ruby1.9 -W -C) (trepanx --emacs) (./gcd.rb a b) 't)
-
-NOTE: the above should have each item listed in quotes.
-"
-
-  ;; Parse the following kind of pattern:
-  ;;  [ruby ruby-options] trepanx trepanx-options script-name script-options
-  (let (
-       (args orig-args)
-       (pair)          ;; temp return from
-       (ruby-opt-two-args '("0" "C" "e" "E" "F" "i"))
-       ;; Ruby doesn't have mandatory 2-arg options in our sense,
-       ;; since the two args can be run together, e.g. "-C/tmp" or "-C /tmp"
-       ;;
-       (ruby-two-args '())
-       ;; One dash is added automatically to the below, so
-       ;; h is really -h and -host is really --host.
-       (trepanx-two-args '("h" "-host" "p" "-port"
-                          "I" "-include" "-r" "-require"))
-       (trepanx-opt-two-args '())
-
-       ;; Things returned
-       (script-name nil)
-       (debugger-name nil)
-       (interpreter-args '())
-       (debugger-args '())
-       (script-args '())
-       (annotate-p nil))
-
-    (if (not (and args))
-       ;; Got nothing: return '(nil, nil)
-       (list interpreter-args debugger-args script-args annotate-p)
-      ;; else
-      ;; Strip off optional "ruby" or "ruby182" etc.
-      (when (string-match "^ruby[-0-9]*$"
-                         (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-       (setq interpreter-args (list (pop args)))
-
-       ;; Strip off Ruby-specific options
-       (while (and args
-                   (string-match "^-" (car args)))
-         (setq pair (realgud-parse-command-arg
-                     args ruby-two-args ruby-opt-two-args))
-         (nconc interpreter-args (car pair))
-         (setq args (cadr pair))))
-
-      ;; Remove "trepanx" from "trepanx --trepanx-options script
-      ;; --script-options"
-      (setq debugger-name (file-name-sans-extension
-                          (file-name-nondirectory (car args))))
-      (unless (string-match "^trepanx$" debugger-name)
-       (message
-        "Expecting debugger name `%s' to be `trepanx'"
-        debugger-name))
-      (setq debugger-args (list (pop args)))
-
-      ;; Skip to the first non-option argument.
-      (while (and args (not script-name))
-       (let ((arg (car args)))
-         (cond
-          ;; Annotation or emacs option with level number.
-          ((or (member arg '("--annotate" "-A"))
-               (equal arg "--emacs"))
-           (setq annotate-p t)
-           (nconc debugger-args (list (pop args))))
-          ;; Combined annotation and level option.
-          ((string-match "^--annotate=[0-9]" arg)
-           (nconc debugger-args (list (pop args)) )
-           (setq annotate-p t))
-          ;; Options with arguments.
-          ((string-match "^-" arg)
-           (setq pair (realgud-parse-command-arg
-                       args trepanx-two-args trepanx-opt-two-args))
-           (nconc debugger-args (car pair))
-           (setq args (cadr pair)))
-          ;; Anything else must be the script to debug.
-          (t (setq script-name arg)
-             (setq script-args args))
-          )))
-      (list interpreter-args debugger-args script-args annotate-p))))
-
-;; To silence Warning: reference to free variable
-(defvar realgud:trepanx-command-name)
-
-(defun trepanx-suggest-invocation (debugger-name)
-  "Suggest a trepanx command invocation via `realgud-suggest-invocaton'"
-  (realgud-suggest-invocation realgud:trepanx-command-name
-                             realgud:trepanx-minibuffer-history
-                             "ruby" "\\.rb$" "trepanx"))
-
-(defun trepanx-reset ()
-  "Trepanx cleanup - remove debugger's internal buffers (frame,
-breakpoints, etc.)."
-  (interactive)
-  ;; (trepanx-breakpoint-remove-all-icons)
-  (dolist (buffer (buffer-list))
-    (when (string-match "\\*trepanx-[a-z]+\\*" (buffer-name buffer))
-      (let ((w (get-buffer-window buffer)))
-        (when w
-          (delete-window w)))
-      (kill-buffer buffer))))
-
-;; (defun trepanx-reset-keymaps()
-;;   "This unbinds the special debugger keys of the source buffers."
-;;   (interactive)
-;;   (setcdr (assq 'trepanx-debugger-support-minor-mode minor-mode-map-alist)
-;;       trepanx-debugger-support-minor-mode-map-when-deactive))
-
-
-(defun realgud:trepanx-customize ()
-  "Use `customize' to edit the settings of the `trepanx' debugger."
-  (interactive)
-  (customize-group 'realgud:trepanx))
-
-(provide-me "realgud:trepanx-")
diff --git a/realgud/debugger/trepanx/init.el b/realgud/debugger/trepanx/init.el
deleted file mode 100644
index 9f03385..0000000
--- a/realgud/debugger/trepanx/init.el
+++ /dev/null
@@ -1,143 +0,0 @@
-;;; Copyright (C) 2010-2011, 2014 Rocky Bernstein <address@hidden>
-(eval-when-compile (require 'cl))
-
-(require 'load-relative)
-(require-relative-list '("../../common/regexp" "../../common/loc") "realgud-")
-(require-relative-list '("../../lang/ruby") "realgud-lang-")
-
-(defvar realgud-pat-hash)
-(declare-function make-realgud-loc-pat (realgud-loc))
-
-(defvar realgud:trepanx-pat-hash (make-hash-table :test 'equal)
-  "Hash key is the what kind of pattern we want to match:
-backtrace, prompt, etc.  The values of a hash entry is a
-realgud-loc-pat struct")
-
-;; Regular expression that describes a trepanx location generally shown
-;; before a command prompt.
-;; For example:
-;;  -> (/tmp/fact.rb:1)
-;;  -- (kernel/common/scope.rb:134 remapped /tmp/scope.rb:134)
-(setf (gethash "loc" realgud:trepanx-pat-hash)
-      (make-realgud-loc-pat
-       :regexp ".. (\\(?:.+ \\(?:via\\|remapped\\) 
\\)?\\(.+\\):\\([0-9]+\\)\\(?: @[0-9]+\\)?)"
-       :file-group 1
-       :line-group 2))
-
-;;  Regular expression that describes a trepanx command prompt
-;; For example:
-;;   (trepanx):
-;;   ((trepanx)):
-(setf (gethash "prompt" realgud:trepanx-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^(+trepanx\\(@[0-9]+\\|@main\\)?)+: "
-       ))
-
-;;  Regular expression that describes a Rubinius backtrace line.
-(setf (gethash "lang-backtrace" realgud:trepanx-pat-hash)
-      realgud-rubinius-backtrace-loc-pat)
-
-;;  Regular expression that describes a ruby $! backtrace
-(setf (gethash "dollar-bang-backtrace" realgud:trepanx-pat-hash)
-      realgud-ruby-dollar-bang-loc-pat)
-
-;;  Regular expression that describes a Rubinius X-agent backtrace
-;;  line.
-(setf (gethash "rubinius-backtrace-Xagent" realgud:trepanx-pat-hash)
-      realgud-rubinius-Xagent-backtrace-loc-pat)
-
-;; Regular expression that describes a "breakpoint set" line
-;; For example:
-;; Set breakpoint 1: /tmp/fact.rb:1 (@0)
-(setf (gethash "brkpt-set" realgud:trepanx-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^Set breakpoint \\([0-9]+\\): .+ at \\(.+\\):\\([0-9]+\\) 
(@[0-9]+)"
-       :num 1
-       :file-group 2
-       :line-group 3))
-
-;; Regular expression that describes a debugger "delete" (breakpoint) response.
-;; For example:'
-;;   Deleted breakpoint 1.
-(setf (gethash "brkpt-del" realgud:trepanx-pat-hash)
-      (make-realgud-loc-pat
-       :regexp "^Deleted breakpoint \\([0-9]+\\).\n"
-       :num 1))
-
-;;  Regular expression that describes a Ruby $! string
-(setf (gethash "dollar-bang" realgud:trepanx-pat-hash)
-      realgud-ruby-dollar-bang-loc-pat)
-
-(setf (gethash "trepanx" realgud-pat-hash) realgud:trepanx-pat-hash)
-
-(defconst realgud:trepanx-frame-file-line-regexp
-  " at \\(.*\\):\\([0-9]+\\)$")
-
-(defconst realgud:trepanx-frame-start-regexp realgud:trepan-frame-start-regexp)
-(defconst realgud:trepanx-frame-num-regexp   realgud:trepan-frame-start-regexp)
-
-;;  Regular expression that describes a debugger "backtrace" command line.
-;;  e.g.
-;; --> #0 Rubinius::Scope#my_method at kernel/common/variable_scope.rb:134
-;;     #1 main.__script__ at /tmp/fact.rb:1
-(setf (gethash "debugger-backtrace" realgud:trepanx-pat-hash)
-      (make-realgud-loc-pat
-       :regexp         (concat realgud:trepanx-frame-start-regexp " "
-                       realgud:trepanx-frame-num-regexp " "
-                       "\\([A-Z_][a-zA-Z0-9_:]*\\)[#.]\\(.*\\)"
-                       realgud:trepanx-frame-file-line-regexp
-                       )
-       :num 2
-       :file-group 6
-       :line-group 7)
-      )
-
-;; Regular expression that for a termination message.
-(setf (gethash "termination" realgud:trepanx-pat-hash)
-       "^trepanx: That's all, folks...\n")
-
-(setf (gethash "font-lock-keywords" realgud:trepanx-pat-hash)
-      '(
-       ;; File name and line number. E.g. at /test/gcd.rb:6
-        ;;                                 ---^^^^^^^^^^^^-^
-       (" at \\(.*\\):\\([0-9]+\\)$"
-        (1 realgud-file-name-face)
-        (2 realgud-line-number-face))
-
-       ;; The frame number and first type name, if present.
-       ("^\\(-->\\|   \\)? #\\([0-9]+\\) 
\\([a-zA-Z_][a-zA-Z0-9_]*\\).*\\(\\([#.]\\)?\\([a-zA-Z_][a-zA-Z_[0-9]]*\\)?\\)?"
-        (2 realgud-backtrace-number-face)
-        (3 font-lock-constant-face)        ; e.g. Object
-        (6 font-lock-function-name-face nil t))   ; t means optional
-
-       ;; The frame number and first type name, if present.
-       ("^ +\\([0-9]+\\) 
*\\([a-zA-Z_][a-zA-Z0-9_]*\\).*\\(\\([#.]\\)?\\([a-zA-Z_][a-zA-Z_[0-9]]*\\)?\\)?"
-        (1 realgud-backtrace-number-face)
-        (2 font-lock-constant-face)        ; e.g. Object
-        (5 font-lock-function-name-face nil t))   ; t means optional
-       ;; Parameter sequence
-       ("(\\(.+\\))"
-        (1 font-lock-variable-name-face))
-       ;; "::Type", which occurs in class name of function and in parameter 
list.
-       ("::\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
-        (1 font-lock-type-face))
-
-       ;; Function name.
-       ("\\<\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\.\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
-        (1 font-lock-type-face)
-        (2 font-lock-function-name-face))
-       ;; (trepan-frames-match-current-line
-       ;;  (0 trepan-frames-current-frame-face append))
-       ))
-
-(setf (gethash "trepanx" realgud-pat-hash) realgud:trepanx-pat-hash)
-
-(defvar realgud:trepanx-command-hash (make-hash-table :test 'equal)
-  "Hash key is command name like 'quit' and the value is
-  the trepanx command to use, like 'quit!'")
-
-(setf (gethash "quit" realgud:trepanx-command-hash) "quit!")
-(setf (gethash "shell" realgud:trepanx-command-hash) "irb")
-(setf (gethash "trepanx" realgud-command-hash) realgud:trepanx-command-hash)
-
-(provide-me "realgud:trepanx-")
diff --git a/realgud/debugger/trepanx/track-mode.el 
b/realgud/debugger/trepanx/track-mode.el
deleted file mode 100644
index 1295cd4..0000000
--- a/realgud/debugger/trepanx/track-mode.el
+++ /dev/null
@@ -1,77 +0,0 @@
-;; Copyright (C) 2015 Free Software Foundation, Inc
-
-;; Author: Rocky Bernstein <address@hidden>
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-;;; Ruby "trepanx" Debugger tracking a comint or eshell buffer.
-
-(eval-when-compile (require 'cl))
-(require 'load-relative)
-(require-relative-list '(
-                        "../../common/cmds"
-                        "../../common/menu"
-                        "../../common/track"
-                        "../../common/track-mode"
-                        )
-                      "realgud-")
-(require-relative-list '("core" "init") "realgud:trepanx-")
-(require-relative-list '("../../lang/ruby") "realgud-lang-")
-
-(realgud-track-mode-vars "trepanx")
-
-(declare-function realgud-track-mode(bool))
-
-(declare-function realgud:ruby-populate-command-keys 'realgud-lang-ruby)
-(declare-function realgud-track-mode                 'realgud-track-mode)
-(declare-function realgud-track-mode-hook            'realgud-track-mode)
-(declare-function realgud-track-mode-setup           'realgud-track-mode)
-(declare-function realgud:track-set-debugger         'realgud-track-mode)
-
-(realgud:ruby-populate-command-keys trepanx-track-mode-map)
-
-(define-key trepanx-track-mode-map
-  (kbd "C-c !x") 'realgud:rubinius-goto-Xagent-backtrace-line)
-(define-key trepanx-track-mode-map
-  (kbd "C-c !!") 'realgud:ruby-goto-dollar-bang-line)
-
-(defun trepanx-track-mode-hook()
-  (use-local-map trepanx-track-mode-map)
-  (realgud-track-mode-setup 't)
-  (message "trepanx track-mode-hook called")
-)
-(define-minor-mode trepanx-track-mode
-  "Minor mode for tracking trepanx source locations inside a process shell via 
realgud. trepanx is a Rubinius Ruby debugger.
-
-If called interactively with no prefix argument, the mode is toggled. A prefix 
argument, captured as ARG, enables the mode if the argument is positive, and 
disables it otherwise.
-
-\\{trepanx-track-mode-map}"
-
-  :init-value nil
-  ;; :lighter " trepanx"   ;; mode-line indicator from realgud-track is 
sufficient.
-  ;; The minor mode bindings.
-  :global nil
-  :group 'realgud:trepanx
-  :keymap trepanx-track-mode-map
-
-  (realgud:track-set-debugger "trepanx")
-  (if trepanx-track-mode
-      (progn
-       (realgud-track-mode-setup 't)
-       (trepanx-track-mode-hook))
-    (progn
-      (setq realgud-track-mode nil)
-      ))
-)
-
-(provide-me "realgud:trepanx-")
diff --git a/realgud/debugger/trepanx/trepanx.el 
b/realgud/debugger/trepanx/trepanx.el
deleted file mode 100644
index ede3163..0000000
--- a/realgud/debugger/trepanx/trepanx.el
+++ /dev/null
@@ -1,64 +0,0 @@
-;;; Copyright (C) 2010-2011, 2014-2015 Rocky Bernstein <address@hidden>
-;;  `trepanx' Main interface to trepanx via Emacs
-(require 'load-relative)
-(require-relative-list '("../../common/helper") "realgud-")
-(require-relative-list '("../../common/track") "realgud-")
-(require-relative-list '("core" "track-mode") "realgud:trepanx-")
-
-(declare-function trepanx-query-cmdline  'realgud:trepanx-core)
-(declare-function trepanx-parse-cmd-args 'realgud:trepanx-core)
-(declare-function realgud:run-process 'realgud-run)
-
-;; This is needed, or at least the docstring part of it is needed to
-;; get the customization menu to work in Emacs 24.
-(defgroup realgud:trepanx nil
-  "The realgud interface to the Rubinius \"trepanning\" debugger"
-  :group 'ruby
-  :group 'realgud
-  :version "23.1")
-
-;; -------------------------------------------------------------------
-;; User definable variables
-;;
-
-(defcustom realgud:trepanx-command-name
-  ;;"trepanx --emacs 3"
-  "trepanx"
-  "File name for executing the Ruby debugger and command options.
-This should be an executable on your path, or an absolute file name."
-  :type 'string
-  :group 'realgud:trepanx)
-
-;; -------------------------------------------------------------------
-;; The end.
-;;
-
-;;;###autoload
-(defun realgud:trepanx (&optional opt-command-line no-reset)
-  "Invoke the trepanx Ruby debugger and start the Emacs user interface.
-
-String COMMAND-LINE specifies how to run trepanx.
-
-Normally command buffers are reused when the same debugger is
-reinvoked inside a command buffer with a similar command. If we
-discover that the buffer has prior command-buffer information and
-NO-RESET is nil, then that information which may point into other
-buffers and source buffers which may contain marks and fringe or
-marginal icons is reset."
-  (interactive)
-  (let* (
-        (cmd-str (or opt-command-line (trepanx-query-cmdline "trepanx")))
-        (cmd-args (split-string-and-unquote cmd-str))
-        (parsed-args (trepanx-parse-cmd-args cmd-args))
-        (script-args (cdr cmd-args))
-        (script-name (car script-args))
-        (cmd-buf))
-    (realgud:run-process "trepanx" script-name cmd-args
-                     'realgud:trepanx-minibuffer-history
-                     no-reset)
-    )
-  )
-
-(defalias 'trepanx 'realgud:trepanx)
-
-(provide-me "realgud-")
diff --git a/test/test-bt-pydb.el b/test/test-bt-pydb.el
deleted file mode 100644
index d32a2bd..0000000
--- a/test/test-bt-pydb.el
+++ /dev/null
@@ -1,44 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "./bt-helper.el")
-(load-file "../realgud/debugger/pydb/init.el")
-
-(declare-function setup-bt  'realgud-bt-helper)
-(declare-function __FILE__  'load-relative)
-
-(test-simple-start)
-
-(eval-when-compile
-  (defvar temp-bt)
-)
-
-(setq temp-bt
-      (setup-bt "pydb"
-               "->0 gcd(a=3, b=5) called from file '/test/gcd.py' at line 28
-##1 <module> execfile() file '/test/gcd.py' at line 41
-"))
-
-(with-current-buffer temp-bt
-  (switch-to-buffer temp-bt)
-  (goto-char (point-min))
-  (dolist (pair
-          '(
-            ("->" .    realgud-backtrace-number )
-            ("gc"    . font-lock-function-name-face )
-            ("("     . font-lock-variable-name-face )
-            ("/test" . realgud-file-name)
-            ("2"     . realgud-line-number)
-            ("##"    . realgud-backtrace-number)
-            ("/test" . realgud-file-name)
-            ("4"     . realgud-line-number)
-            ))
-    (search-forward (car pair))
-    (assert-eql (cdr pair)
-                 (get-text-property (point) 'face))
-    )
-  )
-
-(end-tests)
diff --git a/test/test-bt-pydbgr.el b/test/test-bt-pydbgr.el
deleted file mode 100644
index 2676d8c..0000000
--- a/test/test-bt-pydbgr.el
+++ /dev/null
@@ -1,43 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "./bt-helper.el")
-(load-file "../realgud/debugger/pydbgr/init.el")
-
-(declare-function setup-bt 'realgud-bt-helper)
-(declare-function __FILE__ 'load-relative)
-
-(test-simple-start)
-
-(eval-when-compile
-  (defvar temp-bt)
-)
-
-(setq temp-bt
-      (setup-bt "pydbgr"
-               "->0 gcd(a=3, b=5) called from file '/test/gcd.py' at line 28
-##1 <module> execfile() file '/test/gcd.py' at line 41
-"))
-
-(with-current-buffer temp-bt
-  (switch-to-buffer temp-bt)
-  (goto-char (point-min))
-  (dolist (pair
-          '(
-            ("->" .    realgud-backtrace-number )
-            ("gc"    . font-lock-function-name-face )
-            ("("     . font-lock-variable-name-face )
-            ("/test" . realgud-file-name)
-            ("2"     . realgud-line-number)
-            ("##"    . realgud-backtrace-number)
-            ("/test" . realgud-file-name)
-            ("4"     . realgud-line-number)
-            ))
-    (search-forward (car pair))
-    (assert-equal (cdr pair)
-                 (get-text-property (point) 'face))
-    )
-  )
-(end-tests)
diff --git a/test/test-bt-trepanx.el b/test/test-bt-trepanx.el
deleted file mode 100644
index 6f8d3c4..0000000
--- a/test/test-bt-trepanx.el
+++ /dev/null
@@ -1,49 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "./bt-helper.el")
-(load-file "../realgud/debugger/trepanx/init.el")
-
-(declare-function setup-bt 'realgud-bt-helper)
-(declare-function __FILE__ 'load-relative)
-
-(test-simple-start)
-
-(eval-when-compile
-  (defvar temp-bt)
-)
-
-(setq temp-bt
-      (setup-bt "trepanx"
-               "   0 Trepanning(Object)#debug_program(dbgr, ruby_path, 
program_to_debug) at /foo.rb:10
-   3 main.__script__ at /bin/trepan:19
-   4 Kernel(Object)#load(name) at kernel/common/kernel.rb:678
-   5 main.__script__ at /home/rocky-rvm/.rvm/gems/rbx-head/bin/trepan:19
-"))
-
-(with-current-buffer temp-bt
-  (switch-to-buffer temp-bt)
-  (goto-char (point-min))
-  (dolist (pair
-          '(
-            ("   "    .   realgud-backtrace-number )
-            ("Trepan" . font-lock-constant-face )
-            ("Objec"  . font-lock-variable-name-face )
-            ("#"      . font-lock-variable-name-face )
-            ("("      .  font-lock-variable-name-face )
-            ("/foo"   .  realgud-file-name)
-            ("1"      . realgud-line-number)
-            ("   "    . realgud-backtrace-number)
-            ("mai"    . font-lock-constant-face )
-            ("/bin"   . realgud-file-name)
-            ("1"     . realgud-line-number)
-            ))
-    (search-forward (car pair))
-    (assert-equal (cdr pair)
-                 (get-text-property (point) 'face))
-    )
-  )
-
-(end-tests)
diff --git a/test/test-ipdb.el b/test/test-ipdb.el
new file mode 100644
index 0000000..e82e56f
--- /dev/null
+++ b/test/test-ipdb.el
@@ -0,0 +1,39 @@
+;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
+;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
+
+(require 'test-simple)
+(require 'load-relative)
+(load-file "../realgud/debugger/ipdb/ipdb.el")
+
+(eval-when-compile (defvar test:run-process-save))
+
+(declare-function ipdb-parse-cmd-args 'realgud:ipdb-core)
+(declare-function realgud:ipdb        'realgud:ipdb)
+(declare-function __FILE__            'load-relative)
+
+(test-simple-start)
+
+;; Save value realgud:run-process and change it to something we want
+(setq test:run-process-save (symbol-function 'realgud:run-process))
+(defun realgud:run-process(debugger-name script-filename cmd-args
+                                     minibuffer-histroy &optional no-reset)
+  "Fake realgud:run-process used in testing"
+  (note
+   (format "%s %s %s" debugger-name script-filename cmd-args))
+  (assert-equal "ipdb" debugger-name "debugger name gets passed")
+  (assert-equal (expand-file-name "./gcd.py") script-filename "file name 
check")
+  (assert-equal '("3" "5") (cddr cmd-args) "command args listified")
+  )
+
+(note "ipdb-parse-cmd-args")
+(assert-equal (list nil '("ipdb") (list (expand-file-name "foo")) nil)
+             (ipdb-parse-cmd-args '("ipdb" "foo")))
+(assert-equal (list nil '("ipdb") (list (expand-file-name "program.py") "foo") 
nil)
+             (ipdb-parse-cmd-args
+              '("ipdb" "program.py" "foo")))
+
+(realgud:ipdb "ipdb ./gcd.py 3 5")
+;; Restore the old value of realgud:run-process
+(fset 'realgud:run-process test:run-process-save)
+
+(end-tests)
diff --git a/test/test-loc-regexp-trepanx.el b/test/test-loc-regexp-trepanx.el
deleted file mode 100644
index 316643d..0000000
--- a/test/test-loc-regexp-trepanx.el
+++ /dev/null
@@ -1,68 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "./regexp-helper.el")
-(load-file "../realgud/common/regexp.el")
-(load-file "../realgud/debugger/trepanx/init.el")
-
-(declare-function realgud-cmdbuf-info-loc-regexp 'realgud-buffer-command)
-(declare-function cmdbuf-loc-match               'realgud-regexp)
-(declare-function realgud-loc-pat-regexp         'realgud-regexp)
-(declare-function realgud-loc-pat-file-group     'realgud-regexp)
-(declare-function realgud-loc-pat-line-group     'realgud-regexp)
-(declare-function realgud-cmdbuf-info-file-group 'realgud-regexp)
-(declare-function realgud-cmdbuf-info-line-group 'realgud-regexp)
-(declare-function realgud-cmdbuf-info            'realgud-regexp)
-(declare-function make-realgud-cmdbuf-info       'realgud-regexp)
-(declare-function __FILE__                       'require-relative)
-
-(test-simple-start)
-
-(eval-when-compile
-  (defvar dbg-name)
-  (defvar realgud-pat-hash)
-  (defvar loc-pat)
-  (defvar test-dbgr)
-  (defvar test-text)
-  (defvar xagent-pat)
-)
-
-;; Some setup usually done in setting up the buffer.
-;; We customize this for the debugger trepan. Others may follow.
-;; FIXME: encapsulate this.
-(setq dbg-name "trepanx")
-(setq loc-pat (gethash "loc" (gethash dbg-name realgud-pat-hash)))
-(setq xagent-pat (gethash "rubinius-backtrace-Xagent" (gethash dbg-name 
realgud-pat-hash)))
-
-(setq test-dbgr (make-realgud-cmdbuf-info
-                :debugger-name dbg-name
-                :loc-regexp (realgud-loc-pat-regexp loc-pat)
-                :file-group (realgud-loc-pat-file-group loc-pat)
-                :line-group (realgud-loc-pat-line-group loc-pat)))
-
-
-(defun xagent-match(text)
-  (string-match (realgud-loc-pat-regexp xagent-pat) test-text)
-)
-
-(setq test-text "-- (../rbx-trepanning/tmp/rbxtest.rb:7 @5)")
-(assert-t (numberp (cmdbuf-loc-match test-text test-dbgr)) "basic location")
-
-(note "extract file name")
-(setq test-text "-- (../rbx-trepanning/tmp/rbxtest.rb:7 @5)")
-(assert-equal 0 (cmdbuf-loc-match test-text test-dbgr))
-(assert-equal "../rbx-trepanning/tmp/rbxtest.rb"
-             (match-string (realgud-cmdbuf-info-file-group test-dbgr)
-                           test-text))
-(setq test-text "-- (../rbx-trepanning/tmp/rbxtest.rb:7 @5)")
-(assert-equal "7"
-             (match-string
-              (realgud-cmdbuf-info-line-group test-dbgr)
-              test-text) "extract line number")
-
-(setq test-text "0xbfb63710: RakeFileUtils#ruby in 
/home/rocky-rvm/.rvm/gems/rbx-head/gems/rake-0.8.7/lib/rake.rb:1094 (+61)")
-(assert-t (numberp (xagent-match test-text)) "basic xagent location")
-
-(end-tests)
diff --git a/test/test-pydb.el b/test/test-pydb.el
deleted file mode 100644
index 224cc05..0000000
--- a/test/test-pydb.el
+++ /dev/null
@@ -1,18 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "../realgud/debugger/pydb/pydb.el")
-(declare-function pydb-parse-cmd-args 'realgud:pydb)
-(declare-function __FILE__            'load-relative)
-
-(test-simple-start)
-
-(note "pydb-parse-cmd-args")
-(assert-equal '(nil ("pydb") ("foo") nil)
-             (pydb-parse-cmd-args '("pydb" "foo")))
-(assert-equal '(nil ("pydb") ("program.py" "foo") nil)
-             (pydb-parse-cmd-args
-              '("pydb" "program.py" "foo")))
-(end-tests)
diff --git a/test/test-pydbgr.el b/test/test-pydbgr.el
deleted file mode 100644
index 81d82db..0000000
--- a/test/test-pydbgr.el
+++ /dev/null
@@ -1,38 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(require 'load-relative)
-(load-file "../realgud/debugger/pydbgr/pydbgr.el")
-(declare-function pydbgr-parse-cmd-args 'pydbgr-pdb)
-(declare-function __FILE__              'load-relative)
-
-(test-simple-start)
-
-(note "pydbgr-parse-cmd-args")
-
-(assert-equal '(nil ("pydbgr") ("foo") nil)
-             (pydbgr-parse-cmd-args '("pydbgr" "foo")))
-(assert-equal '(nil ("pydbgr" "-n") ("foo") nil)
-             (pydbgr-parse-cmd-args '("pydbgr" "-n" "foo")))
-(assert-equal '(nil ("pydbgr" "--annotate=1") ("foo") t)
-             (pydbgr-parse-cmd-args
-              '("pydbgr" "--annotate=1" "foo")))
-(assert-equal '(nil ("mypydbgr" "--annotate=1") ("foo") t)
-             (pydbgr-parse-cmd-args
-              '("mypydbgr" "--annotate=1" "foo")))
-(assert-equal '(("python") ("pydbgr" "--annotate") ("1" "foo") t)
-             (pydbgr-parse-cmd-args
-              '("python" "pydbgr" "--annotate" "1" "foo")))
-(assert-equal '(("/usr/bin/python") ("pydbgr" "--different")
-               ("foo") nil)
-             (pydbgr-parse-cmd-args
-              '("/usr/bin/python" "pydbgr"
-                "--different" "foo")))
-(assert-equal '(nil ("program.py") ("foo") nil)
-             (pydbgr-parse-cmd-args '("program.py" "foo")))
-(assert-equal '(nil ("pydbgr") ("program.py" "foo") nil)
-             (pydbgr-parse-cmd-args
-              '("pydbgr" "program.py" "foo")))
-
-(end-tests)
diff --git a/test/test-realgud.el b/test/test-realgud.el
index 2b400e2..2e7d09e 100644
--- a/test/test-realgud.el
+++ b/test/test-realgud.el
@@ -18,7 +18,7 @@
 
 (note "realgud:loaded-features")
 (set (make-local-variable 'test-realgud:features) (realgud:loaded-features))
-;; (dolist (feature '(realgud-trepan realgud-pydbgr
+;; (dolist (feature '(realgud-trepan
 ;;                            realgud-core))
 ;;   (assert-t (not (not (member feature test-realgud:features)))) )
 
diff --git a/test/test-regexp-ipdb.el b/test/test-regexp-ipdb.el
new file mode 100644
index 0000000..71aaa4b
--- /dev/null
+++ b/test/test-regexp-ipdb.el
@@ -0,0 +1,105 @@
+;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
+;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
+
+(require 'test-simple)
+(load-file "../realgud/debugger/ipdb/init.el")
+(load-file "./regexp-helper.el")
+
+(declare-function __FILE__              'load-relative)
+(declare-function prompt-match          'regexp-helper)
+
+(test-simple-start)
+
+(eval-when-compile
+  (defvar loc-pat)   (defvar prompt-pat) (defvar realgud:ipdb-pat-hash)
+  (defvar tb-pat)    (defvar test-text)  (defvar prompt-str)
+  (defvar bps-pat)
+)
+
+(set (make-local-variable 'bps-pat)
+      (gethash "brkpt-set" realgud:ipdb-pat-hash))
+
+(set (make-local-variable 'loc-pat)
+     (gethash "loc"       realgud:ipdb-pat-hash))
+
+(set (make-local-variable 'prompt-pat)
+      (gethash "prompt"    realgud:ipdb-pat-hash))
+
+(set (make-local-variable 'tb-pat)
+      (gethash "lang-backtrace" realgud:ipdb-pat-hash))
+
+;; FIXME: we get a void variable somewhere in here when running
+;;        even though we define it in lexical-let. Dunno why.
+;;        setq however will workaround this.
+(setq test-text
+      "  File \"/usr/lib/python2.6/code.py\", line 281, in raw_input")
+(note "traceback location matching")
+
+(assert-t (numberp (loc-match test-text tb-pat)) "basic traceback location")
+
+(assert-equal "/usr/lib/python2.6/code.py"
+             (match-string (realgud-loc-pat-file-group tb-pat)
+                           test-text))
+
+(setq test-text
+      "  File \"/usr/lib/python2.6/code.py\", line 281, in raw_input")
+(loc-match test-text tb-pat)
+(assert-equal "281"
+             (match-string (realgud-loc-pat-line-group tb-pat)
+                           test-text) "extract line number")
+
+(note "breakpoint location matching")
+
+(setq test-text "Breakpoint 1 at /src/git/code/gcd.py:13")
+(assert-t (numberp (loc-match test-text bps-pat))
+         "basic breakpoint location")
+
+(assert-equal "/src/git/code/gcd.py"
+             (match-string (realgud-loc-pat-file-group
+                            bps-pat)
+                           test-text)
+             "extract breakpoint file name")
+
+
+(assert-equal "13"
+             (match-string (realgud-loc-pat-line-group
+                            bps-pat)
+                           test-text)   "extract breakpoint line number")
+
+;; (set test-text "(c:\\working\\python\\helloworld.py:30): <module>")
+;;
+;; (assert-t (numberp (loc-match test-text loc-pat)) "MS DOS position 
location")
+;; ;;
+;; (assert-equal "c:\\working\\python\\helloworld.py"
+;;     (match-string (realgud-loc-pat-file-group loc-pat)
+;;                   test-text)
+;;     (format "Failing file group is %s"
+;;                             (realgud-loc-pat-file-group tb-pat))
+;;     "extract file name")
+;; (assert-equal "30"
+;;           (match-string (realgud-loc-pat-line-group loc-pat)
+;;                         test-text) "extract line number")
+
+(setq test-text "> /usr/bin/ipython(24)<module>")
+(assert-t (numberp (loc-match test-text loc-pat)) "position location")
+(assert-equal "/usr/bin/ipython"
+             (match-string (realgud-loc-pat-file-group loc-pat)
+                           test-text)
+             (format "Failing file group is %s"
+                     (realgud-loc-pat-file-group tb-pat)))
+(assert-equal "24"
+             (match-string (realgud-loc-pat-line-group
+                            loc-pat)
+                           test-text)
+             "extract line number")
+
+
+(note "prompt matching")
+(set (make-local-variable 'prompt-str) "ipdb> ")
+(prompt-match prompt-str nil "debugger prompt: %s")
+(setq prompt-str "ipdb")
+(assert-nil (numberp (loc-match prompt-str prompt-pat))
+           (format "%s %s" "invalid debugger prompt"
+                   prompt-str))
+
+(end-tests)
diff --git a/test/test-regexp-pydb.el b/test/test-regexp-pydb.el
deleted file mode 100644
index 3ccd402..0000000
--- a/test/test-regexp-pydb.el
+++ /dev/null
@@ -1,97 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(require 'test-simple)
-(load-file "../realgud/debugger/pydb/init.el")
-(load-file "./regexp-helper.el")
-
-(test-simple-start)
-
-
-(set (make-local-variable 'bps-pat)
-      (gethash "brkpt-set" realgud:pydb-pat-hash))
-
-(set (make-local-variable 'loc-pat)
-     (gethash "loc"       realgud:pydb-pat-hash))
-
-(set (make-local-variable 'prompt-pat)
-      (gethash "prompt"    realgud:pydb-pat-hash))
-
-(set (make-local-variable 'tb-pat)
-      (gethash "lang-backtrace" realgud:pydb-pat-hash))
-
-;; FIXME: we get a void variable somewhere in here when running
-;;        even though we define it in lexical-let. Dunno why.
-;;        setq however will workaround this.
-(set (make-local-variable 'text)
-     "  File \"/usr/lib/python2.6/code.py\", line 281, in raw_input")
-(note "traceback location matching")
-
-(assert-t (numberp (loc-match text tb-pat)) "basic traceback location")
-
-(assert-equal "/usr/lib/python2.6/code.py"
-             (match-string (realgud-loc-pat-file-group tb-pat)
-                           text)
-             (format "Failing file group is %s"
-                     (realgud-loc-pat-file-group tb-pat) "extract file name"))
-
-(assert-equal "281"
-             (match-string (realgud-loc-pat-line-group tb-pat)
-                           text) "extract line number")
-
-(note "breakpoint location matching")
-
-(setq text "Breakpoint 1 at /src/git/code/gcd.py:13")
-(assert-t (numberp (loc-match text bps-pat)) "basic breakpoint location")
-
-(assert-equal "/src/git/code/gcd.py"
-             (match-string (realgud-loc-pat-file-group
-                            bps-pat)
-                           text)   "extract breakpoint file name")
-
-
-(assert-equal "13"
-             (match-string (realgud-loc-pat-line-group
-                            bps-pat)
-                           text)   "extract breakpoint line number")
-
-;; (set text "(c:\\working\\python\\helloworld.py:30): <module>")
-;;
-;; (assert-t (numberp (loc-match text loc-pat)) "MS DOS position location")
-;; ;;
-;; (assert-equal "c:\\working\\python\\helloworld.py"
-;;     (match-string (realgud-loc-pat-file-group loc-pat)
-;;                   text)
-;;     (format "Failing file group is %s"
-;;                             (realgud-loc-pat-file-group tb-pat))
-;;     "extract file name")
-;; (assert-equal "30"
-;;           (match-string (realgud-loc-pat-line-group loc-pat)
-;;                         text) "extract line number")
-
-;; (setq text "> /usr/bin/ipython(24)<module>")
-;; (assert-t (numberp (loc-match text loc-pat)) "position location")
-;; (assert-equal "/usr/bin/ipython"
-;;           (match-string (realgud-loc-pat-file-group loc-pat)
-;;                         text)
-;;           (format "Failing file group is %s"
-;;                   (realgud-loc-pat-file-group tb-pat)
-;;                   "extract file name"))
-;; (assert-equal "24"
-;;           (match-string (realgud-loc-pat-line-group
-;;                          loc-pat)
-;;                         text)
-;;           "extract line number")
-
-
-(note "prompt matching")
-(set (make-local-variable 'prompt-str) "(Pydb) ")
-(prompt-match prompt-str nil "debugger prompt: %s")
-(setq prompt-str "((Pydb)) ")
-(prompt-match prompt-str nil "nested debugger prompt: %s")
-(setq prompt-str "Pydb) ")
-(assert-nil (numberp (loc-match prompt-str prompt-pat))
-           (format "%s %s" "invalid debugger prompt"
-                   prompt-str))
-
-(end-tests)
diff --git a/test/test-regexp-pydbgr.el b/test/test-regexp-pydbgr.el
deleted file mode 100644
index 4bc8e8b..0000000
--- a/test/test-regexp-pydbgr.el
+++ /dev/null
@@ -1,76 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(load-file "./regexp-helper.el")
-(load-file "../realgud/debugger/pydbgr/init.el")
-
-(test-simple-start)
-
-(setup-regexp-vars realgud-pydbgr-pat-hash)
-
-;; FIXME: we get a void variable somewhere in here when running
-;;        even though we define it in lexical-let. Dunno why.
-;;        setq however will workaround this.
-(setq text "  File \"/usr/lib/python2.6/code.py\", line 281, in raw_input")
-
-(note "traceback location matching")
-(assert-t (numberp (loc-match text helper-tb)) "basic traceback location")
-(assert-equal "/usr/lib/python2.6/code.py"
-             (match-string (realgud-loc-pat-file-group helper-tb)
-                           text)
-             (format "Failing file group is %s"
-                     (realgud-loc-pat-file-group helper-tb) "extract file 
name"))
-(assert-equal "281"
-             (match-string (realgud-loc-pat-line-group helper-tb)
-                           text) "extract line number")
-
-(note "breakpoint location matching")
-(lexical-let ((text "Breakpoint 1 set at line 13 of file 
/src/git/code/gcd.py"))
-  (assert-t (numberp (loc-match text helper-bps))  "basic breakpoint location")
-  (assert-equal "/src/git/code/gcd.py"
-               (match-string (realgud-loc-pat-file-group helper-bps)
-                             text)   "extract breakpoint file name")
-  (assert-equal "13"
-               (match-string (realgud-loc-pat-line-group helper-bps)
-                             text)   "extract breakpoint line number")
-  )
-
-(note "prompt matching")
-(lexical-let ((text "(c:\\working\\python\\helloworld.py:30): <module>"))
-  (assert-t (numberp (loc-match text helper-loc))   "MS DOS position location")
-  (assert-equal "c:\\working\\python\\helloworld.py"
-               (match-string (realgud-loc-pat-file-group helper-loc)
-                             text)
-               (format "Failing file group is %s"
-                       (realgud-loc-pat-file-group helper-tb) "extract file 
name"))
-  (assert-equal "30"
-               (match-string (realgud-loc-pat-line-group helper-loc)
-                             text)   "extract line number")
-
-  )
-(lexical-let ((text "(/usr/bin/ipython:24): <module>"))
-  (assert-t (numberp (loc-match text helper-loc))   "position location")
-  (assert-equal "/usr/bin/ipython"
-               (match-string (realgud-loc-pat-file-group helper-loc)
-                             text)
-               (format "Failing file group is %s"
-                       (realgud-loc-pat-file-group helper-tb) "extract file 
name"))
-  (assert-equal "24"
-               (match-string (realgud-loc-pat-line-group helper-loc)
-                             text)   "extract line number")
-  )
-
-(lexical-let
-    ((text "(/tmp/eval_stringzDKTfr.py:1 remapped <string>): <module>"))
-  (assert-t (numberp (loc-match text helper-loc))   "position location")
-  (assert-equal "/tmp/eval_stringzDKTfr.py"
-               (match-string (realgud-loc-pat-file-group helper-loc)
-                             text)
-               (format "Failing file group is %s"
-                       (realgud-loc-pat-file-group helper-tb) "extract file 
name"))
-  (assert-equal "1"
-               (match-string (realgud-loc-pat-line-group helper-loc)
-                             text)   "extract line number")
-  )
-
-(end-tests)
diff --git a/test/test-regexp-trepanx.el b/test/test-regexp-trepanx.el
deleted file mode 100644
index a43658c..0000000
--- a/test/test-regexp-trepanx.el
+++ /dev/null
@@ -1,72 +0,0 @@
-;; Press C-x C-e at the end of the next line to run this file test 
non-interactively
-;; (test-simple-run "emacs -batch -L %s -l %s" (file-name-directory 
(locate-library "test-simple.elc")) buffer-file-name)
-
-(load-file "../realgud/debugger/trepanx/init.el")
-(load-file "./regexp-helper.el")
-
-(test-simple-start)
-
-(set (make-local-variable 'helper-bps)
-     (gethash "brkpt-set"       realgud:trepanx-pat-hash))
-(set (make-local-variable 'prompt)
-     (gethash "prompt"          realgud:trepanx-pat-hash))
-(set (make-local-variable 'helper-tb)
-     (gethash "lang-backtrace"  realgud:trepanx-pat-hash))
-
-;; FIXME: we get a void variable somewhere in here when running
-;;        even though we define it in lexical-let. Dunno why.
-;;        setq however will workaround this.
-(set (make-local-variable 'text)
- "                        Object#boom at tmp/boom.rb:2")
-
-(assert-t (numberp (tb-loc-match text))
-         "basic traceback location")
-
-(assert-equal 0 (tb-loc-match text)
-             "match trepanx location")
-(assert-equal "tmp/boom.rb"
-             (match-string (realgud-loc-pat-file-group helper-tb)
-                           text)
-             "extract traceback file name")
-(setq text
-      "            { } in main.__script__ at /tmp/blam.rb:5")
-(assert-equal 0 (tb-loc-match text)
-             "find a trepanx location")
-(assert-equal "/tmp/blam.rb"
-             (match-string (realgud-loc-pat-file-group helper-tb)
-                           text)
-             "extract traceback file name")
-
-(assert-equal "5"
-             (match-string (realgud-loc-pat-line-group helper-tb)
-                           text)
-             "extract traceback line number")
-
-(note "prompt matching")
-(set (make-local-variable 'prompt-pat)
-     (gethash "prompt" realgud:trepanx-pat-hash))
-(prompt-match "((trepanx)): " nil "nested debugger prompt: %s")
-(prompt-match "((address@hidden)): "
-             "@55" "nested debugger prompt with addr: %s")
-(prompt-match "((address@hidden)): " "@main"
-             "nested debugger prompt with method: %s")
-(setq prompt-str "trepanx:")
-(assert-nil (loc-match prompt-str prompt-pat)
-           (format "invalid prompt %s" prompt-str))
-
-(setq text "Set breakpoint 1: __script__() at /bin/irb:2 (@0)")
-
-(assert-t (numberp (bp-loc-match text))
-         "basic breakpoint location")
-(assert-equal "/bin/irb"
-             (match-string (realgud-loc-pat-file-group helper-bps)
-                           text)
-             "extract breakpoint file name"
-             )
-(assert-equal "2"
-             (match-string (realgud-loc-pat-line-group helper-bps)
-                           text)
-             "extract breakpoint line number"
-             )
-
-(end-tests)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]