Я работаю над IntelliSense или возможностью дополнения кода для C #.
Пока все хорошо. Прямо сейчас у меня есть базовое завершение работы. Есть 2 способа запросить завершение. Первый цикл через все потенциальные совпадения. Второй представляет всплывающее меню матчей. Работает для типов:
альтернативный текст http://i44.tinypic.com/afbl2o.jpg
А также для локальных переменных и переменных экземпляра:
альтернативный текст http://i40.tinypic.com/2pqul2u.jpg
Я сталкиваюсь с двумя проблемами с x-popup-menu:
-
всплывающее меню может расширяться, чтобы использовать все доступное пространство экрана, когда количество вариантов велико. Буквально он может занимать весь экран и скрывать все остальное, включая все окно emacs и все остальные окна.
Глупая вещь, это прокрутка. Сначала он расширяется, чтобы использовать все доступное пространство, затем он также становится прокручиваемым. Похоже, было бы целесообразно расширить его до определенной точки, а затем стать прокручиваемым, а не расширяться, чтобы занять все доступное пространство.
Есть ли способ ограничить максимальный размер x-popup-меню?
-
Чтобы указать позицию всплывающего меню, я передаю позицию, а x-popup-menu использует ее как * середину *, а не левую часть верхней строки меню. Почему средний? кто знает.
Это означает, что если я укажу (40,60) для расположения меню, а ширина меню составит 100 пикселей, меню выйдет за левую границу окна emacs. Вы можете увидеть это на втором изображении выше.
Если бы я знал, насколько широким будет всплывающее окно, прежде чем указывать позицию, я мог бы компенсировать это. Но я не
Есть ли обходной путь? Есть ли способ заставить x-popup-menu занять позицию слева, а не посередине?
Приложение: Документ для x-popup-menu
x-popup-menu - это встроенная функция в `C исходном коде '.
(x-popup-menu POSITION MENU)
Откройте меню колоды карт и вернитесь к выбору пользователя.
PO SITION - это спецификация позиции. Это либо кнопка мыши
событие или список ((XOFFSET YOFFSET) ОКНО), где XOFFSET и YOFFSET
позиции в пикселях от верхнего левого угла рамки WINDOW
(ОКНО может быть объектом кадра вместо окна). Это контролирует
положение центра первой строки на первой панели
меню, а не в верхнем левом углу меню в целом. Если POSITION равен t, оно
означает использовать текущую позицию мыши.