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.

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top