@@ -2190,6 +2190,7 @@ it from the list."
2190
2190
(define-key map (kbd " <f6>" ) #'gdb-stop )
2191
2191
(define-key map (kbd " <f8>" ) #'gdb-watcher-add )
2192
2192
(define-key map (kbd " <C-f8>" ) #'gdb-eval-expression )
2193
+ (define-key map (kbd " <S-f8>" ) #'gdb-eval-expression-dwim )
2193
2194
(define-key map (kbd " <f9>" ) #'gdb-toggle-breakpoint )
2194
2195
(define-key map (kbd " <f10>" ) #'gdb-next )
2195
2196
(define-key map (kbd " <M-f10>" ) #'gdb-next-instruction )
@@ -2383,12 +2384,22 @@ If ARG is non-nil, you may modify the watcher expression before creation."
2383
2384
(interactive )
2384
2385
(gdb-create-watcher-from-switch t ))
2385
2386
2387
+ (defun gdb-eval-expression-dwim ()
2388
+ " Evaluate a region if it is active, otherwise evaluate symbol at point."
2389
+ (interactive )
2390
+ (if (use-region-p )
2391
+ (gdb--eval-expression (buffer-substring-no-properties (region-beginning ) (region-end )))
2392
+ (gdb--eval-expression (thing-at-point 'symbol ))))
2393
+
2386
2394
(defun gdb-eval-expression ()
2387
2395
" Evaluate expression once and print result."
2388
2396
(interactive )
2397
+ (gdb--eval-expression (gdb--read-line " Expression to evaluate: " )))
2398
+
2399
+ (defun gdb--eval-expression (expression )
2400
+ " Evaluate given expression and print result."
2389
2401
(gdb--with-valid-session
2390
2402
(let* ((frame (or (gdb--session-selected-frame session) (user-error " No frame is selected" )))
2391
- (expression (gdb--read-line " Expression to evaluate: " ))
2392
2403
result)
2393
2404
(when expression
2394
2405
(setq result (gdb--get-data (concat " -data-evaluate-expression " (gdb--escape-argument expression))
0 commit comments