Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 28 мар 2024, 17:39

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 30 сен 2018, 12:07 
Не в сети

Сообщения: 350
Здесь будет обсуждаться идея консоли для BlackBoxComponentBuilder. Каков бы ни был консольный интерпретатор по семантике, у него есть и внешнее оформление. Культура даёт понятие о консоли (в видео ещё не упомянут psql из postgres, в нём тоже есть важные культурные элементы). Но у ББКБ - своя культура, у него есть коммандеры, которые похожи на "рабочие тетради" Mathematica с другой организацией функционала.

Моя цель на данный момент - минимальными усилиями сделать всё это удобным (сейчас оно не удобно) и, по возможности, взять лучшее из обеих культур.

Один очевидный вариант - такой (он обсуждался в теме про REPL).
Цитата:
некая горячая клавиша (допустим, Ctrl-m или Ctrl-j) вставляла бы значёк завершения коммандера и сразу выполняла последний коммандер (в интерпретаторе Евгения).


А теперь хватит болтать - попробую реализовать. Единственное, что горячая клавиша после выполнения команды должна ещё вставлять новый коммандер в конец текста, так, чтобы вывод от команды Out шёл выше этого коммандера. Это, наверное, будет нелегко.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 30 сен 2018, 13:50 
Не в сети

Сообщения: 350
Нда, не особо пока продвинулся. Бесит всё же необходимость всё время выделять слово мышью. Нашёл HasSelection, GetSelection - оно во многих местах используется. Два вопроса к знатокам:

- где находится обработчик двойного щелчка мышью, который выделяет слово?

- где может находиться код, который при исчезновении выделения делает команду ГлавноеМеню/Инфо/Исходный текст невидимой? (Ответ: - это «сторож» - последний пункт в описании меню, в данном случае - TextCmds.SelectionGuard).


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 30 сен 2018, 16:22 
Не в сети
Администратор
Аватара пользователя

Сообщения: 108
Можно не делать выделение мышью, а считывать текст задом наперед от места где стоит каретка до первого отображения, которое попадется. И потом считать вперед до того места где была каретка и это отправить в интерпретатор.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 30 сен 2018, 16:39 
Не в сети

Сообщения: 350
А где можно позаимствовать код, который ищет отображение назад? Я пока нашёл StdCmds.SelectNextView, но оно не связано с текущей позицией в тексте.

Двойной щелчок я искал, чтобы сделать возможность искать исходник без того, чтобы сначала выделять слово. Т.е. заменить GetSelection на какое-нибудь подлежащее написанию GetSelectionOrCurrentWord.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 30 сен 2018, 17:03 
Не в сети

Сообщения: 350
Пока с помощью «разврата мозга» нашёл такой фрагмент стека:
Код: "OBERON"
  1.  
  2. TextSetters.StdSetter.GetWord
  3. TextControllers.GetThisChunk
  4. ...
  5. Containers.Track
  6. TextControllers.Controller.HandleCtrlMsg
  7. ...
  8. HostWindows.Window.ForwardCtrlMsg
  9. HostWindows.Window.MouseDown
  10.  

Пока не очень понятно, где именно нужно ткнуть, чтобы отловить именно двойное нажатие мыши, но да ладно. GetThisChunk/GetWord содержат код для поиска текущего слова.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 30 сен 2018, 17:58 
Не в сети

Сообщения: 350
Пока ходил за водой, дошло, что сам коммандер-то ищет свой конец. Вижу такой стек:
Код: "OBERON"
  1.  
  2. DevCommanders.Execute
  3. DevCommanders.Track
  4. DevCommanders.StdView.HandleCtrlMsg
  5.  

В HandleCtrlMsg есть modifiersSet - видимо, тут надо искать инфу о том, что это двойное или одинарное нажатие.
Execute выкусывает команду (слишком долго сегодня над этим сижу, придётся прерваться, продолжение следует).


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 окт 2018, 16:55 
Не в сети

Сообщения: 350
Есть проблемка. Смыслы текста в коммандере уже заняты. Если без кавычек - то это команда. Если поменять смысл, сломается совместимость. Вот и сижу, думаю, нормально ли будет так:
- в двойных кавычках - всё по старому
- без кавычек - всё по старому
- > - точка входа в новый интерпретатор

У Евгения Темиргалеева в начале каждой команды стоит ipuiK288.Exec, что несколько избыточно.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club