emacs: ограничения по максимальному размеру x-popup-menu? - PullRequest
5 голосов
/ 04 мая 2010

Я работаю над IntelliSense или возможностью дополнения кода для C #.

Пока все хорошо. Прямо сейчас у меня есть базовое завершение работы. Есть 2 способа запросить завершение. Первый цикл через все потенциальные совпадения. Второй представляет всплывающее меню матчей. Работает для типов:

альтернативный текст http://i44.tinypic.com/afbl2o.jpg

А также для локальных переменных и переменных экземпляра:

альтернативный текст http://i40.tinypic.com/2pqul2u.jpg

Я сталкиваюсь с двумя проблемами с x-popup-menu:

  1. всплывающее меню может расширяться, чтобы использовать все доступное пространство экрана, когда количество вариантов велико. Буквально он может занимать весь экран и скрывать все остальное, включая все окно emacs и все остальные окна. Глупая вещь, это прокрутка. Сначала он расширяется, чтобы использовать все доступное пространство, затем он также становится прокручиваемым. Похоже, было бы целесообразно расширить его до определенной точки, а затем стать прокручиваемым, а не расширяться, чтобы занять все доступное пространство. Есть ли способ ограничить максимальный размер x-popup-меню?
  2. Чтобы указать позицию всплывающего меню, я передаю позицию, а 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, оно означает использовать текущую позицию мыши.

Ответы [ 2 ]

4 голосов
/ 09 февраля 2011

Некоторым нравится Emacs, потому что не предоставляет всплывающие окна (см., Например, эту запись в блоге ). Более «изможденным» способом представления списка возможных завершений является отображение их в разделенном буфере. Таким образом вы автоматически избежите всех вышеперечисленных проблем (экранная недвижимость и прокрутка) и, вероятно, привлечете больше преданных пользователей Emacs.

Но это чистое предположение: -)

3 голосов
/ 08 февраля 2011

Вы можете основать свой бэкэнд автозаполнения на компания или автозаполнение , где отображение предложений обрабатывается для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...