Page 19 of 24

Posted: Thu Jun 04, 2015 11:24 am
by Instructor
Skif_off wrote:AkelPad с плагином LineBoard подсвечивает цветом сохранённые и несохранённые строки, возможно ли написать скрипт, чтобы по ним можно было перемещаться? Типа Перейти к следующей несохранённой строке, предыдущей и по сохранённым. Вполне достаточно перехода в начало строки. Отменить/Повторить не очень удобно.
С версии AkelPad 4.9.3 команды 4199, 4200 также переводят каретку по позициям буфера отмен.

Чтобы перевести каретку к ближайшей позиции отмены: UndoPos.js

Posted: Fri Jul 10, 2015 12:30 pm
by dash73
Подскажите пожалуйста как я могу отсортировать слова в строке по длине слова и по алфавиту: сначала идут самые длинные по алфавиту, затем короче и также по алфавиту и тд?

Posted: Fri Jul 10, 2015 2:48 pm
by Infocatcher
dash73
Примерно так:

Code: Select all

AkelPad.ReplaceSel(
	AkelPad.GetSelText()
		.split(" ")
		.sort(function(a, b) {
			var dl = b.length - a.length;
			if(dl == 0) {
				if(a == b)
					return 0;
				if(a > b)
					return 1;
				return -1;
			}
			return dl;
		})
		.join(" ")
);
На слова разбивается просто по пробелам, потом склеивается обратно.

Posted: Fri Jul 10, 2015 2:53 pm
by Lenchik
SortLines.js

Posted: Fri Jul 10, 2015 8:50 pm
by dash73
Infocatcher wrote:dash73
Примерно так:
...
На слова разбивается просто по пробелам, потом склеивается обратно.
Спасибо Infocatcher работает правильно для одной выделенной строки...
А как сделать для всех строк? Ломает текст (строки), если выделить несколько строк...
Lenchik wrote:SortLines.js
Спасибо Lenchik - не получается у меня им желаемый результат (...

Может сначала SortWord.js - в каждой строке слова становятся по алфавиту... А как или чем потом сделать - порядок слов в строке по длине слова с алфавитным порядком )

Posted: Sat Jul 11, 2015 8:44 am
by Infocatcher
dash73 wrote:А как сделать для всех строк? Ломает текст (строки), если выделить несколько строк...
Вот так:

Code: Select all

var lines = AkelPad.GetSelText().split("\r");
for(var i = 0, l = lines.length; i < l; ++i) {
	lines[i] = lines[i]
		.split(" ")
		.sort(function(a, b) {
			var dl = b.length - a.length;
			if(dl == 0) {
				if(a == b)
					return 0;
				if(a > b)
					return 1;
				return -1;
			}
			return dl;
		})
		.join(" ");
}
AkelPad.ReplaceSel(lines.join("\r"));

Posted: Sat Jul 11, 2015 9:59 am
by yozhic
Создал пользовательское меню с помощью библиотеки Include/ShowMenu.js. В библиотеке есть константы появления меню на экране:

Code: Select all

var POS_CARET   =-1; //Under caret position.
var POS_CURSOR  =-2; //Cursor position.
Можно также задать произвольные координаты x, y. Помогите, пожалуйста, показать меню по центру окна редактирования.

Posted: Sat Jul 11, 2015 11:17 am
by dash73
Infocatcher wrote:
dash73 wrote:А как сделать для всех строк? Ломает текст (строки), если выделить несколько строк...
Вот так: ...
Infocatcher Большое Вам человеческое спасибо!!! Всё работает!!!
Творческих и личных удач Вам, новых побед и великих свершений,
здоровья, мудрости и процветания!!!

Posted: Sat Jul 11, 2015 1:47 pm
by KDJ
yozhic wrote:Помогите, пожалуйста, показать меню по центру окна редактирования.
Center x, y positions of the menu in edit window:

Code: Select all

//Include
if (!AkelPad.Include("ShowMenu.js")) WScript.Quit();

//Variables
var lpItems;
var nItem;
var nX, nY;
var lpRECT = AkelPad.MemAlloc(16 /*sizeof(RECT)*/);

AkelPad.SystemFunction().Call("User32::GetWindowRect", AkelPad.GetEditWnd(), lpRECT);

nX = AkelPad.MemRead(_PtrAdd(lpRECT, 0), 3 /*DT_DWORD*/);
nY = AkelPad.MemRead(_PtrAdd(lpRECT, 4), 3 /*DT_DWORD*/);
nX += (AkelPad.MemRead(_PtrAdd(lpRECT,  8), 3 /*DT_DWORD*/) - nX) / 2;
nY += (AkelPad.MemRead(_PtrAdd(lpRECT, 12), 3 /*DT_DWORD*/) - nY) / 2;

AkelPad.MemFree(lpRECT);

lpItems=[["ItemA", MF_NORMAL, 101],
         ["ItemB", MF_SUBMENU],
           ["ItemB-1", MF_NORMAL, 102],
           ["ItemB-2", MF_NORMAL, 103],
           ["ItemB-3", MF_NORMAL|MF_LAST, 104],
         ["ItemC", MF_NORMAL, 105],
         ["", MF_SEPARATOR],
         ["ItemD", MF_NORMAL|MF_GRAYED, 106],
         ["ItemF", MF_SUBMENU],
           ["ItemF-1", MF_NORMAL|MF_CHECKED, 107],
           ["ItemF-2", MF_NORMAL, 108],
           ["ItemF-3", MF_SUBMENU|MF_LAST],
             ["ItemF-3a", MF_NORMAL, 109],
             ["ItemF-3b", MF_NORMAL|MF_LAST, 110]];

nItem=ShowMenu(lpItems, nX, nY);
if (nItem == -1)
  WScript.Echo("Nothing selected");
else
  WScript.Echo("Item index: " + nItem + "\nItem name: " + lpItems[nItem][0] + "\nItem ID: " + lpItems[nItem][2]);

Posted: Sat Jul 11, 2015 4:16 pm
by yozhic
KDJ
Спасибо огромное. Работает!

Posted: Fri May 13, 2016 8:26 am
by sasa236
Большая просьба помочь написать скрипт, который удаляет досовские непечатные символы в тексте.

Posted: Fri May 13, 2016 10:54 am
by YuS
sasa236 wrote:Большая просьба помочь написать скрипт, который удаляет досовские непечатные символы в тексте.
Для этого скрипт не нужен, достаточно регулярных выражений и стандартного инструмента замены:

Code: Select all

Что: [\x00-\x1F]*+
Чем:
и "Заменить всё"

Posted: Fri May 13, 2016 10:59 am
by FeyFre
YuS, и все переносы строк ушли в отпуск ? :D А также символы табуляции :wink:

Posted: Fri May 13, 2016 12:41 pm
by YuS
FeyFre wrote:и все переносы строк ушли в отпуск ? :D А также символы табуляции :wink:
Дык, что заказывали, то и получили... :)
Я-то здесь при чем? Символы-то непечатные, а их просили удалить. :)

Posted: Fri May 13, 2016 5:56 pm
by FeyFre
YuS, дык перенос и таб - печатные. Управляющие - да, но печатные :)