Como personalizar o nome do executável ao executar o gud-gdb
Pergunta
Estou usando o emacs 24.3.1 para escrever programas (no modo C e C++).
Depois de compilar o buffer atual, executo o comando abaixo:MX gud-gdb.O Emacs fornece um prompt como abaixo:programa gdb --nome completo
No entanto, às vezes o nome "prog" não é igual ao nome do executável compilado do buffer atual.por exemplo.Concluí cinco programas prog1, prog2,...prog5 e atualmente está trabalhando no prog6.Mas Mx gud-gdb me dá gdb --fullname prog5.(Eu quero prog6 em vez disso.)
Há uma maneira de corrigir isto?Especificamente, "correto" significa forçar o gud-gdb a usar o nome do buffer atual (sem sufixo) como nome do programa.
Desde já, obrigado.
Solução
Acho que o emacs usa uma heurística (baseada em qual arquivo executável é mais recente ou algo parecido) para descobrir o programa padrão a oferecer.
Se suas preferências forem muito específicas, você poderá definir e usar esta função:
(defun my-gud-gdb ()
(interactive)
(gud-gdb (concat "gdb --fullname "
(file-name-sans-extension (buffer-file-name (current-buffer))))))
Esta função executará gdb em um arquivo com o mesmo nome do arquivo que você está editando sem extensão.
Outras dicas
gud-query-cmdline
aceita filename
como um argumento opcional, que ainda não foi servido.
O patch abaixo deve fornecer isso.
Certifique-se de que as permissões de arquivo estejam definidas como executáveis
--- gud.el Sun Mar 17 12:52:42 2013
+++ gud.el Tue Jun 3 10:06:11 2014
@@ -716,7 +716,7 @@
"Run gdb on program FILE in buffer *gud-FILE*.
The directory containing FILE becomes the initial working
directory and source-file directory for your debugger."
- (interactive (list (gud-query-cmdline 'gud-gdb)))
+ (interactive (list (gud-query-cmdline 'gud-gdb (and (file-executable-p (buffer-file-name))(buffer-file-name)))))
(when (and gud-comint-buffer
(buffer-name gud-comint-buffer)