Page 1 of 7

SmartSel plugin

Posted: Sat Jun 19, 2010 7:46 am
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>>

Posted: Wed Jul 14, 2010 3:07 pm
by ccaid
выход каретки за края строк разрешен, SmartEnd активен — если каретка находится за краем строки, то нажатие End не приводит к её переходу к концу строки. отключение SmartEnd решает проблему, но хотелось бы продолжать им пользоваться.

Posted: Thu Jul 22, 2010 10:31 am
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, но там не дошло до подробного воспроизведения, т.к. выделять строки, на котором уже установлено выделение, проще и не так видны эти траблы.

Хотелось бы чтобы на всех строках редактор вёл себя одинаково.

Posted: Thu Jul 22, 2010 11:14 am
by Instructor
VladSh
Почему вопрос адресован мне? :)

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

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

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

Posted: Thu Jul 22, 2010 12:00 pm
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.

Posted: Thu Jul 22, 2010 12:14 pm
by VladSh
KDJ
Thank you! :wink:

Posted: Thu Jul 22, 2010 12:17 pm
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.

Posted: Thu Jul 22, 2010 12:38 pm
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.

Posted: Thu Jul 22, 2010 12:53 pm
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.

Posted: Thu Jul 22, 2010 1:09 pm
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.

Posted: Thu Jul 22, 2010 1:58 pm
by KDJ
VladSh
Well, actually, now I see it.
LinesMoveUpDown.js script also has a similar problem.

Posted: Tue Sep 28, 2010 7:18 pm
by FeyFre
С включеным SmartSel::noSelEol не выполняется замена на текст, заканчивающийся переносом.

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