Editor.Sel(): работа с выделением

Здесь обсуждается всё, что касается макросов.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Latest post of the previous page:

Skirda
Потестировал на этом
Editor.Sel(1,x) CtrlU
в диалогах, редакторе и комстроке. Установка курсора в нужную позицию работает. CtrlU в комстроке, конечно делает не то. Я за спец. функцию (мод) снятия выделения. Кнопка CtrlU не годится, ибо не универсальна.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Ок. Сделаем в макросах, что если начало и конец совпали, то это равносильно сбросу выделения.

Кстати, в АПИ ширина блока может быть равна 0...
Имхо, надо делать как в АПИ, нравится это или нет кому-то. В этом есть логика и единообразие.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Редактор: работа с выделением

Post by Skirda »

NightRoman, в том то и дело... непонятно получается что это за блок такой... с ним в свое время были проблемы и ставилось некоторое количество костылей...
Делаем Alt-Up Alt-Up - выделения нет, но в "коде" блок существует! :(
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Почему нулевая длина выделения может быть полезна? Ну я не сталкивался (или не помню), но могу пофантазировать. Процедура несколько раз меняет выделение в процессе работы (зачем? это ее дело) и одним из промежуточных состояний может быть пустое. Процедура продолжает нормально работать с выделением, потому что оно *есть*, а не падает в этот момент или не занимается бесконечными проверками на пропажу выделения. Далее, у пустого выделения есть позиция, у несуществующего - нет, прочувствуйте разницу, наличие позиции может быть эффективно использовано.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Редактор: работа с выделением

Post by DrKnS »

Skirda wrote:Ins - это другое, с блоками не связанное (эдакая отмазка :oops: )
Ну это "по аналогии".

Для универсальности Editor.Sel(4,0) пусть будет, конечно.
Но и CtrlU при потушенных панелях считаю полезным, всё равно клавиша незадействована.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Skirda wrote:NightRoman, в том то и дело... непонятно получается что это за блок такой... с ним в свое время были проблемы и ставилось некоторое количество костылей...
Делаем Alt-Up Alt-Up - выделения нет, но в "коде" блок существует! :(
ОК. Наверняка я не в курсе всех деталей, просто общие соображения высказываю. Может Denis и прав на самом деле, но молчит, почему его предложение "правильное".
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Редактор: работа с выделением

Post by Skirda »

Очередной тест (наверное последний :crazy: )
Здесь в добавок ко всему выше...
- Добавлено (для единообразия) Ctrl-U (снять выделение с блока) в ком.строке (работает при погашенных обоих панелях).
- Поддержка Editor.Sel() во всем, что движется... (что редактируется)
- new -> Editor.Sel(4) - Unmark selected block, вернет всегда 1
- Для Editor.Sel() - если ширина блока = 0 (от сюда == до сюда), то это равносильно Editor.Sel(4)
(мля, забыл far.map вложить... ну да ладно, для тестов и без него можно :D )

DrKnS, у Editor.Sel() второй параметр можно не указывать, посему вместо "Editor.Sel(4,0)" достаточно написать "Editor.Sel(4)"
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Skirda
В последнем билде все ОК, то есть
Editor.Sel(1,0|1) Editor.Sel(4)
работают адекватно в трех областях - редактор, комстрока, строки ввода диалогов
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Редактор: работа с выделением

Post by Skirda »

эт хорошо... теперь всю эту базу необходимо перенести на 2.0... уф.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Skirda
Спасибо. Значит, таки выкину свой скрипт на PowerShell, не то чтоб я его не любил, просто такие операции правильнее родными средствами выполнять.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Редактор: работа с выделением

Post by Denis »

NightRoman
Почему я за отсутствие пустого блока - потому что при визуальном отсутствии блока при удалении текущего символа - ничего не происходит.
Я за единообразие, т.е. что бы апи и макросы работали одиннаково.
Теоретические рассуждения для универсализации:
- блок есть всегда, просто иногда его длинна == 0
- если блок пустой, то операции с ним не производятся и процессинг ввода идёт дальше
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Редактор: работа с выделением

Post by Skirda »

NightRoman, разумнее было бы сделать более тесную интеграцию с...
и делать это разумнее в двойке...

вот... бы еще кто-нить прикрутил awk к редактору :crazy: плагин ExtFilt есть, но в двойке он... лажает. что-то не оплучается его прикрутить - компиляция и все такое - это удачно, но пайпы, мать их...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Редактор: работа с выделением

Post by HaRT »

DrKnS wrote:[Тихо мечтает о Цэ-подобном синтаксисе, без богомерзких $end, с фигурными скобочками и прочими плюшками]
C-подобный синтаксис доступен в SHPCE; кстати, у меня недостающие функции работы с выделением именно на нём (с небольшими патчами) и реализованы. Но SHPCE был похоронен заживо как раз появлением макроязыка.
NightRoman wrote:нужно, так настраиваешь себе все единообразно и в любом редакторе, включая строчные, ожидаешь одинаковое поведение
Полностью поддерживаю. Я тоже считаю, что все строки ввода текста, будь то редактор как таковой, многострочное (чего так не хватает) или однострочное поле ввода в диалоге и т.п. должны вести себя единообразно, в т.ч. и с точки зрения макросов.
Skirda wrote:Editor.Sel(4) - Unmark selected block, вернет всегда 1
Всё же хорошо бы, чтобы возвращала 0, если вызвана из неправильного контекста.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Редактор: работа с выделением

Post by NightRoman »

Skirda
NightRoman, разумнее было бы сделать более тесную интеграцию с...
и делать это разумнее в двойке...
Если я правильно понял про ..., то согласен, но об этом пока рано мечтать. Надо, чтобы оно стало общим стандартом. Оно им станет, и довольно скоро, дело идет к тому, во всяком случае в виндах. Но пока еще рано.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Редактор: работа с выделением

Post by Skirda »

HaRT wrote:
DrKnS wrote:[Тихо мечтает о Цэ-подобном синтаксисе, без богомерзких $end, с фигурными скобочками и прочими плюшками]
C-подобный синтаксис доступен в SHPCE; кстати, у меня недостающие функции работы с выделением именно на нём (с небольшими патчами) и реализованы. Но SHPCE был похоронен заживо как раз появлением макроязыка.
В тех условиях (и сейчас тоже) SHPCE не тянул против макросов - макросы как раз затеивались для того, что как-то добраться до некоторых вкусностей, которые плагинам не по зубам (по разным причинам).
HaRT wrote:
Skirda wrote:Editor.Sel(4) - Unmark selected block, вернет всегда 1
Всё же хорошо бы, чтобы возвращала 0, если вызвана из неправильного контекста.
хмм... ну... судя по тексту... для "неправильно конексту" вернется 0.
пошел править Писание :crazy:
We are the Borg. You will be assimilated.
So Say We All!
Post Reply

Return to “Обсуждение макросов”