@@ -2190,6 +2190,7 @@ it from the list."
21902190 (define-key map (kbd " <f6>" ) #'gdb-stop )
21912191 (define-key map (kbd " <f8>" ) #'gdb-watcher-add )
21922192 (define-key map (kbd " <C-f8>" ) #'gdb-eval-expression )
2193+ (define-key map (kbd " <S-f8>" ) #'gdb-eval-expression-dwim )
21932194 (define-key map (kbd " <f9>" ) #'gdb-toggle-breakpoint )
21942195 (define-key map (kbd " <f10>" ) #'gdb-next )
21952196 (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."
23832384 (interactive )
23842385 (gdb-create-watcher-from-switch t ))
23852386
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+
23862394(defun gdb-eval-expression ()
23872395 " Evaluate expression once and print result."
23882396 (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."
23892401 (gdb--with-valid-session
23902402 (let* ((frame (or (gdb--session-selected-frame session) (user-error " No frame is selected" )))
2391- (expression (gdb--read-line " Expression to evaluate: " ))
23922403 result)
23932404 (when expression
23942405 (setq result (gdb--get-data (concat " -data-evaluate-expression " (gdb--escape-argument expression))
0 commit comments