NoSelEOL plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

NoSelEOL plugin

Post by DV »

NoSelEOL плагин был замещен SmartSel плагином.

NoSelEOL plugin was superseded by SmartSel plugin.


This plugin excludes last end-of-line (EOL) symbol from selected text.
May be usefull when a whole text line is selected ;-)

Этот плагин исключает последний символ перевода строки (EOL) из
выделенного текста.
Может быть полезно при выделении всей строки ;-)

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

Post by VladSh »

Я хочу!!!!!!!!!!! :D Где это можно взять?!

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

Post by DV »

VladSh wrote:Я хочу!!!!!!!!!!! :D Где это можно взять?!
Наверное, что-то на сервере еще не успело обновиться. В ближайшие дни должно стать доступно. Я полагаю ;-)

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

Post by Instructor »


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

Post by VladSh »

Предложения:
1. Не захватывать EOF.
2. Сделать опциональную возможность переходить в конец строки к последнему значащему символу, т.е. по аналогии со SmartHome (типа SmartEnd :)). Т.е. при последовательном нажатии End чтобы курсор бегал то к последнему значащему символу, то к концу строки, но без EOL/EOF.

Вопрос: каков приоритет плагина? Т.е. будут ли корректно работать скрипты, которые написаны с учётом захвата EOL?

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

Post by DV »

VladSh wrote:Не захватывать EOF.
EOF захватывается для того, чтобы было явно видно, что при выделении до самого конца файла включается и последний перенос строки. Это, в свою очередь, следствие того, что по Ctrl+A выделяется весь текст полностью, включая последний знак переноса.
Если прочитать вышеизложенное несколько раз, то станет понятно ;-)
VladSh wrote:Т.е. при последовательном нажатии End чтобы курсор бегал то к последнему значащему символу, то к концу строки, но без EOL/EOF.
Значащий символ - это всё, кроме табов и пробелов? Это можно, но неохота возиться с диалогом настроек.
Хм, можно попробовать сделать ещё одну экспортируемую функцию плагина - NoSelEOL::SmartEnd - и, когда она загружена, перехватывать нажатия End. Я над этим подумаю.
VladSh wrote:Вопрос: каков приоритет плагина?
Насколько я понимаю, приоритет можно задать только из AkelPad.ini - а именно, расположить этот плагин до или после плагина Macros.
В смысле, до или после плагина Scripts.

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

Post by VladSh »

DV wrote:... следствие того, что по Ctrl+A выделяется весь текст полностью, включая последний знак переноса.
Понятно; я как раз это и имел в виду - думал, что это глюк.
DV wrote:Значащий символ - это всё, кроме табов и пробелов?
Да.
DV wrote:... и, когда она загружена, перехватывать нажатия End. Я над этим подумаю.
Было бы здорово! :wink:
Хорошо, когда есть надежда :D
DV wrote:Насколько я понимаю, приоритет можно задать только из AkelPad.ini - а именно, расположить этот плагин до или после плагина ... Scripts.
Раньше стоял перед, сейчас поставил после, но эффекта всё равно никакого - результат работы некоторых скриптов весьма странен :twisted:

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

Post by DV »

VladSh wrote:результат работы некоторых скриптов весьма странен
А где бы мне взять эти скрипты, чтобы попробовать их вместе с плагином?

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

Post by VladSh »

DV, например CtrlDown.

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

Post by DV »

VladSh wrote:например CtrlDown
Насколько я понимаю, выполнение скрипта является в принципе внешним действием по отношению к AkelPad. Поэтому при вызове из скрипта следующего действия:

Code: Select all

AkelPad.SetSel(nSelStart, nSelEnd);
происходит примерно следующее: AkelPad обрабатывает сообщение EM_EXSETSEL, затем передает это сообщение на обработку плагинам (тут срабатывает NoSelEOL), и только теперь управление возвращается скрипту.
Таким образом, при работе NoSelEOL скрипт получает выделение уже без последнего символа переноса строки.

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

Post by DV »

NoSelEOL v.1.1
========================
NoSelEOL::Main
* исключает последний символ перевода строки (EOL) из выделенного текста.

NoSelEOL::SmartEnd
* нажатие клавиши End перемещает курсор на последний символ в строке,
который не является пробелом или табуляцией.
* повторное нажатие клавиши End перемещает курсор в конец строки.
* последовательное нажатие End, Shift+End позволяет выделить все
символы пробела и табуляции в конце строки.
========================
NoSelEOL::Main
* excludes last end-of-line (EOL) symbol from selected text.

NoSelEOL::SmartEnd
* when End key is pressed, cursor jumps to last non-space/non-tab character.
* when End key is pressed again, cursor jumps to the end of the line.
* key sequence End, Shift+End allows to select all trailing spaces/tabs.

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

Post by VladSh »

DV wrote:NoSelEOL v.1.1...
Супер! Работает отлично! 8)
Большое Вам спасибо!!! :D

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

Post by VladSh »

DV, мне неловко писать, т.к. выше говорит, что всё работает отлично.

Обнаружилась проблема со SmartEnd: иногда пишу и ставлю в конце пробел, а потом возвращаюсь в середину строки, чтобы откорректировать фразу, потом жму End и курсор становится перед пробелом. Т.е. приходится ставить пробел снова, в таком случае после завершения редактирования в конце каждого предложения образуется куча пробелов. Или при переходе в конец предложения приходится дважды жать End, чтобы проверить, есть ли там пробел. Как оказалось - это неудобно, напрягает.

Можно ли немного изменить алгоритм? Чтобы при нажатии End курсор устанавливался именно в конец строки, но перед переводом строки. При следующем нажатии End чтобы курсор прыгал в позицию после последнего значимого символа. Это будет удобнее, т.к. таких ситуаций, когда в конце пробелы или табуляции, на самом деле не так много. Также это даст то, что всегда будем знать, если ли пробелы/табуляции в конце предложения или нет (для этого не придётся ещё раз жать End).
Для того, чтобы удалить пробелы в конце м.б. после первого End нажать его ещё раз, а затем выделить их Shift+End и нажать Del или просто использовать функцию "Del trailing whitespaces".

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

Post by DV »

VladSh wrote:Чтобы при нажатии End курсор устанавливался именно в конец строки, но перед переводом строки. При следующем нажатии End чтобы курсор прыгал в позицию после последнего значимого символа.
Посмотрю, что можно сделать.

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

Post by VladSh »

Да, посмотрите пожалуйста.
Я там наверное много написал и всё равно не очень понятно..
Просто нужно изменить алгоритм "прыгания" курсора по End на противоположный, т.е. не после знач.символа, а потом в конец, а наоборот - в конец, а потом после знач.символа.
Locked