В 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, вы можете сопоставить, используя подстроку, регулярное выражение и т.д.; Вы можете использовать прогрессивное завершение; вы можете сортировать и циклически выбирать кандидатов; и так далее.
Смотрите документ об этом здесь.