branch: master
commit 0e68d8d19d0d50ec7c73b999fbc433dad62dff4a
Author: rocky <[email protected]>
Commit: rocky <[email protected]>
common/regexp.el: start to DRY regexps
lang/js.el: term escape is common to nodejs and trepanjs
---
realgud/common/regexp.el | 2 ++
realgud/debugger/nodejs/init.el | 32 +++++++++++++++-----------------
realgud/lang/js.el | 4 ++++
3 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/realgud/common/regexp.el b/realgud/common/regexp.el
index bc78795..4e9fcec 100644
--- a/realgud/common/regexp.el
+++ b/realgud/common/regexp.el
@@ -35,6 +35,8 @@ output by a debugger inside a process shell"
;; call, return, exception, etc.
)
+(defconst realgud:regexp-captured-num "\\([0-9]+\\)")
+
(defvar realgud-pat-hash (make-hash-table :test 'equal)
"Hash key is the debugger name, a string. The values of a hash entry
is a realgud-loc-pat struct")
diff --git a/realgud/debugger/nodejs/init.el b/realgud/debugger/nodejs/init.el
index 979dfc1..204444f 100644
--- a/realgud/debugger/nodejs/init.el
+++ b/realgud/debugger/nodejs/init.el
@@ -33,25 +33,15 @@
backtrace, prompt, etc. The values of a hash entry is a
realgud-loc-pat struct")
-(defconst realgud:nodejs-term-escape "[[0-9]+[GKJ]"
- "Escape sequence regular expression pattern nodejs often puts in around
prompts")
-
-(defconst realgud:nodejs-frame-start-regexp "\\(?:^\\|\n\\)\\(?:#\\)")
-(defconst realgud:nodejs-frame-num-regexp "\\([0-9]+\\)")
-(defconst realgud:nodejs-frame-module-regexp "[^ \t\n]+")
-(defconst realgud:nodejs-frame-file-regexp "[^ \t\n]+")
-(defconst realgud:nodejs-frame-line-regexp realgud:nodejs-frame-num-regexp)
-(defconst realgud:nodejs-frame-column-regexp realgud:nodejs-frame-num-regexp)
-
-;; Regular expression that describes a nodejs location generally shown
;; before a command prompt.
;; For example:
;; break in /home/indutny/Code/git/indutny/myscript.js:1
(setf (gethash "loc" realgud:nodejs-pat-hash)
(make-realgud-loc-pat
:regexp (format
- "\\(?:%s\\)*break in \\([^:]+\\):\\([0-9]*\\)"
- realgud:nodejs-term-escape)
+ "\\(?:%s\\)*\\(?:break\\|exception\\) in %s:%s"
+ realgud:js-term-escape "\\([^:]+\\)"
+ realgud:regexp-captured-num)
:file-group 1
:line-group 2))
@@ -60,7 +50,7 @@ realgud-loc-pat struct")
;; debug>
(setf (gethash "prompt" realgud:nodejs-pat-hash)
(make-realgud-loc-pat
- :regexp (format "^\\(?:%s\\)*debug> " realgud:nodejs-term-escape)
+ :regexp (format "^\\(?:%s\\)*debug> " realgud:js-term-escape)
))
;; Regular expression that describes a "breakpoint set" line
@@ -84,9 +74,17 @@ realgud-loc-pat struct")
;; Removed 1 breakpoint(s).
(setf (gethash "brkpt-del" realgud:nodejs-pat-hash)
(make-realgud-loc-pat
- :regexp "^Removed \\([0-9]+\\) breakpoint(s).\n"
+ :regexp (format "^Removed %s breakpoint(s).\n"
+ realgud:regexp-captured-num)
:num 1))
+
+(defconst realgud:nodejs-frame-start-regexp "\\(?:^\\|\n\\)\\(?:#\\)")
+(defconst realgud:nodejs-frame-num-regexp realgud:regexp-captured-num)
+(defconst realgud:nodejs-frame-module-regexp "[^ \t\n]+")
+(defconst realgud:nodejs-frame-file-regexp "[^ \t\n]+")
+
+;; Regular expression that describes a nodejs location generally shown
;; Regular expression that describes a debugger "backtrace" command line.
;; For example:
;; #0 module.js:380:17
@@ -104,9 +102,9 @@ realgud-loc-pat struct")
"\\(?:" realgud:nodejs-frame-module-regexp " \\)?"
"\\(" realgud:nodejs-frame-file-regexp "\\)"
":"
- realgud:nodejs-frame-line-regexp
+ realgud:regexp-captured-num
":"
- realgud:nodejs-frame-column-regexp
+ realgud:regexp-captured-num
)
:num 1
:file-group 2
diff --git a/realgud/lang/js.el b/realgud/lang/js.el
index bb5ab38..aeb84a7 100644
--- a/realgud/lang/js.el
+++ b/realgud/lang/js.el
@@ -21,6 +21,10 @@
(require-relative-list '("../common/regexp" "../common/loc" "../common/track")
"realgud-")
+(defconst realgud:js-term-escape "[[0-9]+[GKJ]"
+ "Escape sequence regular expression pattern trepanjs often puts
+ in around prompts")
+
(declare-function realgud-goto-line-for-pt 'realgud-track)
;; Regular expression that describes a Perl Carp backtrace line.