Emacs GDB Tab-завершает каталог с пробелом вместо /

Когда я запускаю GDB в Emacs (с M-x gdb), и я пытаюсь завершить имена каталогов, они заканчиваются пробелом, а не косой чертой. Так, например:

(gdb) run/mn

завершает до

(gdb) run /mnt 

когда он должен завершить до

(gdb) run /mnt/

Если я запускаю gdb вне emacs, завершение табуляции работает как положено.

Я использую gdb 7.4.1-debian и emacs 23.4.1 для тестирования Debian.

Любая помощь, которую вы могли бы оказать мне, была бы очень признательна; это действительно раздражает!

1 ответ

Решение

gud-mode извлекает список возможных завершений, вызывая GDBcomplete команда. В вашем примере возвращаемый список будет содержать следующее (при условии, что в вашей файловой системе есть только один каталог, начинающийся с "/mn"):

(run /mnt)

Первая часть каждой записи в возвращенном списке обрезается, так что оставшийся полный список

(/mnt)

Как видите, эта запись возвращена GDB complete В команде уже отсутствует косая черта. Ваша единственная надежда исправить это будет либо исправить патч GDBcomplete команда, или для исправления Emacs' gud-modeкаким-то образом обнаруживая, что завершенное слово является каталогом, а затем добавляя косую черту (и подавляя автоматическую вставку символа пробела).

Но, конечно, вы можете просто привязать клавишу TAB к другой функции завершения, потенциально той, которая откатывается по умолчанию gud-gdb-complete-command, но, возможно, делает другой вид завершения, когда это необходимо.

Для этого попробуйте добавить следующее в ваш файл.emacs:

(defun my-gud-gdb-setup ()
  (define-key (current-local-map) "\t" 'my-gud-gdb-complete-command))

(defun my-gud-gdb-complete-command (&optional COMMAND PREDICATE FLAGS)
  (interactive)
  (unless (comint-dynamic-complete-filename)
    (gud-gdb-complete-command COMMAND PREDICATE FLAGS)))

(add-hook 'gdb-mode-hook 'my-gud-gdb-setup)

Этот код связывает новую функцию с клавишей TAB, которая сначала пытается раскрыть текущее слово как файл, и только в случае неудачи вызывает значение по умолчанию gud-gdb-complete-command,

Другие вопросы по тегам