LINUX.ORG.RU

[emacs] Как затолкать все popup в минибуфер?


0

1

Cобссно, сабж. Есть всякие автодополнения, но в некоторых модах они выскакивают в виде popup-окон, что делит на ноль всё удобство, ибо переход по линиям в popup не работает, а мышь тащить как-то не комильфо уже. Как форсировать появление подсказки в минибуфере?

Deleted

Надо найти какие функции вызывают попап-окно и переопределить их (например, x-popup-dialog). Если подскажите какой конкретно мод вас достает, тогда можно будет подсказать конкретнее.

provaton ★★★★★ ()
Ответ на: комментарий от Zubok

Спасибо, установил сосульки, сегодня покопаю.

Deleted ()
Ответ на: комментарий от provaton

nxhtml-mode меня достаёт. Его дополнение по дефолту висит на M-tab.

Вообще для тегов и конструкций xhtml планирую настроить Abbrev, или у меня ещё есть snippet для обволакивания тегов угловыми скобками. А вот PHP-шные функции не добиваются по M-tab вообще. По M-/ дополняются, но для программирования не совсем то и почему-то всегда автоматом, без вариантов (что особенно плохо), но в зависимости от наличествующего кол-ва букв для «угадывания». Для замены дополнений к PHP есть что?

Deleted ()

Забинди куда-нибудь delete-other-windows и не парься.

o ()
Ответ на: комментарий от Deleted

По M-/ дополняются

Ага, это hippie-expand. Не совсем то что нужно.

Тебе нужен etags. Попробуй и расскажи потом, как оно с php дружит.

o ()
Ответ на: комментарий от Zubok

Во-первых, после создания etags дополнения по M-/ появились и работают без popup окон, доставлят. Icicles тоже ведь работают на etags, просто расширяют интерфейс стандартного etags, да?

Deleted ()
Ответ на: комментарий от o

А не пора ли перевести топик в WebDev?

Мм… По умолчанию дружит весьма плохо. Однако после допила можно порадоваться на моментальное автодополнение функций. (Кабы ещё параметры подсказывало, был бы вообще шик). Итак, список действий:

Составим список тегов для etags

find . -name '*.php' -exec etags -a {} \;
Теперь M-x visit-tags-table и у нас заработало автодополнение для незнакомых ранее слов. Etags хорошо работает с определениями define и function, а вот классы в зависимости от оформления. Потому что заточен под Си, но вроде были какие-то ключи для etags, дополняющие поддержку классов Java etc., однако в текущем man etags их нет.

Но это ущербно — сидеть без дополнения встроенных в PHP функций. Поэтому делаем фальшивый файл с перечислением функций, и скармливаем его etags.
<?

/*
 * get_php_func_list.php
 * This script generates a list of internal php functions for etags. 
 */

$functions = get_defined_functions();
sort($functions['internal']);
# Maybe it will be useful but not today
#sort($functions['user']);

# Print as array, pretty view for a human
#print_r($functions);
# Print as list of C-like functions, pretty view for etags.
foreach ($functions['internal'] as &$value)
    echo 'function ',$value," () {}\n";
?>
Вызываем его и кладём вывод на место, т. е. в корень, где лежит TAGS.
/usr/bin/php-cgi ./get_php_func_list.php > ~/srv/domain.org/htdocs/php_internal_func.list

После этого обновляем тэги.
find . -name '*.list' -exec etags -a {} \;
M-x visit-tags-table, конечно же yes и можем набрать mysql и убедиться (M-tab), что дополнение встроенных функций наконец работает.

Странно только что хотя php-mode понимает etags, font-lock по-прежнему отображает неизвестные ему константы как варнинги. Если кто знает, как ему это объяснить, буду рад увидеть.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.