mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Fix broken gdb-control-commands-regexp (bug#66363)
* lisp/progmodes/gdb-mi.el (gdb-python-guile-commands-regexp): Remove, integrate into... (gdb-control-commands-regexp): ...this. Translate into rx. Remove useless submatches which broke earlier attempts at using other submatches. Rewrite tail expression to avoid superlinear nested repetition, eliminating a Relint complaint. * lisp/progmodes/gdb-mi.el (gdb-send): Simplify use of the regexp above, and use the correct submatch this time. Remove unnecessary and incorrect second regexp matching.
This commit is contained in:
parent
c71c949618
commit
7e47d88499
1 changed files with 23 additions and 21 deletions
|
|
@ -1960,19 +1960,23 @@ static char *magick[] = {
|
|||
:group 'gdb)
|
||||
|
||||
|
||||
(defvar gdb-python-guile-commands-regexp
|
||||
"python\\|python-interactive\\|pi\\|guile\\|guile-repl\\|gr"
|
||||
"Regexp that matches Python and Guile commands supported by GDB.")
|
||||
|
||||
(defvar gdb-control-commands-regexp
|
||||
(concat
|
||||
"^\\("
|
||||
"comm\\(a\\(n\\(ds?\\)?\\)?\\)?\\|if\\|while"
|
||||
"\\|def\\(i\\(ne?\\)?\\)?\\|doc\\(u\\(m\\(e\\(nt?\\)?\\)?\\)?\\)?\\|"
|
||||
gdb-python-guile-commands-regexp
|
||||
"\\|while-stepping\\|stepp\\(i\\(ng?\\)?\\)?\\|ws\\|actions"
|
||||
"\\|expl\\(o\\(re?\\)?\\)?"
|
||||
"\\)\\([[:blank:]]+\\([^[:blank:]]*\\)\\)*$")
|
||||
(rx bol
|
||||
(or
|
||||
(or "comm" "comma" "comman" "command" "commands"
|
||||
"if" "while"
|
||||
"def" "defi" "defin" "define"
|
||||
"doc" "docu" "docum" "docume" "documen" "document"
|
||||
"while-stepping"
|
||||
"stepp" "steppi" "steppin" "stepping"
|
||||
"ws" "actions"
|
||||
"expl" "explo" "explor" "explore")
|
||||
(group ; group 1: Python and Guile commands
|
||||
(or "python" "python-interactive" "pi" "guile" "guile-repl" "gr")))
|
||||
(? (+ blank)
|
||||
(group ; group 2: command arguments
|
||||
(* nonl)))
|
||||
eol)
|
||||
"Regexp matching GDB commands that enter a recursive reading loop.
|
||||
As long as GDB is in the recursive reading loop, it does not expect
|
||||
commands to be prefixed by \"-interpreter-exec console\".")
|
||||
|
|
@ -2032,15 +2036,13 @@ commands to be prefixed by \"-interpreter-exec console\".")
|
|||
(setq gdb-continuation nil)))
|
||||
;; Python and Guile commands that have an argument don't enter the
|
||||
;; recursive reading loop.
|
||||
(let* ((control-command-p (string-match gdb-control-commands-regexp string))
|
||||
(command-arg (and control-command-p (match-string 3 string)))
|
||||
(python-or-guile-p (string-match gdb-python-guile-commands-regexp
|
||||
string)))
|
||||
(if (and control-command-p
|
||||
(or (not python-or-guile-p)
|
||||
(null command-arg)
|
||||
(zerop (length command-arg))))
|
||||
(setq gdb-control-level (1+ gdb-control-level)))))
|
||||
(when (string-match gdb-control-commands-regexp string)
|
||||
(let ((python-or-guile-p (match-beginning 1))
|
||||
(command-arg (match-string 2 string)))
|
||||
(when (or (not python-or-guile-p)
|
||||
(null command-arg)
|
||||
(zerop (length command-arg)))
|
||||
(setq gdb-control-level (1+ gdb-control-level))))))
|
||||
|
||||
(defun gdb-mi-quote (string)
|
||||
"Return STRING quoted properly as an MI argument.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue