Как я могу добавить некоторые элементы в поле со списком завершения кода Delphi IDE

Я работаю в экспертной среде Delphi IDE, и мне интересно, возможно ли добавить новые элементы в поле со списком завершения кода, отображаемое Delphi IDE, когда пользователь нажимает CtrlПробел

ОБНОВЛЕНИЕ: мне нужно добавить элементы в список завершения кода на основе указанного типа.

пример предположим, что у меня есть тип с именем TMytype, я хочу добавить дополнительные элементы в список завершения кода, когда пользователь вводит переменную типа TMytype

проверить это изображение

введите здесь описание изображения


person Salvador    schedule 20.07.2011    source источник
comment
IDE показывает, что она может найти. Включите модуль, содержащий определения того, что вам не хватает, в предложении использования, тогда Ctrl + пробел также покажет их.   -  person Sertac Akyuz    schedule 20.07.2011
comment
Спасибо @Sertac, но мне нужно добавить некоторые дополнительные элементы, которых нет в файле модуля. в этом случае мне нужно прочитать элементы из файла XML, потому что расширение IDE работает с шаблоном Custom Live.   -  person Salvador    schedule 20.07.2011
comment
реализовать IOTACodeInsightManager, IOTACodeInsightSymbolList   -  person Premature Optimization    schedule 20.07.2011
comment
Скажите вашу версию Delphi, пожалуйста!   -  person menjaraz    schedule 09.12.2011
comment
Согласитесь с Sertac, список элементов завершения кода строится динамически из (общедоступных) методов, свойств и переменных из текущей области (метод, класс или область использования). На самом деле я не понимаю, что вы пытаетесь сделать. Что вы имеете в виду под My Item 1..N? Не могли бы вы описать, как должны вести себя эти элементы, пожалуйста? Обратите внимание, что список строится автоматически из элементов из текущей области, поэтому, если вы поместите туда некоторые элементы, они будут предлагать вам ерунду (компилятор отклонит вас вместе с ней). Ответы здесь говорят о шаблонах кода. Разве это не то, что вам нужно?   -  person TLama    schedule 11.12.2011
comment
@TLama элементы, которые я хочу загрузить, присутствуют в файле XML. моя конечная цель - просто расширить список завершения кода с помощью пользовательских значений, My Item 1 может быть предварительно заданным методом со значениями параметров, что-то вроде метода ('Foo', 1, nil).   -  person Salvador    schedule 12.12.2011
comment
Ах я вижу. Итак, вы ищете шаблоны кода. Эти шаблоны тоже включены в список завершения кода, но есть и некоторые правила фильтрации. К сожалению, я не знаю об этом больше (но я думаю, что это также будет основано на области). Я бы лично следил за статьей из ответа, опубликованного здесь менаджраз. В любом случае интересный вопрос.   -  person TLama    schedule 12.12.2011
comment
@TLama Я знаю о шаблонах кода (живых), но это не то, что я ищу.   -  person Salvador    schedule 12.12.2011
comment
Боюсь, я больше ничем не могу вам помочь, мне непонятно, о чем вы здесь спрашиваете. Вы сказали несколько комментариев до того, как My Item 1 может быть предварительно заданным методом со значениями параметров, что-то вроде method('Foo',1,nil), но это идеально подходит для шаблонов кода. Более того, с помощью живых шаблонов кода вы можете предварительно определить значения методов, и когда вы будете использовать этот шаблон, вы просто будете переходить с помощью клавиши TAB через эти значения параметров, чтобы изменить их. Но это может быть необязательным, вы можете определить шаблон только с фиксированными значениями, без перехода через TAB.   -  person TLama    schedule 12.12.2011
comment
Знаете ли вы другие IDE, реализующие аналогичные функции?   -  person menjaraz    schedule 12.12.2011
comment
Это моя догадка, пытающаяся переформулировать требование: потребность в контекстно-зависимом диспетчере понимания кода, реализующем логику динамической и автоматической вставки некоторого члена/метода вместе с их соответствующей реализацией (заполнителем) в определение типа класса с некоторыми параметрическими знаниями, хранящимися во внешнем файле (домен класса, сигнатура члена/метода). Я прав?   -  person menjaraz    schedule 12.12.2011
comment
@menjaraz, то, что вы описываете, было бы лучшим Code Input Helper от CnPack. Он работает как список завершения кода (выскакивает, когда вы печатаете) и отображает тот же список, что и автозавершение кода, но вы даже можете определить там свои собственные символы, включая их область действия. Что лучше, так это с открытым исходным кодом так что если хочешь вдохновения бери оттуда.   -  person TLama    schedule 12.12.2011
comment
@menjaraz, да, это правильное описание, которое я хочу.   -  person Salvador    schedule 12.12.2011
comment
@TLama Я проверю функцию Code Input Helper, о которой вы упомянули. спасибо за интерес к моему вопросу :)   -  person Salvador    schedule 12.12.2011
comment
@Salvador: Пока вы не отредактируете вопрос (уточните, пожалуйста), каждая попытка ответить на него будет чистой спекуляцией. Почему бы вам, например, не раскрыть файл xml, который вы выбили с помощью шаблона? Я твердо убежден, что моя попытка переформулировать ваше требование еще не завершена, даже если вы скажете, что оно действительно.   -  person menjaraz    schedule 14.12.2011


Ответы (2)


Я нашел ваш вопрос несколько запутанным, но если вы ищете надежный источник «Пользовательских живых шаблонов» и тому подобного в Delphi, зайдите в блог Кэри Дженсена здесь.

Изменить:

С нетерпением ожидая дальнейшего улучшения сферы охвата вопроса, я предлагаю здесь другое направление для изучения:

  • Манипуляции с исходным кодом с помощью IOTAEditor, IOTASourceEditor, IOTAEditReader и т.п.
  • Некоторый синтаксический анализ для проверки работоспособности перед применением каких-либо изменений.
  • Принятие Client DataSet в качестве формата для хранения данных (он сериализуемый) для упрощения кодирования редакторов IDE.
person menjaraz    schedule 09.12.2011

Возможно, я не совсем понял, о чем вы здесь спрашиваете, но вы можете добавить шаблоны, просто перейдя в «Просмотр | Шаблоны» из Delphi IDE. Затем открывается средство просмотра шаблонов. Нажмите значок «+». Он открывает документ template1.xml, который вы затем можете отредактировать, чтобы создать новый элемент.

Если вы хотите сделать это программно, просто добавьте файл xml (того же формата) в папку ..\RAD Studio\code_templates.

person Peter    schedule 09.12.2011