GUI проблема работы с огромными скриптами

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

GUI проблема работы с огромными скриптами

Post by Drugmix »

Порой неудобно работать с длинными скриптами, в которых есть взаимосвязанные части в разных местах документа (которые периодически надо синхронно подправлять).

Я знаю о двух вспомогательных решениях, призванных облегчить работу в такой ситуации:
1. метки (двойной клик по номеру строки помечает строку меткой)
2. разделение окна на 2 или 4 части (разные части документа тогда можно прокручивать независимо друг от друга).

И то, и другое решение имеют свои недостатки:
1. если документ очень длинный и меток достаточно много, то между ними тяжело ориентироваться, т.к. часто можно "пролететь" мимо них при прокрутке;
2. сокращается обозримая часть кода вокруг нужного места.

В связи с этим хотелось бы принципиально иного подхода, который применяется во "взрослых" IDE-шках: разделить один документ по частям в разные вкладки.
Предлагаю poor man's solution для этого:
1. Добавить возможность переключения между двумя режимами отображения документа: а. такой как сейчас; б. дроблённый.
2. В любом из режимов дать пользователю выставлять не-текстовые разделители в тексте.
3. При переходе в дроблённый вид добавлять второй таб-бар (например, вертикальный), относящийся только к текущему документу. Таб-бар должен состоять из такого же кол-ва вкладок по количеству частей, на которые был разделён исходный документ.
4. В каждой вкладке дополнительного таб-бара показывается только свой кусок документа.

6. PROFIT!

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Drugmix
Drugmix wrote:Я знаю о двух вспомогательных решениях
А как же окно Coder::CodeFold - очень удобная штука.
Или:
"Список закладок..." Call("LineBoard::Main::BookmarkList")
"Найти..." Call("Scripts::Main", 1, "FindReplaceEx.js") - с выводом в окно Log плагина, где можно "даблкликать" и переходить по нужным строкам - тоже удобно и быстро.
"FindRootLevel (F12)" Call("Coder::CodeFold::FindRootLevel")
"Предыдущая позиция каретки" Command(4199)
"Следующая позиция каретки" Command(4200)
"Найти..." Command(4158)
"Перейти..." Command(4162)

"Навигаций" по тексту хоть отбавляй :)

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Kley
Всё это есть и хорошо, что есть, но всё равно недостаточно удобно при работе с файлами в тысячи строк.

Про "Список закладок..." Call("LineBoard::Main::BookmarkList") - я в курсе, но список выводится с текстом с конкретных строк, контекста не видно > не понятно.

Когда скрипт огромный - ну какое там "Найти"... так потеряться можно и забыть что подправить надо, даже обратно нельзя обратно вернуться, я вот только через ctrl+z/y это делаю.
Я уж молчу, что вхождения не подсвечиваются на скроллбаре, как, например, у меня в лисе:
Image

"Предыдущая позиция каретки" Command(4199)
"Следующая позиция каретки" Command(4200)
Это не подходит тем, что каретка у меня останавливается не только в нужных местах, но и в десятке промежуточных и я не собираюсь экономить клики :)

В конце концов разделение скрипта на части иногда удобно просто само по себе, т.к. если я знаю, что я должен добавить фичу А, то я знаю, что вот этот раздел и вот этот - мне вообще не понадобятся, а вот сюда и туда - хочется иметь быстрый доступ так, чтобы вмиг можно было переключаться между этими местами и дописывать то туда, то сюда.
Last edited by Drugmix on Mon Apr 18, 2016 6:47 pm, edited 1 time in total.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Drugmix
В AutoIt есть #Region...#EndRegion, в AutoHotkey вроде нет подобного, но можно сделать типа такого:

Code: Select all

;44=4+8+32
44	0	0	0	";#R"	";#ER"	" 	"	0	0
сворачивание + прыжок в Coder::CodeFold. Только добавить лаконичный комментарий и флаг 4 всё покажет.
Drugmix wrote:Про "Список закладок..." Call("LineBoard::Main::BookmarkList") - я в курсе, но список выводится с текстом с конкретных строк, контекста не видно > не понятно.
Закладки можно расставлять на конкретные строки комментариев.

Я уж молчу, что вхождения не подсвечиваются на скроллбаре, как, например, у меня в лисе:
Только меня смущают фразы типа "как в лисе", "как в опере", "как в г..хроме"? :)
К слову, о карте документа заходила речь.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Skif_off
Я и пользуюсь аналогичной штукой (приделал сворачиваемость блоков между ;{ и ;}), но в древовидной структуре получается неудобно переключаться между детьми/внуками/правнуками двух разных веток-соседей.


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

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Drugmix wrote:вхождения не подсвечиваются на скроллбаре
Да, хотелось бы такую фишку с подсветкой найденного или отмеченного через Qsearch на скроллбарах (горизонтальном и вертикальном).

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

>> 2. разделение окна на 2 или 4 части (разные части документа тогда можно прокручивать независимо друг от друга).

> 2. сокращается обозримая часть кода вокруг нужного места.


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

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

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

Так мне тоже было бы неудобно: половину экрана у меня всегда занимают документация или отладчик и документация...

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Drugmix
Это легко решается: первое окно (AkelPad) - Win+Left, второе окно (отладчик или документация) - Win+Right. Я надеюсь, что такой псевдо-полноэкранный режим будет работать в пределах виндового разделения окон, а не раскрываться на весь экран.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

VladSh
Это какие-то ненадёжные хоткеи, они то работают, то не работают, то делают одно, то другое.


Я вот сейчас сел было доделать один свой здоровый скрипт и подправить там, наконец-то, одну мажорную функцию - но нет, это просто нереал вчитаться в код и понять что где находится если код не разнесён по вкладкам :(
Post Reply