Удобное использование справки DIRECTUM для программистов

12 12

По неизвестным мне причинам, справка, вызываемая по клавише F1 в редакторе ISBL-текстов вызывается в том же процессе, что и редактор в достаточно любопытном режиме - по отношению к окну редактора она "always on top", но, тем не менее, может перекрываться окнами других процессов. А курсор (и, соответственно, фокус ввода) остается в редакторе.

Это, с одной стороны, позволяет одновременно смотреть справку и писать код. И в то же время, не позволяет переключаться по Alt+Tab между окнами справки и редактора, что для меня более удобно, чем располагать эти окна рядом (тем более, что автоматического расположения не предусмотрено).

Кроме того, в связи с тем, что фокус ввода всегда находится в редакторе ISBL, а не в окне справки, копирование имени метода (очень частое действие, т.к. code insight по объектной модели отсутствует) возможно лишь через контекстное меню (CTRL+C, CTRL+Ins не работают). Да и курсор после вызова справки иногда становится невидимым, что тоже не слишком радует (видимо, последствия этого "хитрого" вызова справки).

Много лет пишу на ISBL, и только сегодня пришел в голову способ, при помощи которого окно справки превращается в обычное. Способ настолько простой, что я удивился почему не додумался раньше. Достаточно запускать справку не из DIRECTUM, а отдельным chm-файлом (благо, все мы знаем, где он лежит в клиентской части - поищите ObjModel.chm). И тогда мы получаем и работающее копирование горячими клавишами, и работающий Alt+Tab. Лично я просто настроил себе hot key на этот файл и теперь писать код стало гораздо удобнее. Круто!

12
Авторизуйтесь, чтобы оценить материал.
2
Дмитрий Тарасов

Тоже именно по этой причине запускаю справку отдельным файлом 

"т.к. code insight по объектной модели отсутствует" - а когда его уже сделают и планируется ли его реализация?

Денис Баранов

Ну, в нынешнем поколении платформы его просто не сделать. Ведь в ISBL нет раздела с объявлением переменных, да и сами переменные нетипизированные. По сути, чтобы вызвать code insight для переменной, надо интерпретатору дойти до этой переменной и посмотреть, а что же она представляет собой на данный момент.

Дмитрий Тарасов

Похоже мы его еще долго не увидим :(

Дмитрий Чепель
Ну, в нынешнем поколении платформы его просто не сделать. Ведь в ISBL нет раздела с объявлением переменных, да и сами переменные нетипизированные

Денис, позволю не согласиться. Уже сейчас при вызове контекстной справки по объектной модели из ISBL-редактора (по Ctrl+F1) выполняется анализ текущего ISBL-текста (практически прекомпиляция). Мы можем определить тип:
1. предопределенных переменных (которые выделены жирным), например, Application;
2. объектов, которые возвращают системные ISBL-функции (например, IException для CreateException);
3. переменных, которые создаются в ходе вызова методов и обращения к свойствам для переменных 1 и 2.
Это работает, если ISBL-код до текущей позиции курсора не содержит ошибок.

В результате, например, для вызова контекстной справки для метода Open будет вызвана справка сразу по IComponent.Open:
SearchesRef = References.SYSREF_SEARCHES.GetComponent()
SearchesRef.Open

в этом случае - по IQuery.Open:
SearchesRef = References.SYSREF_SEARCHES.GetComponent
SearchesDataSet = SearchesRef.DataSet
SearchesDataSet.Open

но если код будет примерно таким:
SearchesRef = SomeFunctions()
SearchesRef.Open,
то справка будет вызвана просто по имени метода (Open), и уже в chm-файле надо будет выбрать нужный топик.

А что касается CodeInsight - сделать можно и в нынешнем поколении платформы (часть переменных уже сейчас типизированные, что видно по приведенным примерам, для остальных ситуаций можно либо отображать упрощенный вариант CodeInsight, либо все-таки немного расширить синтаксис ISBL)

Денис Баранов

Это здорово. Я и не знал, что контекстная справка выполняет анализ, всегда считал, что просто выдает первую попавшуюся подходящую по имени статью справки. Контекстным вызовом пользуюсь крайне редко (он ведь нужен скорее для анализа готового кода, чем для написания своего), поэтому и не обращал  на это внимания.

Дмитрий Тарасов

Ну если все так замечательно, то почему его все еще нет? 

Дмитрий Чепель

Ресурсы разарботчиков не безграничны :)

Антон ИСУПОВ
Ресурсы разарботчиков не безграничны

Вот именно поэтому так хочется иметь

CodeInsight

 

Андрей Рязанцев

"Семён Семёныч" (С)

И где ж ты раньше был с такой идеей блестящей?!

5 тебе!

Алексей Язынин

Необходимость консультировать по нескольким версиям DIRECTUM привела к тому, что все хелпы от всех версий давно у меня лежат в выделенных папочках и запускаются при нужде...

По назначению отдельной кнопочки прошу поподробнее описать. Все-таки справка по F1 - это удобно и быстро. Лезть в папки на локальном диске дольше

Евгений Кочуров

 

По назначению отдельной кнопочки прошу поподробнее описать.

 

Алексей Язынин

В последних версих DIRECTUM ярлык на Справочную систему появляется при установке в Пуск\Программы\DIRECTUM... Т.е. можно справку через него запускать, чтобы было не модально. В справке, запущенной таким образом работают клавиши Ctrl+C, что крайне удобно.

В WIn 7 добраться до этого ярлыка можно нажав клавишу Win и вбив в строку поиска программ слово "справочн" - вылезет нужный ярлык.

Авторизуйтесь, чтобы написать комментарий