KDJ
1. and how to do replacements in lines with bookmarks?
2. how to increase width of dialogue of a script of FindReplaceEx.js, the input field painfully small for me?
Posted: Mon May 02, 2016 12:51 pm
by LonerD
Я правильно понимаю, что прототип скрипта moveResizeWindow.js так и не был доработан?
Или где-то есть обновлённая версия?
Например, вот такая строка
теоретически должна бы отобразить окно Акелпада на правой стороне экрана до границ экрана (100%). На самом деле остаётся заметный зазор в 8-10 пикселей между правой границей окна и правой стороной экрана.
Во всяком случае такое поведение наблюдается в Windows 10 x64.
Или может это у меня ошибка в записи параметров?
Infocatcher wrote:проблема где-то в getWorkArea(), по идее.
Похоже на то.
Ещё сразу и не заметил - слева и внизу тоже зазор получается.
Через утилиту TCFS2.exe я сделал такое же перемещение окна Тотал коммандера - и та же самая ситуация, между окном программы и краем экрана промежуток.
(Знаю, что в Windows 6.x-10 можно использовать хоткеи Win+Left / Win+Right, но в ХР они не работают, а хотелось бы универсальное решение для всех ОС).
-------------------------------
Просьбы-пожелания для beotiger реализовать (опционально) в скрипте MarkIt.js:
1. Пометки без учёта регистра (жёстко для себя в скрипте я изменил такое поведение, но более гибко было бы, если бы реализовать параметрами).
2. Пометка фразы на нескольких строках (сейчас выделяется только часть фразы на первой строке, а остальное игнорируется). Можно ли такое вообще реализовать или это ограничение плагина Coder?
3. Раскрашивание каждой из выделенных строк в разный цвет (как в скрипте SuperMultiMarker.vbs).
Posted: Fri May 06, 2016 5:45 pm
by Infocatcher
LonerD wrote:Через утилиту TCFS2.exe я сделал такое же перемещение окна Тотал коммандера - и та же самая ситуация, между окном программы и краем экрана промежуток.
rcWork
A RECT structure that specifies the work area rectangle of the display monitor, expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
Кстати... еще интересно проверить альтернативную ветку кода (она осталась от более ранней версии): если заменить
Подскажите, пожалуйста, как модифицировать скрипт insertPathToFile.js под современные реалии (под актуальные версии Акелпада и плагинов)?
-------------
Infocatcher wrote:если заменить...
Вот будут ли в этом случае правильные размеры?
Попробовал - ничего не изменилось.
Posted: Fri May 06, 2016 11:24 pm
by Drugmix
LonerD wrote:(Знаю, что в Windows 6.x-10 можно использовать хоткеи Win+Left / Win+Right, но в ХР они не работают, а хотелось бы универсальное решение для всех ОС).
Может тебе лучше подойдёт скрипт работающий с любыми окнами?
Хоткеи можно и под себя подстроить...
Posted: Sat May 07, 2016 1:08 pm
by VladSh
LonerD wrote:Подскажите, пожалуйста, как модифицировать скрипт insertPathToFile.js под современные реалии (под актуальные версии Акелпада и плагинов)?
/// insertPathToFile
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=11477#p11477
// Version: 2.0
// Modified: VladSh
// Created: (c) se7h, v0.1.1
//
// Insert relative/absolute path to selected file
//
// Usage in Toolbar/ContextMenu plugin:
// -"Insert relative path..." Call("Scripts::Main", 1, "insertPathToFile.js", `"%d"`)
// -"Insert absolute path..." Call("Scripts::Main", 1, "insertPathToFile.js")
//
// CommonFunctions.js you found here http://akelpad.sourceforge.net/forum/viewtopic.php?p=1582#p1582
if (!AkelPad.Include("CommonFunctions.js")) WScript.Quit();
if(AkelPad.GetMainWnd()) {
var pInitialFile = AkelPad.GetEditFile(0);
var pSelFilePath = fileDialogDefault(true, "", pInitialFile, "*");
if(pSelFilePath) {
var dirPath = (WScript.Arguments.length) ? WScript.Arguments(0) : "";
if(!dirPath) {
AkelPad.ReplaceSel(pSelFilePath);
} else {
AkelPad.ReplaceSel(getRelativePath(dirPath, pSelFilePath));
}
}
}
function getRelativePath(mainDirPath, absoluteFilePath) {
var dirSysSeparator = "\";
var firstPathParts = new Array();
var secondPathParts = new Array();
firstPathParts = mainDirPath.split(dirSysSeparator);
secondPathParts = absoluteFilePath.split(dirSysSeparator);
var sameCounter = 0;
for (var i = 0; i < Math.min(firstPathParts.length, secondPathParts.length); i++) {
if (!(firstPathParts[i].toLowerCase() == secondPathParts[i].toLowerCase()))
break;
sameCounter++;
}
if (sameCounter == 0)
return absoluteFilePath;
var newPath = "";
for (var i = sameCounter; i < firstPathParts.length; i++) {
if (i > sameCounter)
newPath += dirSysSeparator;
newPath += "..";
}
if (newPath.length == 0)
newPath = ".";
for (var i = sameCounter; i < secondPathParts.length; i++) {
newPath += dirSysSeparator;
newPath += secondPathParts[i];
}
return newPath;
}
Только я не понимаю смысла скрипта, в чём разница вариантов друг от друга? Выбираю mp3-файл, а он вставляет в обоих случаях один и тот же путь.
Примеры, которые должны получаться при вызове первого и второго варианта дайте, а я подумаю, как это можно переписать.
Posted: Sat May 07, 2016 4:48 pm
by LonerD
Drugmix
Спасибо, взял на заметку, добавил в закладки))
VladSh
Спасибо. Работает. Меня интересовал только абсолютный путь.
Разница между вариантами запуска в том, что если вставлять относительный путь в уже открытый файл - то путь берётся относительно этого файла, то есть если выбираемый файл лежит на несколько уровней выше - то вместо пути вставляются ..\..\..\..\..\ (при этом выбираемый файл должен быть на том же диске). Попробовал - вроде работает и такой вариант.
---------------
Возник ещё такой вопрос. Есть простой скрипт, выполняющий VBS через командную строку:
"Удалить выделенный фрагмент из всего текста" Call("Scripts::Main", 1, "EvalCmd.vbs", `"sSel=AkelPad.GetSelText() : If Len(sSel)>0 Then Call AkelPad.TextReplace(0,sSel,'''',&H00000001 Or &H00200000,true)"`)
Можно ли эту команду прописать через EvalCmd.js?
Попробовал даже упростить, но всё-равно не работает:
"Удалить из всего текста" Call("Scripts::Main", 1, "EvalCmd.js", `"AkelPad.TextReplace(0, AkelPad.GetSelText(), '''', &H00000001 Or &H00200000, true)"`)
"Удалить из всего текста" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.TextReplace(0, AkelPad.GetSelText(), "", 0x00000001 | 0x00200000, 1)`)
Posted: Sat May 07, 2016 6:21 pm
by VladSh
LonerD wrote:Разница между вариантами запуска в том, что если вставлять относительный путь в уже открытый файл - то путь берётся относительно этого файла, то есть если выбираемый файл лежит на несколько уровней выше - то вместо пути вставляются ..\..\..\..\..\ (при этом выбираемый файл должен быть на том же диске).
Я всё равно ничё не понял. На примере можно показать, какой файл и какой получается путь?
Posted: Sat May 07, 2016 7:25 pm
by Skif_off
VladSh
Так понимаю, если открыт файл d:\temp\1\1.txt:
- запускаете скрипт и указываете файл d:\temp\2\2.txt - вставляется "d:\temp\2\2.txt";
- запускаете с "%d" и указываете файл d:\temp\2\2.txt - вставляется "..\2\2.txt".
Posted: Sat May 07, 2016 10:38 pm
by LonerD
VladSh wrote:Я всё равно ничё не понял. На примере можно показать, какой файл и какой получается путь?
Skif_off уже пояснил. Это и имелось в виду.
KDJ
Thank you ))
Posted: Sat May 07, 2016 11:40 pm
by LonerD
KDJ
Small bug in script InsertDateFromCalendar.js
By default Shift+Enter insert Date, and Shift+Ctrl+Enter - Time Date. But it works only with left Shift (at least on my Windows 10 x64). Please, add right Shift support too.