GUI проблема работы с огромными скриптами
- Author
- Message
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
GUI проблема работы с огромными скриптами
Порой неудобно работать с длинными скриптами, в которых есть взаимосвязанные части в разных местах документа (которые периодически надо синхронно подправлять).
Я знаю о двух вспомогательных решениях, призванных облегчить работу в такой ситуации:
1. метки (двойной клик по номеру строки помечает строку меткой)
2. разделение окна на 2 или 4 части (разные части документа тогда можно прокручивать независимо друг от друга).
И то, и другое решение имеют свои недостатки:
1. если документ очень длинный и меток достаточно много, то между ними тяжело ориентироваться, т.к. часто можно "пролететь" мимо них при прокрутке;
2. сокращается обозримая часть кода вокруг нужного места.
В связи с этим хотелось бы принципиально иного подхода, который применяется во "взрослых" IDE-шках: разделить один документ по частям в разные вкладки.
Предлагаю poor man's solution для этого:
1. Добавить возможность переключения между двумя режимами отображения документа: а. такой как сейчас; б. дроблённый.
2. В любом из режимов дать пользователю выставлять не-текстовые разделители в тексте.
3. При переходе в дроблённый вид добавлять второй таб-бар (например, вертикальный), относящийся только к текущему документу. Таб-бар должен состоять из такого же кол-ва вкладок по количеству частей, на которые был разделён исходный документ.
4. В каждой вкладке дополнительного таб-бара показывается только свой кусок документа.
Я знаю о двух вспомогательных решениях, призванных облегчить работу в такой ситуации:
1. метки (двойной клик по номеру строки помечает строку меткой)
2. разделение окна на 2 или 4 части (разные части документа тогда можно прокручивать независимо друг от друга).
И то, и другое решение имеют свои недостатки:
1. если документ очень длинный и меток достаточно много, то между ними тяжело ориентироваться, т.к. часто можно "пролететь" мимо них при прокрутке;
2. сокращается обозримая часть кода вокруг нужного места.
В связи с этим хотелось бы принципиально иного подхода, который применяется во "взрослых" IDE-шках: разделить один документ по частям в разные вкладки.
Предлагаю poor man's solution для этого:
1. Добавить возможность переключения между двумя режимами отображения документа: а. такой как сейчас; б. дроблённый.
2. В любом из режимов дать пользователю выставлять не-текстовые разделители в тексте.
3. При переходе в дроблённый вид добавлять второй таб-бар (например, вертикальный), относящийся только к текущему документу. Таб-бар должен состоять из такого же кол-ва вкладок по количеству частей, на которые был разделён исходный документ.
4. В каждой вкладке дополнительного таб-бара показывается только свой кусок документа.
-
Offline
- Posts: 202
- Joined: Sat Mar 28, 2015 2:36 pm
- Location: Russia
Drugmix
Или:
"Список закладок..." 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)
"Навигаций" по тексту хоть отбавляй
А как же окно Coder::CodeFold - очень удобная штука.Drugmix wrote:Я знаю о двух вспомогательных решениях
Или:
"Список закладок..." 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
Kley
Всё это есть и хорошо, что есть, но всё равно недостаточно удобно при работе с файлами в тысячи строк.
Про "Список закладок..." Call("LineBoard::Main::BookmarkList") - я в курсе, но список выводится с текстом с конкретных строк, контекста не видно > не понятно.
Когда скрипт огромный - ну какое там "Найти"... так потеряться можно и забыть что подправить надо, даже обратно нельзя обратно вернуться, я вот только через ctrl+z/y это делаю.
Я уж молчу, что вхождения не подсвечиваются на скроллбаре, как, например, у меня в лисе:
"Предыдущая позиция каретки" Command(4199)
"Следующая позиция каретки" Command(4200)
Это не подходит тем, что каретка у меня останавливается не только в нужных местах, но и в десятке промежуточных и я не собираюсь экономить клики
В конце концов разделение скрипта на части иногда удобно просто само по себе, т.к. если я знаю, что я должен добавить фичу А, то я знаю, что вот этот раздел и вот этот - мне вообще не понадобятся, а вот сюда и туда - хочется иметь быстрый доступ так, чтобы вмиг можно было переключаться между этими местами и дописывать то туда, то сюда.
Всё это есть и хорошо, что есть, но всё равно недостаточно удобно при работе с файлами в тысячи строк.
Про "Список закладок..." Call("LineBoard::Main::BookmarkList") - я в курсе, но список выводится с текстом с конкретных строк, контекста не видно > не понятно.
Когда скрипт огромный - ну какое там "Найти"... так потеряться можно и забыть что подправить надо, даже обратно нельзя обратно вернуться, я вот только через ctrl+z/y это делаю.
Я уж молчу, что вхождения не подсвечиваются на скроллбаре, как, например, у меня в лисе:
"Предыдущая позиция каретки" 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
Drugmix
В AutoIt есть #Region...#EndRegion, в AutoHotkey вроде нет подобного, но можно сделать типа такого:
сворачивание + прыжок в Coder::CodeFold. Только добавить лаконичный комментарий и флаг 4 всё покажет.
В AutoIt есть #Region...#EndRegion, в AutoHotkey вроде нет подобного, но можно сделать типа такого:
Code: Select all
;44=4+8+32
44 0 0 0 ";#R" ";#ER" " " 0 0
Закладки можно расставлять на конкретные строки комментариев.Drugmix wrote:Про "Список закладок..." Call("LineBoard::Main::BookmarkList") - я в курсе, но список выводится с текстом с конкретных строк, контекста не видно > не понятно.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Skif_off
Я и пользуюсь аналогичной штукой (приделал сворачиваемость блоков между ;{ и ;}), но в древовидной структуре получается неудобно переключаться между детьми/внуками/правнуками двух разных веток-соседей.
Эх, может когда надумаю и напишу свою ахк-гуи обёртку к акелу, всё-таки приделать такое в акеле - вероятно очень трудоёмко, уж лучше эти силы пустить на добивание coder плагина, чтобы regex правила в нём наконец-то стали бы прозрачно применяться (и желательно с каскадностью).
Я и пользуюсь аналогичной штукой (приделал сворачиваемость блоков между ;{ и ;}), но в древовидной структуре получается неудобно переключаться между детьми/внуками/правнуками двух разных веток-соседей.
Эх, может когда надумаю и напишу свою ахк-гуи обёртку к акелу, всё-таки приделать такое в акеле - вероятно очень трудоёмко, уж лучше эти силы пустить на добивание coder плагина, чтобы regex правила в нём наконец-то стали бы прозрачно применяться (и желательно с каскадностью).
-
Offline
- Posts: 366
- Joined: Mon Jan 10, 2011 5:28 pm
- Contact:
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
>> 2. разделение окна на 2 или 4 части (разные части документа тогда можно прокручивать независимо друг от друга).
> 2. сокращается обозримая часть кода вокруг нужного места.
Может быть проще всего было бы добавить в AkelPad команду для перехода в псевдо-полноэкранный режим (чтобы тулбар и меню отображалось) и обратно. Ткнул мышкой на нужную часть окна, нажал комбинацию клавиш и работаешь, нажал ту же комбинацию клавиш - вернулся обратно к разделённым окнам.
> 2. сокращается обозримая часть кода вокруг нужного места.
Может быть проще всего было бы добавить в AkelPad команду для перехода в псевдо-полноэкранный режим (чтобы тулбар и меню отображалось) и обратно. Ткнул мышкой на нужную часть окна, нажал комбинацию клавиш и работаешь, нажал ту же комбинацию клавиш - вернулся обратно к разделённым окнам.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
VladSh wrote:Может быть проще всего было бы добавить в AkelPad команду для перехода в псевдо-полноэкранный режим (чтобы тулбар и меню отображалось) и обратно. Ткнул мышкой на нужную часть окна, нажал комбинацию клавиш и работаешь, нажал ту же комбинацию клавиш - вернулся обратно к разделённым окнам.
Так мне тоже было бы неудобно: половину экрана у меня всегда занимают документация или отладчик и документация...
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
VladSh
Это какие-то ненадёжные хоткеи, они то работают, то не работают, то делают одно, то другое.
Я вот сейчас сел было доделать один свой здоровый скрипт и подправить там, наконец-то, одну мажорную функцию - но нет, это просто нереал вчитаться в код и понять что где находится если код не разнесён по вкладкам
Это какие-то ненадёжные хоткеи, они то работают, то не работают, то делают одно, то другое.
Я вот сейчас сел было доделать один свой здоровый скрипт и подправить там, наконец-то, одну мажорную функцию - но нет, это просто нереал вчитаться в код и понять что где находится если код не разнесён по вкладкам