Subject: bug#73687: closed (Re: bug#73687: 31.0.50; Stop highlighting current line when debugee is not stopped)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 12 Oct 2024 12:26:04 +0000

Your bug report

#73687: 31.0.50; Stop highlighting current line when debugee is not stopped

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
73687: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73687
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#73687: 31.0.50; Stop highlighting current line when debugee is not stopped
From: Eli Zaretskii <[email-masked]>
To: Diancheng Wang <[email-masked]>
Cc: [email-masked]
Date: Sat, 12 Oct 2024 15:16:54 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Diancheng Wang <[email-masked]>
> Date: Tue, 08 Oct 2024 11:11:24 +0800
> 
> When highlighting current line is enabled with
> gud-highlight-current-line-overlay, the highlighting current line is always
> enabled even debugee is running. Attachment is a patch to fix it. The patch
> introduces a new function 'gud-hide-current-line-indicator', then call it
> when debugee is running in gdb.el.

Thanks, installed on the master branch, and closing the bug.

Subject: 31.0.50; Stop highlighting current line when debugee is not stopped
From: Diancheng Wang <[email-masked]>
To: [email-masked]
Date: Tue, 08 Oct 2024 11:11:24 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

When highlighting current line is enabled with
gud-highlight-current-line-overlay, the highlighting current line is always
enabled even debugee is running. Attachment is a patch to fix it. The patch
introduces a new function 'gud-hide-current-line-indicator', then call it
when debugee is running in gdb.el.

diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 2981965ee0c..6a9735fbc25 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -2699,7 +2699,8 @@ gdb-starting
   (gdb-force-mode-line-update
    (propertize gdb-inferior-status 'face font-lock-type-face))
   (setq gdb-active-process t)
-  (setq gud-running t))
+  (setq gud-running t)
+  (gud-hide-current-line-indicator nil))
 
 ;; -break-insert -t didn't give a reason before gdb 6.9
 
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 53a7d78328c..a4e611277e4 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2949,11 +2949,19 @@ gud-highlight-current-line-overlay
   "Overlay created for `gud-highlight-current-line'.
 It is nil if not yet present.")
 
+(defun gud-hide-current-line-indicator(destroy-overlay)
+  "Stop displaying arrow and highlighting current line in a source file."
+  ;; Stop displaying an arrow in a source file.
+  (setq gud-overlay-arrow-position nil)
+  ;; And any highlight overlays.
+  (when gud-highlight-current-line-overlay
+    (delete-overlay gud-highlight-current-line-overlay)
+    (if destroy-overlay
+    (setq gud-highlight-current-line-overlay nil))))
+
 (defun gud-sentinel (proc msg)
   (cond ((null (buffer-name (process-buffer proc)))
 	 ;; buffer killed
-	 ;; Stop displaying an arrow in a source file.
-	 (setq gud-overlay-arrow-position nil)
 	 (set-process-buffer proc nil)
 	 (if (and (boundp 'speedbar-initial-expansion-list-name)
 		  (string-equal speedbar-initial-expansion-list-name "GUD"))
@@ -2963,12 +2971,9 @@ gud-sentinel
 	     (gdb-reset)
 	   (gud-reset)))
 	((memq (process-status proc) '(signal exit))
-	 ;; Stop displaying an arrow in a source file.
-	 (setq gud-overlay-arrow-position nil)
-         ;; And any highlight overlays.
-         (when gud-highlight-current-line-overlay
-           (delete-overlay gud-highlight-current-line-overlay)
-           (setq gud-highlight-current-line-overlay nil))
+
+         (gud-hide-current-line-indicator t)
+
 	 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
 		   'gdbmi)
 	     (gdb-reset)