| View previous topic :: View next topic |
| Author |
Message |
San_dr
Joined: 06 Dec 2010 Posts: 109 Location: г.Харьков, Русь
|
Posted: Tue May 22, 2012 1:39 pm Post subject: |
|
|
создал из стандартного тулбара, скопировав его ToolBar-TextMain.dll и такой - же файл ToolBar-TextMain.ini из стандартного (временно, пока не настрою как полноэкранный)
поместил FullScreenWithToolBar.js в папку скриптов, создал пункты меню
| Code: | SEPARATOR
-"С тулбаром по умолчанию" Call(ScriptsMain, 1, FullScreenWithToolBar.js)
-"С тулбаром для работы с текстом" Call(ScriptsMain, 1, FullScreenWithToolBar.js, ToolBar-TextMain) |
при вызове любого пункта краш с сообщением
что не так?
переименовывал новые ini и dll в ToolBarMain - то же самое. TextMain - аналогично
Last edited by San_dr on Tue May 22, 2012 7:11 pm; edited 1 time in total |
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1069 Location: Poland
|
Posted: Tue May 22, 2012 1:55 pm Post subject: |
|
|
San_dr
You have to copy exactly, what VladSh wrote in the script: | Code: | -"С тулбаром по умолчанию" Call("Scripts::Main", 1, "FullScreenWithToolBar.js")
-"С тулбаром для работы с текстом" Call("Scripts::Main", 1, "FullScreenWithToolBar.js", "ToolBar-Text::Main") |
And file name is ToolBar-Text.dll. |
|
| Back to top |
|
 |
San_dr
Joined: 06 Dec 2010 Posts: 109 Location: г.Харьков, Русь
|
Posted: Tue May 22, 2012 4:45 pm Post subject: |
|
|
KDJ
Спасибо, все получилось
ну, что еще сказать про эту замечательную программу...
я давно говорю, что польский джаз глубже и умней американского! )))))) |
|
| Back to top |
|
 |
alok
Joined: 06 Jul 2012 Posts: 2
|
Posted: Tue Jul 17, 2012 6:11 am Post subject: |
|
|
Привет всем! Есть текст вида:
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
Необходимо, чтобы после каждых 3 непустых строк добавлялся перевод строки:
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
любой текст
Как это сделать?  |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 17, 2012 1:59 pm Post subject: |
|
|
alok
Как-то так | Code: | var lineSepDefault = 3;
var pBreak = "\r";
var sContent = AkelPad.GetTextRange(0, -1);
var arrLines = sContent.split(pBreak);
var kBorder;
var bEmptyLine;
for (i = 0; i < arrLines.length; i++) {
if (arrLines[i].length != 0)
{
kBorder = arrLines.length - i;
if (kBorder > lineSepDefault) kBorder = lineSepDefault;
for (k = 0; k < kBorder; k++) {
bEmptyLine = (arrLines[i + k].length == 0);
if (bEmptyLine) break;
}
i += (k - 1);
if ((k == lineSepDefault) && !bEmptyLine)
arrLines[i] += pBreak;
}
}
AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(arrLines.join(pBreak)); |
.
Можно было бегать по строке с помощью indexOf (и так наверное было бы быстрее), но мне не захотелось. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Tue Jul 17, 2012 3:38 pm Post subject: |
|
|
А вот вариант из серии «теперь у нас есть две проблемы», на регулярных выражениях:
Что: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))
Чем: \0\n
Если через SearchReplace.js, то заменять на $&\n |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 17, 2012 4:47 pm Post subject: |
|
|
Infocatcher
Для интереса скопировал "Что" и $&\n в SearchReplace.js, поставил галку "Регулярные выражения", но оно не работает. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Tue Jul 17, 2012 6:50 pm Post subject: |
|
|
VladSh
Странно, у меня работает.
Если только это старая версия JScript, не умеющая (?! ...) |
|
| Back to top |
|
 |
alok
Joined: 06 Jul 2012 Posts: 2
|
Posted: Wed Jul 18, 2012 5:28 am Post subject: |
|
|
| VladSh wrote: | | alok Как-то так |
Спасибо большое, работает!!!!
| Infocatcher wrote: | А вот вариант из серии «теперь у нас есть две проблемы», на регулярных выражениях:
Что: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))
Чем: \0\n
Если через SearchReplace.js, то заменять на $&\n |
Описал как:
pContent = pContent.replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/gm, "\0\n");
Занулило данные. Но все равно спасибо. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Wed Jul 18, 2012 9:37 am Post subject: |
|
|
alok
\0 – это для встроенного диалога замены.
Вот так работает:
| Code: | AkelPad.ReplaceSel(
AkelPad.GetSelText()
.replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/g, "$&\r")
); |
Там еще тонкость в том, что находит-то любой вариант перевода строки, а замена делается на вполне конкретный.
Или можно вот так:
| Code: | AkelPad.ReplaceSel(
AkelPad.GetSelText()
.replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/g, "$&$2")
); |
|
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Wed Jul 18, 2012 12:59 pm Post subject: |
|
|
Infocatcher
У меня на WinXP sp3 не работает ни один из приведенных вариантов. |
|
| Back to top |
|
 |
Visitor7
Joined: 03 Jun 2012 Posts: 88
|
Posted: Wed Jul 18, 2012 2:11 pm Post subject: |
|
|
VladSh, тоже XPsp3, оба работают: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n)) R: \0\2 SR: $&$2
Infocatcher, у меня в скрипте с \n и \r заморачиваться бесполезно. При поиске \n вроде вообще не работает, а \r находит любое завершение строки. При замене \r ставит то завершение строки, которое установлено по умолчанию в меню "формат новой строки". А \n странно себя ведет при замене. Если она попадает после завершения строки, то игнорируется, а если после символа, то добавляет перенос строки по умолчанию. Вот так работает для любых завершений строк: .replace(/([^\r]+\r){3}(?!\r)/g, "$&\r");
В SearchReplace наоборот: (.+\n){3}(?!\n) и $&\n
А вот в Replace поиск действует так же как в SearchReplace(кроме .), но замена чувствительна и \r в замене обозначает именно символ \r, а \n - \n. Поэтому вот так: ([^\n]+(\n)){3}(?!\n) и \0\2 |
|
| Back to top |
|
 |
vadim
Joined: 16 Aug 2012 Posts: 8
|
Posted: Mon Sep 10, 2012 6:25 pm Post subject: |
|
|
Мне нужна программа, расширяющая возможности AkelPad, но я не знаю что это должно быть, плагин или скрипт. Мне посоветовали обратиться сюда, т.к. ее вроде возможно реализовать при помощи скрипта. Ничего подобного я на форуме не нашел (может плохо искал).
Программа должна уметь делать примерно следующее. В одну из вкладок загружается структурированный файл, информация в котором помещена внутри специальных меток (что-то типа тегов в HTML файлах). Каждая пара меток уникальна.
Пример: <01>информация 1</01>; <02>информация 2</02> и т.д.
Во вторую вкладку помещается шаблон со вставленными аналогичными метками, но без информации.
Пример: <H2><01></01></H2> <P><02></02></P>
Необходимо, чтобы после запуска требуемой мне программы информация скопировалась из меток вкладки файла с информацией в соответствующие метки вкладки с шаблоном, а метки в шаблоне, после копирования, уничтожились.
Пример: <H2>информация 1</H2> <P>информация 2</P>
Информация для копирования ищется во всех неактивированных вкладках и переносится в активированную.
Уничтожать или нет метки в шаблоне устанавливается в настройках.
В настройках прописывается список из каких меток в какие должна копироваться информация.
Вот что примерно требуется. Если нужно, могу написать подробнее, предоставить примеры файлов.
Не взялся бы кто-нибудь написать такой скрипт, и что для этого требуется от меня?
Пишите в личку. |
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1069 Location: Poland
|
Posted: Wed Sep 12, 2012 8:23 pm Post subject: |
|
|
vadim
Try this script: CopyInfo.js | Code: | /**************************************
Usage
1. AkelPad in MDI/PMDI mode.
2. Open only two files:
- first - template file,
- next - file with info.
3. Run this script.
4. If not errors, result is in new tab.
**************************************/
var sText = AkelPad.GetTextRange(0, -1);
var oRE = /(<([\s\S]+?)>)([\s\S]+?)(<\/\2>)/g;
var aInfo = [];
var aExec;
var i;
while (aExec = oRE.exec(sText))
aInfo.push([aExec[1] + aExec[4], aExec[3]]);
if (aInfo.length)
{
AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
sText = AkelPad.GetTextRange(0, -1);
for (i = 0; i < aInfo.length; ++i)
{
oRE = new RegExp(Escape(aInfo[i][0]), "g");
sText = sText.replace(oRE, function(sMatch, nPos, sString) {return aInfo[i][1];} );
}
AkelPad.Command(4101 /*IDM_FILE_NEW)*/);
// AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(sText);
}
function Escape(sStr)
{
return sStr.replace(/[\\.^$+*?|()\[\]{}]/g, "\\$&");
} |
|
|
| Back to top |
|
 |
sasa236
Joined: 26 Oct 2012 Posts: 5
|
Posted: Fri Oct 26, 2012 6:09 am Post subject: Ведение лога событий. |
|
|
Есть необходимость в лог-файле, где бы отражалось дата и имя открытых и напечатанных файлов (в т.ч. и напечатанных в пакетном режиме).
Просьба помочь практически, т.к. в скриптах не силен. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|