SmartSel plugin

Discuss and announce AkelPad plugins
Post Reply
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

SmartSel plugin

Post by Instructor »

- При нажатии на клавишу HOME курсор перемещается на первый не пробельный символ.
- Нажатие клавиши End перемещает курсор на последний символ в строке, который не является пробелом или табуляцией.
- Исключает последний символ перевода строки (EOL) из выделенного текста.
- При нажатии на клавишу Backspace, если слева от каретки находятся только пробельные символы, то происходит удаление пробельных символов слева до позиции ближайшего первого непробельного символа сверху.

- HOME key goes to first non-space character.
- When End key is pressed, cursor jumps to last non-space/non-tab character
- Excludes last end-of-line (EOL) symbol from selected text.
- When Backspace key is pressed, if from left of the caret only whitespaces, then whitespaces are removed from left to the position of the nearest first non-space character atop.

<< Download>>
Last edited by Instructor on Sun Apr 13, 2014 6:30 am, edited 1 time in total.

Offline
Posts: 35
Joined: Mon Jun 15, 2009 3:46 pm

Post by ccaid »

выход каретки за края строк разрешен, SmartEnd активен — если каретка находится за краем строки, то нажатие End не приводит к её переходу к концу строки. отключение SmartEnd решает проблему, но хотелось бы продолжать им пользоваться.

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

Post by VladSh »

Instructor
Есть некторые неприятные "мелочи" у NoSelEOL, хотел бы их фикса...

1. Тройной клик на предложении.
Иногда почему-то не выделяется всё предложение.
Поиск верхней части текста производится правильно, а поиск нижней иногда сбивается, т.е. оказывается в текущей позиции курсора.
Почему это происходит я так и не понял. Сначала думал, что делаю 3-й клик чуть быстрее, но и при быстром нажатии иногда текст выделяется правильно.
Никаких хитрых символов в файле нет...


2. Странное поведение выделения на последних 4-х строках файла.
Это можно посмотреть на примере ShiftVerticaly.js (ver. 1.2).

Как воспроизвести:

Code: Select all

 последняя-4
      последняя-3
   последняя-2
     последняя-1
Последняя строка ФАЙЛА
двигать последнюю вверх, и при перемещении предпоследней на место последней-2 у предпоследней "съедается" последний символ.
То же самое происходит, если двигать строку сверху вниз.
Т.е. есть на строках последняя-1, последняя-2 и последняя-3 у редактора (возможно у AkleEdit'а, а может быть у функции NoSelEOL) явные проблемы.

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

Code: Select all

if (!bSelEOL)
{
	//код
}
в обоих направлениях, т.е. и когда nMoveDirection < 0 и когда else.

Для того, чтобы увидеть трабл выделения подготовьте файл, чтобы в нём была только последняя строка, а перед ней 4 строки пустые:

Code: Select all




Последняя строка ФАЙЛА
подвигать 4-5 строк вверх, а потом вниз, и посмотреть что происходит с выделением.
Причём, если протестить предыдущий файл (где все эти строки заполнены), то такого трабла не будет.
Суть бага - выделение разъезжается только тогда, когда в строке, перед выделением, нет содержимого, т.е. просто идёт перевод строки.

Я с чем-то подобным встречался уже давно, ещё при написании CtrlDown.js, но там не дошло до подробного воспроизведения, т.к. выделять строки, на котором уже установлено выделение, проще и не так видны эти траблы.

Хотелось бы чтобы на всех строках редактор вёл себя одинаково.
Last edited by VladSh on Thu Jul 22, 2010 4:30 pm, edited 1 time in total.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh
Почему вопрос адресован мне? :)

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

Post by VladSh »

Instructor
Я просто не знаю кому :)
Сначала эти функции писал DV, но потом Вы их объединили со SmartHome, вот я и подумал, что "все права, включая права на баги" принадлежат теперь Вам :D

Если вопрос не по адресу, скажите, в чём проблема? Это проблема реализации функции?
И кто тогда её поддерживает?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh wrote: 1. Тройной клик на предложении.
Иногда почему-то не выделяется всё предложение.
When turned on "SmartSel:NoSelEOL", you need to click three times very quickly.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Function "SmartSel:NoSelEOL" work like that:
When the cursor is in the first column, and press Shift+Down, then selects current row without EOL.
If you press Shift+Up, then selects the previous line with EOL.
Perhaps in the latter case, the function should not select EOL.

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

Post by VladSh »

KDJ
Thank you! :wink:

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh
In the script ShiftVerticaly.js, you may unnecessarily check, whether the function SmartSel:NoSelEOL" is enabled.
It probably does not matter.
How do you write "var bSelEOL = true", the script works well.

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

Post by VladSh »

KDJ
And what about those users, where this feature is enabled?
The script even with the "var bSelEOL = true" does not work very well, as I wrote above.
Last edited by VladSh on Thu Jul 22, 2010 2:35 pm, edited 1 time in total.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh wrote:KDJ
The script even with the "var bSelEOL = true" does not work very well, as I wrote above.
I entered
"var bSelEOL = true;"
instead of
"bSelEOL var = (! AkelPad.IsPluginRunning ("SmartSel:NoSelEOL"));"
And for me it works well.

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

Post by VladSh »

KDJ
Both variants work the same when NoSelEOL is NOT enabled.
If NoSelEOL is off the script works correctly.

The condition is correct, I will not remove it.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh
Well, actually, now I see it.
LinesMoveUpDown.js script also has a similar problem.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

С включеным SmartSel::noSelEol не выполняется замена на текст, заканчивающийся переносом.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

FeyFre wrote:С включеным SmartSel::noSelEol не выполняется замена на текст, заканчивающийся переносом.
Замена на текст, заканчивающийся переносом, работает (пример: заменить "()" на "[]\n").
А замена текста, который заканчивается переносом, на что-то другое не работает, да (пример: заменить "()\n" на "[]"). В данном случае название функции оправдывает себя: для подобной замены AkelPad сначала выделяет текст, который он хочет заменить, и noSelEol при этом не даёт выделить последний символ переноса.
Post Reply