branch: externals/realgud commit 50dc7db07d72239ce36a6e5293e85683982686a0 Author: rocky <ro...@gnu.org> Commit: rocky <ro...@gnu.org>
Info ... Document what's known about the backtrace-init infinite loop. Correct and expand install instructions. --- INSTALL.md | 14 ++++++++++++-- realgud/common/buffer/backtrace.el | 7 +++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index cc7f7dd..3990d1c 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,5 +1,15 @@ * Have `test-simple`, `loc-changes`, `cl-lib` and `load-relative` installed. * From inside emacs, evaluate: ```lisp - (compile (format "EMACSLOADPATH=:%s:%s ./autogen.sh" (file-name-directory (locate-library "test-simple.elc")) (file-name-directory (locate-library "realgud.elc")))) -``` + (compile (format "EMACSLOADPATH=:%s:%s:%s:%s ./autogen.sh" (file-name-directory (locate-library "test-simple.elc")) (file-name-directory (locate-library "load-relative.elc")) (file-name-directory (locate-library "loc-changes.elc")) (file-name-directory (locate-library "realgud.elc")) )) + ``` + +After this you should be able to run: + + $ make # byte compile everything + $ make check # run unit tests + $ make install # may need to prefix with sudo + + +Also you can run from the source directory by running `eval-current-buffer` +when inside to top level `realgud.el` (that's the one that is in this folder). diff --git a/realgud/common/buffer/backtrace.el b/realgud/common/buffer/backtrace.el index 448927a..30f3a59 100644 --- a/realgud/common/buffer/backtrace.el +++ b/realgud/common/buffer/backtrace.el @@ -407,6 +407,13 @@ filename, line number, whether the frame is selected as text properties." ;; FIXME: Remove hack that group 1 is always the frame indicator. (frame-indicator (substring stripped-string (match-beginning 1) (match-end 1))) + ;; From https://github.com/realgud/realgud/pull/192 + ;; Each frame of backtrace is searched via string-match + ;; invocation and a position of the current frame is + ;; updated via (setq last-pos (match-end 0)) in the end of + ;; the loop. But somewhere in the body of the loop (I do + ;; not know exactly where), there is another call to + ;; string-match and it messes up all positions. (whole-match-begin (match-beginning 0)) (whole-match-end (match-end 0)) (frame-num-pos)