Fix conflict between matlab-shell debugging and C++ (or other language) debugging.
Fix conflict between matlab-shell debugging and C++ (or other language) debugging. - matlab-shell debugging previously leveraged gud.el for debugging of *.m files. - C++ debugging also leverages gud.el for debugging. - Only one instance of a gud.el debugger can be active. If you run two, say *.m debugging and C++ debugging. Then you get odd errors such as the ebbreak not being recognized by gdb. To fix these issue, I copied gud.el and made a new namespace "mlgud". I also removed a lot of unused code from mlgud.el, though there's still more that can be removed. Now one can debug *.m files and *.cpp files in one Emacs session.
This commit is contained in:
parent
c945bf5025
commit
45febb409c
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
||||||
|
2022-03-11 John Ciolfi <ciolfi@mathworks.com>
|
||||||
|
|
||||||
|
* matlab-netshell.el, matlab-shell-gud.el, matlab-shell.el, matlab.el, mlgud.el
|
||||||
|
Fix conflict between matlab-shell debugging and C++ (or other language) debugging.
|
||||||
|
- matlab-shell debugging previously leveraged gud.el for debugging of *.m files.
|
||||||
|
- C++ debugging also leverages gud.el for debugging.
|
||||||
|
- Only one instance of a gud.el debugger can be active. If you run two, say
|
||||||
|
*.m debugging and C++ debugging. Then you get odd errors such as the
|
||||||
|
ebbreak not being recognized by gdb.
|
||||||
|
To fix these issue, I copied gud.el and made a new namespace "mlgud". I also
|
||||||
|
removed a lot of unused code from mlgud.el, though there's still more that can
|
||||||
|
be removed. Now one can debug *.m files and *.cpp files in one Emacs session.
|
||||||
|
|
||||||
2021-11-22 Uwe Brauer <oub@mat.ucm.es>
|
2021-11-22 Uwe Brauer <oub@mat.ucm.es>
|
||||||
|
|
||||||
* company-matlab-shell.el: 677 correct a silly typo
|
* company-matlab-shell.el: 677 correct a silly typo
|
||||||
|
|
|
@ -122,7 +122,7 @@ response from some Emacs based request."
|
||||||
;; Interpret the command.
|
;; Interpret the command.
|
||||||
(cond ((string= "init" cmd)
|
(cond ((string= "init" cmd)
|
||||||
;; Make sure GUD bindings are available, but do so in
|
;; Make sure GUD bindings are available, but do so in
|
||||||
;; the netshell buffer so when gud bundings run, they
|
;; the netshell buffer so when mlgud bundings run, they
|
||||||
;; don't stomp on C-c matlab-mode bindings.
|
;; don't stomp on C-c matlab-mode bindings.
|
||||||
(with-current-buffer (process-buffer proc)
|
(with-current-buffer (process-buffer proc)
|
||||||
(matlab-shell-mode-gud-enable-bindings))
|
(matlab-shell-mode-gud-enable-bindings))
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -31,7 +31,7 @@
|
||||||
(require 'server)
|
(require 'server)
|
||||||
|
|
||||||
(eval-and-compile
|
(eval-and-compile
|
||||||
(require 'gud)
|
(require 'mlgud)
|
||||||
(require 'shell)
|
(require 'shell)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ Try C-h f matlab-shell RET"))
|
||||||
;;; PROCESS FILTERS & SENTINEL
|
;;; PROCESS FILTERS & SENTINEL
|
||||||
;;
|
;;
|
||||||
;; These are wrappers around the GUD filters so we can pre and post process
|
;; These are wrappers around the GUD filters so we can pre and post process
|
||||||
;; decisions by comint and gud.
|
;; decisions by comint and mlgud.
|
||||||
(defvar matlab-shell-capturetext-start-text "<EMACSCAP>"
|
(defvar matlab-shell-capturetext-start-text "<EMACSCAP>"
|
||||||
"Text used as simple signal for text that should be captured.")
|
"Text used as simple signal for text that should be captured.")
|
||||||
(defvar matlab-shell-capturetext-end-text "</EMACSCAP>"
|
(defvar matlab-shell-capturetext-end-text "</EMACSCAP>"
|
||||||
|
@ -635,7 +635,7 @@ STRING is the recent output from PROC to be filtered."
|
||||||
matlab-shell-flush-accumulation-buffer nil))
|
matlab-shell-flush-accumulation-buffer nil))
|
||||||
|
|
||||||
(with-current-buffer buff
|
(with-current-buffer buff
|
||||||
(gud-filter proc string))
|
(mlgud-filter proc string))
|
||||||
|
|
||||||
;; In case things get switched around on us
|
;; In case things get switched around on us
|
||||||
(with-current-buffer buff
|
(with-current-buffer buff
|
||||||
|
@ -656,7 +656,7 @@ PROC is the function which experienced a change in state.
|
||||||
STRING is a description of what happened."
|
STRING is a description of what happened."
|
||||||
(let ((buff (process-buffer proc)))
|
(let ((buff (process-buffer proc)))
|
||||||
(with-current-buffer buff
|
(with-current-buffer buff
|
||||||
(gud-sentinel proc string))))
|
(mlgud-sentinel proc string))))
|
||||||
|
|
||||||
;;; COMINT support fcns
|
;;; COMINT support fcns
|
||||||
;;
|
;;
|
||||||
|
@ -1933,8 +1933,8 @@ If DEBUG is non-nil, then setup GUD debugging features."
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(forward-line (1- (string-to-number el)))
|
(forward-line (1- (string-to-number el)))
|
||||||
(when debug
|
(when debug
|
||||||
(setq gud-last-frame (cons (buffer-file-name) (string-to-number el)))
|
(setq mlgud-last-frame (cons (buffer-file-name) (string-to-number el)))
|
||||||
(gud-display-frame))
|
(mlgud-display-frame))
|
||||||
(setq ec (string-to-number ec))
|
(setq ec (string-to-number ec))
|
||||||
(if (> ec 0) (forward-char (1- ec)))))
|
(if (> ec 0) (forward-char (1- ec)))))
|
||||||
|
|
||||||
|
@ -1953,7 +1953,7 @@ If DEBUG is non-nil, then setup GUD debugging features."
|
||||||
(matlab-find-other-window-file-line-column ef el ec debug)))
|
(matlab-find-other-window-file-line-column ef el ec debug)))
|
||||||
((string-match "^matlab:*\\(.*\\)$" url)
|
((string-match "^matlab:*\\(.*\\)$" url)
|
||||||
(process-send-string
|
(process-send-string
|
||||||
(get-buffer-process gud-comint-buffer)
|
(get-buffer-process mlgud-comint-buffer)
|
||||||
(concat (substring url (match-beginning 1) (match-end 1)) "\n")))))
|
(concat (substring url (match-beginning 1) (match-end 1)) "\n")))))
|
||||||
|
|
||||||
(defun matlab-shell-last-error ()
|
(defun matlab-shell-last-error ()
|
||||||
|
@ -2413,12 +2413,13 @@ Return the name of the temporary file."
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(dolist (F functions)
|
(dolist (F functions)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
;; Copy all local functions to script.
|
(when (re-search-forward (semantic-tag-name F) nil t)
|
||||||
(let ((ft (matlab-semantic-tag-text F orig)))
|
;; Found, copy it in.
|
||||||
(goto-char (point-max))
|
(let ((ft (matlab-semantic-tag-text F orig)))
|
||||||
(insert "% Copy of " (semantic-tag-name F) "\n\n")
|
(goto-char (point-max))
|
||||||
(insert ft)
|
(insert "% Copy of " (semantic-tag-name F) "\n\n")
|
||||||
(insert "\n%%\n")))
|
(insert ft)
|
||||||
|
(insert "\n%%\n"))))
|
||||||
)
|
)
|
||||||
|
|
||||||
;; Save buffer, and setup ability to run this new script.
|
;; Save buffer, and setup ability to run this new script.
|
||||||
|
@ -2460,31 +2461,31 @@ Argument FNAME specifies if we should echo the region to the command line."
|
||||||
|
|
||||||
;;; matlab-shell.el ends here
|
;;; matlab-shell.el ends here
|
||||||
|
|
||||||
;; LocalWords: el Ludlam zappo compat comint gud Slience defcustom el cb
|
;; LocalWords: el Ludlam zappo compat comint mlgud Slience defcustom el cb
|
||||||
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
|
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
|
||||||
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
|
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
|
||||||
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
|
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
|
||||||
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples Ludlam zappo
|
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples Ludlam zappo
|
||||||
;; LocalWords: compat comint gud Slience defcustom nodesktop defface emacscd
|
;; LocalWords: compat comint mlgud Slience defcustom nodesktop defface emacscd
|
||||||
;; LocalWords: autostart netshell emacsclient errorscanning cco defun setq el
|
;; LocalWords: autostart netshell emacsclient errorscanning cco defun setq el
|
||||||
;; LocalWords: Keymaps keymap kbd featurep fboundp subprocess online EDU
|
;; LocalWords: Keymaps keymap kbd featurep fboundp subprocess online EDU
|
||||||
;; LocalWords: postoutput progn subjob eol mlfile emacsinit msbn pc Thx Ludlam
|
;; LocalWords: postoutput progn subjob eol mlfile emacsinit msbn pc Thx Ludlam
|
||||||
;; LocalWords: Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT dolist
|
;; LocalWords: Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT dolist
|
||||||
;; LocalWords: overlaystack mref deref errortext ERRORTXT Missmatched zappo
|
;; LocalWords: overlaystack mref deref errortext ERRORTXT Missmatched zappo
|
||||||
;; LocalWords: shellerror dbhotlink realfname aset buf noselect tcp auth ef
|
;; LocalWords: shellerror dbhotlink realfname aset buf noselect auth ef
|
||||||
;; LocalWords: dbhotlinks compat comint gud Slience defcustom capturetext
|
;; LocalWords: dbhotlinks compat comint mlgud Slience defcustom capturetext
|
||||||
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
|
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
|
||||||
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
|
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
|
||||||
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
|
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
|
||||||
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT
|
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT
|
||||||
;; LocalWords: dolist overlaystack mref deref errortext ERRORTXT Missmatched
|
;; LocalWords: dolist overlaystack mref deref errortext ERRORTXT Missmatched
|
||||||
;; LocalWords: shellerror dbhotlink realfname aset buf noselect tcp auth ef
|
;; LocalWords: shellerror dbhotlink realfname aset buf noselect auth ef
|
||||||
;; LocalWords: dbhotlinks dbhlcmd endprompt mello pmark memq promptend
|
;; LocalWords: dbhotlinks dbhlcmd endprompt mello pmark memq promptend
|
||||||
;; LocalWords: numchars integerp emacsdocomplete mycmd ba nreverse EMACSCAP
|
;; LocalWords: numchars integerp emacsdocomplete mycmd ba nreverse EMACSCAP
|
||||||
;; LocalWords: emacsdocompletion subfield fil byteswap stringp cbuff mapcar bw
|
;; LocalWords: emacsdocompletion subfield fil byteswap stringp cbuff mapcar bw
|
||||||
;; LocalWords: FCN's alist BUILTINFLAG dired bol bobp numberp lattr princ
|
;; LocalWords: FCN's alist BUILTINFLAG dired bol bobp numberp lattr princ
|
||||||
;; LocalWords: minibuffer fn matlabregex stackexchange doesnt lastcmd Emacsen
|
;; LocalWords: minibuffer fn matlabregex stackexchange doesnt lastcmd Emacsen
|
||||||
;; LocalWords: notimeout stacktop eltest testme localfcn LF mlx meth fileref
|
;; LocalWords: notimeout stacktop eltest testme localfcn LF meth fileref
|
||||||
;; LocalWords: funcall ec basec sk ignoredups boundp nondirectory edir sexp iq
|
;; LocalWords: funcall ec basec sk ignoredups boundp nondirectory edir sexp iq
|
||||||
;; LocalWords: Fixup mapc ltype noshow emacsrunregion cnt commandline elipsis
|
;; LocalWords: Fixup mapc ltype noshow emacsrunregion cnt commandline elipsis
|
||||||
;; LocalWords: newf bss fname nt initcmd nsa ecc ecca clientcmd buffname
|
;; LocalWords: newf bss fname nt initcmd nsa ecc ecca clientcmd buffname
|
||||||
|
|
28
matlab.el
28
matlab.el
|
@ -594,25 +594,25 @@ point, but it will be restored for them."
|
||||||
["Edit File (toggle read-only)" matlab-shell-gud-mode-edit
|
["Edit File (toggle read-only)" matlab-shell-gud-mode-edit
|
||||||
:help "Exit MATLAB debug minor mode to edit without exiting MATLAB's K>> prompt."
|
:help "Exit MATLAB debug minor mode to edit without exiting MATLAB's K>> prompt."
|
||||||
:visible gud-matlab-debug-active ]
|
:visible gud-matlab-debug-active ]
|
||||||
["Add Breakpoint (ebstop in FILE at point)" gud-break
|
["Add Breakpoint (ebstop in FILE at point)" mlgud-break
|
||||||
:active (matlab-shell-active-p)
|
:active (matlab-shell-active-p)
|
||||||
:help "When MATLAB debugger is active, set break point at current M-file point"]
|
:help "When MATLAB debugger is active, set break point at current M-file point"]
|
||||||
["Remove Breakpoint (ebclear in FILE at point)" gud-remove
|
["Remove Breakpoint (ebclear in FILE at point)" mlgud-remove
|
||||||
:active (matlab-shell-active-p)
|
:active (matlab-shell-active-p)
|
||||||
:help "Show all active breakpoints in a separate buffer." ]
|
:help "When MATLAB debugger is active, remove break point in FILE at point." ]
|
||||||
["List Breakpoints (ebstatus)" gud-list-breakpoints
|
["List Breakpoints (ebstatus)" mlgud-list-breakpoints
|
||||||
:active (matlab-shell-active-p)
|
:active (matlab-shell-active-p)
|
||||||
:help "List active breakpoints."]
|
:help "List active breakpoints."]
|
||||||
["Step (dbstep in)" gud-step
|
["Step (dbstep in)" mlgud-step
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, step into line"]
|
:help "When MATLAB debugger is active, step into line"]
|
||||||
["Next (dbstep)" gud-next
|
["Next (dbstep)" mlgud-next
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, step one line"]
|
:help "When MATLAB debugger is active, step one line"]
|
||||||
["Finish function (dbstep out)" gud-finish
|
["Finish function (dbstep out)" mlgud-finish
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, run to end of function"]
|
:help "When MATLAB debugger is active, run to end of function"]
|
||||||
["Continue (dbcont)" gud-cont
|
["Continue (dbcont)" mlgud-cont
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, run to next break point or finish"]
|
:help "When MATLAB debugger is active, run to next break point or finish"]
|
||||||
["Evaluate Expression" matlab-shell-gud-show-symbol-value
|
["Evaluate Expression" matlab-shell-gud-show-symbol-value
|
||||||
|
@ -621,14 +621,14 @@ point, but it will be restored for them."
|
||||||
["Show Stack" mlg-show-stack
|
["Show Stack" mlg-show-stack
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, show the stack in a buffer."]
|
:help "When MATLAB debugger is active, show the stack in a buffer."]
|
||||||
;;; Advertise these more if we can get them working w/ gud's frame show.
|
;;; Advertise these more if we can get them working w/ mlgud's frame show.
|
||||||
;;; ["Up Call Stack (dbup)" gud-up
|
;;; ["Up Call Stack (dbup)" mlgud-up
|
||||||
;;; :active gud-matlab-debug-active
|
;;; :active gud-matlab-debug-active
|
||||||
;;; :help "When MATLAB debugger is active and at break point, go up a frame"]
|
;;; :help "When MATLAB debugger is active and at break point, go up a frame"]
|
||||||
;;; ["Down Call Stack (dbdown)" gud-down
|
;;; ["Down Call Stack (dbdown)" mlgud-down
|
||||||
;;; :active gud-matlab-debug-active
|
;;; :active gud-matlab-debug-active
|
||||||
;;; :help "When MATLAB debugger is active and at break point, go down a frame"]
|
;;; :help "When MATLAB debugger is active and at break point, go down a frame"]
|
||||||
["Quit debugging (dbquit)" gud-stop-subjob
|
["Quit debugging (dbquit)" mlgud-stop-subjob
|
||||||
:active gud-matlab-debug-active
|
:active gud-matlab-debug-active
|
||||||
:help "When MATLAB debugger is active, stop debugging"]
|
:help "When MATLAB debugger is active, stop debugging"]
|
||||||
)
|
)
|
||||||
|
@ -3243,10 +3243,10 @@ desired. Optional argument FAST is not used."
|
||||||
;;; matlab.el ends here
|
;;; matlab.el ends here
|
||||||
|
|
||||||
;; LocalWords: el Wette mwette caltech edu Ludlam eludlam defconst online mfiles ebstop ebclear
|
;; LocalWords: el Wette mwette caltech edu Ludlam eludlam defconst online mfiles ebstop ebclear
|
||||||
;; LocalWords: compat easymenu defcustom CASEINDENT COMMANDINDENT sexp defun ebstatus mlg gud's
|
;; LocalWords: compat easymenu defcustom CASEINDENT COMMANDINDENT sexp defun ebstatus mlg mlgud's
|
||||||
;; LocalWords: mmode setq progn sg Fns Alist elipsis vf functionname vers subjob flb fle elisp
|
;; LocalWords: mmode setq progn sg Fns Alist elipsis vf functionname vers subjob flb fle elisp
|
||||||
;; LocalWords: minibuffer featurep fboundp facep zmacs defface cellbreak bcend lastcompute noblock
|
;; LocalWords: minibuffer featurep fboundp facep zmacs defface cellbreak bcend lastcompute noblock
|
||||||
;; LocalWords: cellbreaks overline keymap torkel ispell gud allstring strchar decl lcbounds setcar
|
;; LocalWords: cellbreaks overline keymap torkel ispell mlgud allstring strchar decl lcbounds setcar
|
||||||
;; LocalWords: bs eu bc ec searchlim eol charvec Matchers ltype cdr if'd setcdr bcwrapped
|
;; LocalWords: bs eu bc ec searchlim eol charvec Matchers ltype cdr if'd setcdr bcwrapped
|
||||||
;; LocalWords: uicontext setcolor mld keywordlist mapconcat pragmas Classdefs
|
;; LocalWords: uicontext setcolor mld keywordlist mapconcat pragmas Classdefs
|
||||||
;; LocalWords: dem Za Imenu imenu alist prog reindent unindent boundp fn
|
;; LocalWords: dem Za Imenu imenu alist prog reindent unindent boundp fn
|
||||||
|
|
Loading…
Reference in New Issue