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

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

[elpa] externals/realgud b5ee91c 51/72: Introduce realgud-update-hook an


From: Stefan Monnier
Subject: [elpa] externals/realgud b5ee91c 51/72: Introduce realgud-update-hook and add locals auto-refresh
Date: Fri, 26 Mar 2021 22:49:11 -0400 (EDT)

branch: externals/realgud
commit b5ee91c826694fb74e2d102162c2b172310e26c7
Author: 813 <813gan@protonmail.com>
Commit: 813 <813gan@protonmail.com>

    Introduce realgud-update-hook and add locals auto-refresh
---
 realgud/common/buffer/locals.el | 15 ++++++++++++---
 realgud/common/custom.el        |  5 +++++
 realgud/common/track.el         |  2 ++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/realgud/common/buffer/locals.el b/realgud/common/buffer/locals.el
index 8f4aa8f..33ca741 100644
--- a/realgud/common/buffer/locals.el
+++ b/realgud/common/buffer/locals.el
@@ -29,6 +29,7 @@
 (cl-defstruct realgud-locals-info
   "debugger object/structure specific to a (top-level) program to be debugged."
   (cmdbuf    nil)  ;; buffer of the associated debugger process
+  (srcbuf    nil)  ;; associated source buffer
   )
 (make-variable-buffer-local (defvar realgud-locals-info))
 
@@ -65,19 +66,27 @@ ARGS - arguments for command"
 
 (defun realgud-locals-init ()
   "Create locals buffer and fill it for first time."
-  (let ((cmdbuf (realgud-get-cmdbuf)))
+  (let ((cmdbuf (realgud-get-cmdbuf))
+       (srcbuf (realgud-get-srcbuf)))
     (with-current-buffer-safe cmdbuf
       (let ((locals-buffer (get-buffer-create
                            (format "*locals %s*"
                                    (realgud-get-buffer-base-name
                                     (buffer-name))))))
        (realgud-cmdbuf-info-locals-buf= locals-buffer)
+       (with-current-buffer-safe (realgud-get-srcbuf)
+         (add-hook 'realgud-update-hook 'realgud:window-locals nil t) )
        (with-current-buffer locals-buffer
-         (realgud-locals-mode)
+         (realgud-locals-mode) ; It kills local variables
+         (add-hook 'kill-buffer-hook
+                   (lambda ()
+                     (with-current-buffer-safe (realgud-sget 'locals-info 
'srcbuf)
+                       (remove-hook 'realgud-update-hook 
'realgud:window-locals t) )) nil t)
          (setq realgud-buffer-type 'locals)
          (set (make-local-variable 'realgud-locals-info)
               (make-realgud-locals-info
-               :cmdbuf cmdbuf)) )
+               :cmdbuf cmdbuf
+               :srcbuf srcbuf)) )
        (realgud-locals-register-reload)
        (realgud-locals-insert) ))))
 
diff --git a/realgud/common/custom.el b/realgud/common/custom.el
index d429b23..771bc31 100644
--- a/realgud/common/custom.el
+++ b/realgud/common/custom.el
@@ -25,4 +25,9 @@ A setting of `nil` allows editing, but Short-Key-mode use may 
inhibit this."
   :type 'boolean
   :group 'realgud)
 
+(defcustom realgud-update-hook nil
+  "List of hooks to be run when debugger hits breakpoint"
+  :type 'hook
+  :group 'realgud)
+
 (provide-me "realgud-")
diff --git a/realgud/common/track.el b/realgud/common/track.el
index 11b6b44..6d09d3a 100644
--- a/realgud/common/track.el
+++ b/realgud/common/track.el
@@ -435,6 +435,8 @@ encountering a new loc."
            (realgud-cmdbuf-info-in-srcbuf?= nil))
          )
        ))
+  (with-current-buffer-safe (realgud-get-srcbuf)
+    (run-hooks 'realgud-update-hook) )
   )
 
 (defun realgud-track-loc(text cmd-mark &optional opt-regexp opt-file-group



reply via email to

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