В emacs, сделать dabbrev-expand только частичными завершениями, такими как минибуфер-расширить?

В настоящее время в режиме C, если я начну вводить такие слова, как:

namespace_module_

dabbrev-expand будет проходить через миллион полных дополнений этого идентификатора...

namespace_module_typea_foo <TAB>
namespace_module_typea_bar <TAB>
namespace_module_typea_goo_start <TAB>
...

Со многими возможными словами, утомительно перемещаться по всем этим. Однако завершение минибуфера, похоже, работает по-другому. Завершается только до первой разницы среди возможных совпадений. Это было бы завершено до (при условии, что не было других совпадений с чем-то вроде typeb_ и т. Д.):

namespace_module_typea_

На данный момент мне нужно только ввести один символ, чтобы устранить неоднозначность, и очень вероятно, что следующее предположение автозаполнения будет правильным. Можно ли использовать этот режим завершения в буфере с dabbrev-expand? Или хиппи-экспансия? Или даже сосульки? Я не смог ничего найти.

2 ответа

Решение

Ты пытался dabbrev-completion (связан с C-M-/ по умолчанию)? Это должно делать только то, что вы просите.

Да, icicle-dabbrev-completion, который по умолчанию связан с C-M-/ (замена dabbrev-completion) дает тебе что dabbrev-completion дает, но с функциями завершения Сосульки, когда есть более одного завершения. IOW, вы можете сопоставить, используя подстроку, регулярное выражение и т.д.; Вы можете использовать прогрессивное завершение; вы можете сортировать и циклически выбирать кандидатов; и так далее.

Смотрите документ об этом здесь.

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