Версия PascalABC.NET 3.5

Проверил. Заработало.

Ну, это не совсем консольный компилятор - это компилятор, работающий в консоли в режиме диалога

Там нет такой опции. pcu берутся или из текущего каталога или из стандартного каталога Lib

image

  1. Из меню Сервис->Режим автовставки кода эта кнопка не включается и не выключается. Только из тулбара.
  2. Можно синхронизировать настраиваемые отступы и отступы автовставки? Если в настройках Сервис->Настройки->Редактор->Конвертировать Tab в пробелы поставить, например, 3 пробела, то при включенной автовставке и по нажатию Enter в конце строки, например, после begin - всегда выдает отступ в 2 пробела. (Кстати, та же проблема и с шаблонами-сниппетами.)
  3. Можно сделать так, чтобы состояние этой кнопки запоминалось при закрытии предыдущего сеанса? Почему она всегда активируется при старте ide?

Разработчики обещали скоро сделать чтоб запоминало.

1 лайк

Потому что ещё нет сохранения в .ini о том, включена эта опция или нет. Но я тоже жду когда её выключат по умолчанию и/или сделают запоминание активности. Вещь-то прикольная, но сырая.

2 лайка

Сделал:

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

А в чем сырость то?

Сделать в меню Настройки пунктик. Пусть по умолчанию будет опция взведена, а продвинутый пользователь при желании сможет сбросить. Как, к примеру, опцию включения отладочной информации. И чтобы состояние кнопки в IDE влияло только на текущую сессию, а при новом запуске бралось из настроек. Школьники тоже люди и должны иметь возможность эту опцию при желании на время отключить.

В том, что пока мало автовставок, встречаются баги и со сниппетами эта штука не дружит. Можно добавить в настройки опцию “Дружить со сниппетами” и когда она включена не добавлять табуляцию при Enter после оператора условия/цикла и т.д, ибо я (пользователь) это уже сам сделаю с помощью b+shift+space, и будет это заметно быстрее, чем begin+Enter.

1 лайк

Да, мне это тоже больше всего мешает в этой фиче. Но будет лучше, если при активации снипетов вроде b - табы сами убирались, чем если их и ставить не будет.

Автозавершение при вводе не будет дружить со сниппетами. Оно не для того делалось.

Отступ в 2 пробела признаётся нами единственно правильным. Свой стиль - это отключение возможности.

Я не понимаю, о какой табуляции при Enter вы говорите. Знак табуляции не добавляется - только пробелы

Багов сейчас нет с моей точки зрения.

Да, автозавершение будет расширять возможности. Следует иметь в виду, что оно не направлено на профессиональных программистов, которые автоматически код форматируют правильно и возможно по-своему. Автозавершение - для начинающих.

А зачем такая дружба нужна в принципе? Совершенно разные средства.

Быть может, “правильный отступ” должен браться отсюда? А то будет противоречие с пользовательской настройкой. %D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA

2 пробела и табуляция в PascalABC.NET это одно и то же.

Суть не в этом.

Ввожу я, значит, if true then:

begin
  if true then|
end.

Переносит на следующую строку с отступами:

begin
  if true then
    |
end.

Если я навожу begin+Enter, то лишние отступы удаляются:

begin
  if true then
  begin
    |
  end;
end.

А если использовать ГОРАЗДО БОЛЕЕ БЫСТРЫЙ И УДОБНЫЙ в написании сниппет B+SHIFT+SPACE, к которому уже давно ВСЕ ПРИВЫКЛИ, нас встретит вот такое:

begin
  if true then
    begin
      |
    end;
end.

И именно это уже достало! Можно добавлять те 2 пробела уже после написания оператора в if, убедившись, что у него точно нет begin-end блока? Или всё-таки как-нибудь сдружить сниппет b+shift+space с AutoInsertCode? Ну или агрессивно удалить эти отступы после вставки сниппета?

Я понимаю, что это Ваше сугубо личное мнение. А Вы пишете в этой среде часами, как я, или сутками, как SunSerega? Не думаю. У меня сложилось другое мнение:

Для себя я вижу применение сниппетов и автовставки в одном русле — УСКОРЕНИЕ и ПОВЫШЕНИЕ УДОБСТВА написания кода. Если разработчики решают использовать автовставку для того, чтобы прививать юным программистам “чувство стиля”, то это хорошо, но профессиональных программистов (сколько бы их не было, а их, к сожалению, только поубавилось за последний год) это тоже не должно ограничивать, ибо фича очень годная.

@Admin, по поводу блокировки отключения автовставки — сделайте отдельный параметр в настройках “School version”, потом на него ещё чего-нибудь повесить можно будет. И закрепите эту штуку на уровне реестра. Тогда на компьютерах в школах без учителя/админа и не убрать будет))

…Если не считать что автозавершение повсюду суёт лишние пробелы на концах строчек… Ну, это, конечно, не так серьёзно как отсутствие интеграции с другими фичами IDE, хоть вы и не считаете это багом.

1 лайк

А приведите хотя бы один пример

Ладно, подумаю. А приведите пример, когда это средство действительно удобно.

И - всё-таки, принципиальный вопрос.

Школьник пишет:

loop 10 do
Print(1);

Мы его заставляем писать

loop 10 do
  Print(1);

Это хорошо. Но программисты возмущаются.

Что делать?

https://youtu.be/ZCafaYwYjYg

Лучший вариант - если на предыдущей строчки стоит loop, for, if и т.п., при активации снипета, содержащего end в готовом тексте - сдвигать весь снипет на 2 пробела влево. Это должно быть не сложно реализовать и будет работать не только со снипетом b, а и со всеми остальными.

1 лайк