using the minibuffer. The minibuffer's initial contents contain the
standard executable name and options for the debugger, and sometimes
also a guess for the name of the executable file you want to debug.
+For @code{pdb}, @code{perldb}, and @code{guiler}, if the current buffer
+visits a file, pressing @kbd{M-n} (@code{next-history-element})
+in the prompt suggests a full command line including that file name.
Shell wildcards and variables are not allowed in this command line.
Emacs assumes that the first command argument which does not start
with a @samp{-} is the executable file name.
:parent minibuffer-local-map
"C-i" #'comint-dynamic-complete-filename)
-(defun gud-query-cmdline (minor-mode &optional init)
+(defun gud-query-cmdline (minor-mode &optional init default-list)
+ "Prompt for a command to run the debugger.
+MINOR-MODE is the name of the debugger to run. INIT is the initial
+command, before any history is available. DEFAULT-LIST is a list of
+default commands, accessible via \\[next-history-element]."
(let* ((hist-sym (gud-symbol 'history nil minor-mode))
(cmd-name (gud-val 'command-name minor-mode)))
(unless (boundp hist-sym) (set hist-sym nil))
(setq file f)))
file)))))
gud-minibuffer-local-map nil
- hist-sym)))
+ hist-sym
+ default-list)))
(defvar gdb-first-prompt t)
The directory containing the perl program becomes the initial
working directory and source-file directory for your debugger."
(interactive
- (list (gud-query-cmdline 'perldb
- (concat (or (buffer-file-name) "-E 0") " "))))
+ (list
+ (gud-query-cmdline
+ 'perldb
+ (concat (or (buffer-file-name) "-E 0") " ")
+ (when-let* ((file (buffer-file-name)))
+ (list (concat gud-perldb-command-name " "
+ (shell-quote-argument file) " "))))))
(gud-common-init command-line 'gud-perldb-massage-args
'gud-perldb-marker-filter)
The directory containing this file becomes the initial working
directory and source-file directory for your debugger."
(interactive
- (list (gud-query-cmdline 'pdb)))
+ (list (gud-query-cmdline
+ 'pdb nil
+ (when-let* ((file (buffer-file-name)))
+ (list (concat gud-pdb-command-name " "
+ (shell-quote-argument file)))))))
(gud-common-init command-line nil 'gud-pdb-marker-filter)
(setq-local gud-minor-mode 'pdb)
The directory containing FILE becomes the initial working directory
and source-file directory for your debugger."
(interactive
- (list (gud-query-cmdline 'guiler)))
+ (list
+ (gud-query-cmdline
+ 'guiler nil
+ (when-let* ((file (buffer-file-name)))
+ (list (concat gud-guiler-command-name " "
+ (shell-quote-argument file)))))))
(gud-common-init command-line nil 'gud-guiler-marker-filter)
(setq-local gud-minor-mode 'guiler)