4

emacs内で(を使用してM-x gdb)gdbを実行し、ディレクトリ名をタブで補完しようとすると、スラッシュではなくスペースで補完されます。したがって、たとえば:

(gdb) run/mn

タブ-完了します

(gdb) run /mnt 

タブで完了する必要がある場合

(gdb) run /mnt/

emacsの外部でgdbを実行すると、タブ補完は期待どおりに機能します。

私はdebianテストでgdb7.4.1-debianとemacs23.4.1を実行しています。

あなたがここで私に与えることができるどんな助けでも大いに感謝されるでしょう。これは本当にイライラします!

4

1 に答える 1

3

gud-modegdbcompleteコマンドを呼び出して、可能な完了のリストを取得します。この例では、返されるリストには次のものが含まれます(ファイルシステムに「/ mn」で始まるディレクトリが1つしかない場合)。

(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

于 2012-09-11T01:34:43.027 に答える