О сколько нам открытий чудных ... (про C7.1)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

Дед Пахом писал(а):Не верю ни единому слову. Тут никакой контекст не нужен, чтобы понять, что вводится имя параметра, т.к. в Кларионе не может быть типов, состоящих из нескольких слов (unsigned int и т.д.). Да если бы и были, дела не меняет.
А что же тогда нужно, если не контекст? Чтобы понять, что вводится имя параметра, надо понять, что вводится декларация (дефинишн) процедуры и что тип параметра уже введен. Сейчас берется позиция курсора, потом находится соответствующий объект в синтаксическом дереве, например декларация класса, или дефинишн процедуры и т.п. От такого контекста меняется содержимое листа СС. Чтобы реализовать ваше предложение, надо еще дополнительно просканировать текст назад до начала конструкции (это может быть несколько строк назад), потом разобрать эту конструкцию, чтобы понять, что это и что именно сейчас пишется. И после этого дополнительно менять содержимое СС листа. Для такого детального контекста нельзя использовать синтаксическое дерево, которое имеется после парсинга текста, т.к. незаконченные конструкции в него могут попасть, а могут и не попасть, или попасть неправильно.
Это можно сделать, но это не просто (а значит не быстро). Положительный эффект, естественно, от этой фичи будет, но вот стоит ли он сил, неочевидно.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3236
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 13 раз
Поблагодарили: 45 раз
Контактная информация:

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Дед Пахом »

Да есть же у вас контекст нужный - набирая первое слово, я получаю список встроеннных типов данных (что правильно), набирая второе - получаю список доступных классов/объектов/констант и т.д. из всех мыслимых include-файлов, что сами понимаете мне в этот момент очень интересно видеть в окне CC.
Я, конечно, дилетант и в ваших синтаксических деревьях не рюхаю, но раз мы в контексте объявления процедуры, то каждое второе слово надо в CC пропускать мимо, имхо.
С уважением, ДП
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

Дед Пахом писал(а):Да есть же у вас контекст нужный - набирая первое слово, я получаю список встроеннных типов данных (что правильно), набирая второе - получаю список доступных классов/объектов/констант и т.д. из всех мыслимых include-файлов, что сами понимаете мне в этот момент очень интересно видеть в окне CC.
Я, конечно, дилетант и в ваших синтаксических деревьях не рюхаю, но раз мы в контексте объявления процедуры, то каждое второе слово надо в CC пропускать мимо, имхо.
В том то и дело, что такого контекста нет, набирая тип параметра STRING и потом имя параметра s, вы должны сейчас видеть 2 совершенно одинаковых списка в СС окне. Хотя понятно, что правильнее в данном случае сначала показывать только типы, а потом вообще ничего. Я не спорю, что подобный детальный контекст это хорошее улучшение СС. Просто я знаю, как все это работает сейчас, и какие примерно могут быть трудности приделать эту фичу. Это не просто, хотя и может так выглядеть снаружи.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3236
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 13 раз
Поблагодарили: 45 раз
Контактная информация:

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Дед Пахом »

ORS писал(а):В том то и дело, что такого контекста нет, набирая тип параметра STRING и потом имя параметра s, вы должны сейчас видеть 2 совершенно одинаковых списка в СС окне.
Действительно, это я принял желаемое за действительное, оба списка одинаковы. Грустно.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Игорь Столяров »

ORS писал(а):Если вы хотите чтобы об этих багах узнали и пофиксили, то лучше их писать в PTSS.
Тогда пустите меня в PTSS или куда-нибудь еще, где информацию о проблемах в C71 воспринимают.
ORS писал(а):Это работает "Smart" режим автоформаттера.
Хорошо, а можно этот умный режим по умолчанию просто выключить ?
Ведь результат его работы - очень странный. А те кому он помогает в работе (например Вы) - его включат.
Насчет примера все просто. Возьмите любую произвольную строку, установите курсор в произвольном месте строки и нажмите ENTER.

Что бы не спорить: скажите пожалуйста в каком редакторе текста Вы видели что бы после этого действия (нажатие ENTER) происходило смещение предыдущей строки ?!
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3236
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 13 раз
Поблагодарили: 45 раз
Контактная информация:

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Дед Пахом »

Ещё про CC.

Ввожу имя функции, например WHAT. Ввожу скобку (, всплывает инфо о прототипе функции WHAT. Вбиваю первый аргумент, запятая. Больше я прототипа функции не вижу. Это можно исправить?
С уважением, ДП
nik190994
Активист
Сообщения: 196
Зарегистрирован: 28 Сентябрь 2009, 16:19

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение nik190994 »

Пока 6755 производит неплохое впечатление...
Пока одно замечание... В Форме при переходе с текстового контрола на следующий надо жать ТАБ даже если указано замещение его на Энтер...
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

Игорь Столяров писал(а):Тогда пустите меня в PTSS или куда-нибудь еще, где информацию о проблемах в C71 воспринимают.
А что вам мешает занести эти баги в PTSS?
Игорь Столяров писал(а):А те кому он помогает в работе (например Вы) - его включат.
Насчет примера все просто. Возьмите любую произвольную строку, установите курсор в произвольном месте строки и нажмите ENTER.
Как вы должны понимать, если меня алгоритм работы автоформаттера устраивает, то данное действие не даст никакого эффекта. Т.к. введенная мной строка либо уже будет отформатирована так, как это делает автоформаттер (и тогда строка не будет смещена), либо я буду вводить строку как попало, а потом ее за меня автоформаттер сместит, как должно быть.
Игорь Столяров писал(а):Что бы не спорить: скажите пожалуйста в каком редакторе текста Вы видели что бы после этого действия (нажатие ENTER) происходило смещение предыдущей строки ?!
Редакторы текста может и не форматируют введенный текст, но современные редакторы кода в большинстве своем имеют режим автоматического форматирования введенного кода. Например во всех версиях Visual Studio .Net, которые я могу вспомнить. Там правда форматирование законченной конструкции происходит по нажатию ';' (для С#) или форматируется целый блок после '}'. Но в кларионе новая строка является меткой завершения конструкции, потому форматирование введенной строки происходит по enter`у. Может для бейсика в студии тоже форматирование происходит по enter`у, не смотрел.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Игорь Столяров »

ORS писал(а):Но в кларионе новая строка является меткой завершения конструкции
Т.е. мысли о том, что по нажатию ENTER я просто хочу вставить строку, а "не завершать конструкцию" Вы не допускаете ? Забавно ! Ну да ладно ... :)

Тогда другой вопрос: а что есть "конструкция, которая завершается по нажатию ENTER" ?
Это просто предыдущая строка или действительно некоторый блок из нескольких строк текста ?

Я поясню. Как Вы наверно догадываетесь, кроме написания нового текста (когда после написания каждой строки нажимается ENTER), к сожалению еще иногда приходится РЕДАКТИРОВАТЬ уже написанный ранее текст.
Внесение изменений далеко не всегда завершается нажатием ENTER (как я теперь узнал - признаком завершения конструкции) в редактируемой строке. И что тогда ? Точнее что есть "конструкция", которую завершает нажатие ENTER ? Заранее спасибо.

Предвкушаю узнать много нового и интересного ... :)
Make Clarion Great Again ! 😎
nik190994
Активист
Сообщения: 196
Зарегистрирован: 28 Сентябрь 2009, 16:19

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение nik190994 »

Почему при паботе в EMBEDITORe при вводе имени класса не дается подсказка выбора возможных методов?
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

Игорь Столяров писал(а):Предвкушаю узнать много нового и интересного ... :)
Какая-то у вас несмешливо-враждебная реакция на мои слова. В конце-концов раз вам не нравится реализация фичи и нет желания конструктивно побеседовать о ее улучшении, выключите ее и всех делов. Благо есть даже несколько степеней ее выключения.
Игорь Столяров писал(а):Т.е. мысли о том, что по нажатию ENTER я просто хочу вставить строку, а "не завершать конструкцию" Вы не допускаете ? Забавно ! Ну да ладно ... :)
Вставляя новую строку после некого завершенного кода, вы тем самым подтверждаете его завершенность :)
Если конструкция не закончена (стоит символ '|'), то автоформаттер поведет себя несколько по-другому, хотя введенный кусок отформатирует.
Игорь Столяров писал(а):Тогда другой вопрос: а что есть "конструкция, которая завершается по нажатию ENTER" ?
Это просто предыдущая строка или действительно некоторый блок из нескольких строк текста ?
В принципе это просто предыдущая строка, т.е. строка, после которой вы нажали enter, поскольку автоформаттер не будет менять другие строки. Но, естественно, автоформаттер анализирует, что именно вы сейчас вводите и соответственно форматирует введенную строку (+ делает соответствующий отступ на новой строке). (см. "ну и самое главное" в конце)
Игорь Столяров писал(а):Я поясню. Как Вы наверно догадываетесь, кроме написания нового текста (когда после написания каждой строки нажимается ENTER), к сожалению еще иногда приходится РЕДАКТИРОВАТЬ уже написанный ранее текст.
Внесение изменений далеко не всегда завершается нажатием ENTER (как я теперь узнал - признаком завершения конструкции) в редактируемой строке. И что тогда ? Точнее что есть "конструкция", которую завершает нажатие ENTER ? Заранее спасибо.
Автоформаттер в коде занимается только отступами. Поэтому, если вы что-то поменяли в существующей строке, то ему ничего и не надо делать. Редактируйте себе на здоровье. Если же ваши изменения приводят к тому, что дальнейший текст становится "неформатированным" (например, вы заменили IF... на другой код и теперь дальнейший текст не должен иметь дополнительного отступа), то вы можете либо отформатировать его сами (выделить текст и нажать Tab/Shift+Tab), либо выделить текст и нажать Ctrl+I, чтовы автоформаттер его переформатировал. Ctrl+I можно нажать и без выделения текста, чтобы дать команду переформатировать текущую строку, раз ее форматирование вас не устраивает, но enter в конце вам нажимать не надо.

Автоформаттер это просто механизм, который позволяет вам не думать об отступах для форматирования кода при его редактировании, потому, что вставляет отступы автоматически. То, что вы замечаете, что строка после enter`а изменяется, означает, что ваше представление о форматировании кода не совпадает с представлением автоформаттера. У него есть некоторое количество настроек, чтобы можно было его подстроить под себя. Если какой-то настройки не хватает, я с удовольствием про нее послушаю, желательно с примером кода, как должно форматироваться. Его можно совсем отключить, поставив например режим Automatic.

Ну и самое главное. Автоформаттер будет нормально работать только если весь код в файле уже отформатирован. Если же в файле форматирование произвольное, то естественно то, что делает автоформаттер, чаще всего не будет совпадать с тем, что имеется в тексте. Весь текст отформатировать тоже просто, Ctrl+A, Ctrl+I.
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

nik190994 писал(а):Почему при паботе в EMBEDITORe при вводе имени класса не дается подсказка выбора возможных методов?
Можно какой-то более конкретный пример? У меня дается.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение Игорь Столяров »

ORS писал(а):Какая-то у вас несмешливо-враждебная реакция на мои слова.
Ничего подобного ! На всякий случай - могу принести свои извинения за неправильную трактовку моих слов.
Наверно просто реакция на то, что я впервые за 10 лет узнал новый тайный смысл клавиши ENTER при редактировании текста.
ORS писал(а):Вставляя новую строку после некого завершенного кода, вы тем самым подтверждаете его завершенность
Вставляя строку в текст - я .... вставляю строку в текст. Вовсе не обязательно в ней будет что-то написано.
Это может быть действительно продолжением некоторой "конструкции", комментарий или просто пустая строка.
Что в этом плохого ? Почему вдруг оказалось что текст программы должен идти монотонным блоком ?!

Но видимо Вы все-таки правы в том, что текст программы теперь должен быть структурирован некоторым, особым образом, по заложенным в редактор правилам. И что бы этот механизм работал (а не вызывал раздражение при работе) - нужно сначала его реформатировать, а уже потом пробовать с ним работать. Что я и попробую сделать.
Make Clarion Great Again ! 😎
nik190994
Активист
Сообщения: 196
Зарегистрирован: 28 Сентябрь 2009, 16:19

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение nik190994 »

Пример очень простой...
Есть DROWSE (BRW1)
Набираю BRW1 (дает все как надо) набираю точку и тишина...

Или набираю ThisWindow. и продолжения нет...
ORS
Бывалый
Сообщения: 91
Зарегистрирован: 07 Май 2009, 23:18

Re: О сколько нам открытий чудных ... (про C7.1)

Сообщение ORS »

Игорь Столяров писал(а):Ничего подобного ! На всякий случай - могу принести свои извинения за неправильную трактовку моих слов.
Значит мне показалось, прошу прощения.
Игорь Столяров писал(а):Но видимо Вы все-таки правы в том, что текст программы теперь должен быть структурирован некоторым, особым образом, по заложенным в редактор правилам. И что бы этот механизм работал (а не вызывал раздражение при работе) - нужно сначала его реформатировать, а уже потом пробовать с ним работать. Что я и попробую сделать.
Именно так, если пользоваться автоформаттером, то его надо настроить (если не устраивают дефолтные настройки, особенно размер Tab Size) и текст надо сначала отформатировать (если он уже не отформатирован в соответствии с настройками автоформаттера). Либо, если нужен ручной контроль отступов, то режим форматирования надо ставить в Automatic, ну или в None для совсем радикалов.
Кроме форматирования уже введенного текста, автоформаттер отвечает также за установку курсора в нужное место на новой строке (т.е. за начальный отступ на новой строке), например, если вы начнете писать IF <что-нибудь> и нажмете enter, то следующая строка будет иметь один дополнительный отступ от IF.
Если вы все же будете пользоватьтя автоформаттером и у вас появятся претензии к логике его работы, я с радостью выслушаю, как его можно улучшить. Потому, как зарубежные пользователи никакого фидбека так и не дали, хотя их тоже просили. Видимо все его просто выключили и забыли об этой фиче.
nik190994 писал(а):Пример очень простой...
Есть DROWSE (BRW1)
Набираю BRW1 (дает все как надо) набираю точку и тишина...
Или набираю ThisWindow. и продолжения нет...
Действительно, введение CC в embed редакторе частично сломало СС в embeditor`е. Починили, в следующем билде должно работать нормально. Странно, что вы первый, кто это заметил, хотя билд уже давно вышел. Видимо, как это выяснилось в недавней теме про СС в ньюсгруппах, большинство пользователей СС тоже выключило. :)
Ответить