Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor, извиняюсь за поздний ответ(

Скрипт этот: UndoAllNoScroll.js. Начинали обсуждать этот глюк здесь.

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

Post by Instructor »

VladSh
Почему MemAlloc и MemFree вызываются без параметра true? Обсуждалось же.

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

Post by VladSh »

Instructor wrote:VladSh
Почему MemAlloc и MemFree вызываются без параметра true? Обсуждалось же.
:oops:
Спасибо!

EDITED: ещё раз :oops: :!: Оказывается у меня на компе был скрипт с этими параметрами (видно я на странице заменить тогда забыл - сейчас обновил скрипт на странице), ошибка всё равно есть.

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

Post by Instructor »

VladSh
Не воспроизводится. Может есть пошаговая последовательность?

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

Post by VladSh »

Алгоритм примерно такой:
- создание новой вкладки;
- вставка текста из буфера (у меня на Ctrl+V стоит Command(4403));
- обработка теста примитивным скриптом (обрамление тегами);
- Ctrl+A, Ctrl+X.
Этот цикл повторяется многократно, бывает, в течении нескольких часов, потому более точно расписать не могу(

Единственное: я продолжаю работать с текстом в других вкладках (открываю, редактирую, закрываю...).
Скрипты, работающие со всеми вкладками сразу (перебором) не использую.

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

Post by VladSh »

Вот сейчас было точно такое.
Прислали большое письмо, я его вставил в новую вкладку, потом отвечал "уголками" - было много Ctrl+X и Ctrl+V... естественно файл не сохранял. После всей правки: Ctrl+A, Ctrl+C, а потом для интереса запустил UndoAllNoScroll, в результате отменилось совсем немного - осталось 3/4 от всего текста, а должна быть пустая вкладка и файл должен был быть без признака модификации.
Да, и скрипты/плагины не запускал вообще.

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

Post by VladSh »

Instructor wrote:Почему MemAlloc и MemFree вызываются без параметра true?
У Вас в скрипте InsertDate.js они тоже без 2-го параметра, так и должно быть?
Т.е. я хотел спросить: всегда они там должны быть или иногда? Если иногда, то когда именно?

Offline
Posts: 27
Joined: Sun Mar 16, 2008 10:26 pm

Post by kadvlad »

Друзья,

подскажите, пожалуйста, где можно взять скрипт DelInsideSpaces.js?
Поиском по форуму не нашёл.

И ещё когда-то читал, что в инструменте автозамены (CTRL-R) можно сделать кнопкой по умолчанию "Заменить все" (вместо "Найти далее").
Сейчас не могу вспомнить, где об этом почитать.

Спасибо.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

kadvlad
про кнопку: здесь

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

Post by VladSh »

kadvlad
Сорри, действительно скрипта в сборнике не было... :shock:

Положил скрипт в сборник: DelInsideSpaces.js
Last edited by VladSh on Mon Jan 31, 2011 9:33 am, edited 1 time in total.

Offline
Posts: 27
Joined: Sun Mar 16, 2008 10:26 pm

Post by kadvlad »

VladSh
спасибо.

Всё нашёл, всё сделал, разобрался. Работает.

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

Post by VladSh »

Infocatcher
Обнаружился мелкий бажок в _punctuationFixer.js
исходно:

Code: Select all

)))
результат:

Code: Select all

) ))

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh
Ох уж эти смайлики...

Code: Select all

		// Fix brackets:
		txt = txt
			.replace(/(\S)[\t ]*\([\t ]*/g, "$1 (")  // text(text -> text (text
			.replace(/[\t ]*\)[\t ]*([^.!?:;,()])/g, ") $1"); // text)text -> text) text
[^.!?:;,] => [^.!?:;,()]

  _punctuationFixer.js

Offline
Posts: 120
Joined: Sat Jan 12, 2008 10:16 am
Location: Shantou, China

shorter code in searchreplace.js and linefilter.js

Post by cnnnc »

There is many code like below in searchreplace.js and linefilter.js:

Code: Select all

AkelPad.MemCopy(lpBuffer, pScriptName, _TSTR);
oFunction.AddParameter(0);
oFunction.AddParameter(lpBuffer);
oFunction.AddParameter(0);
oFunction.AddParameter(0x90CA0000);     //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
oFunction.AddParameter(0);
oFunction.AddParameter(0);
oFunction.AddParameter(392);
oFunction.AddParameter(223);
oFunction.AddParameter(hMainWnd);
oFunction.AddParameter(0);              //ID
oFunction.AddParameter(hInstanceDLL);
oFunction.AddParameter(DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.
hWndDialog=oFunction.Call("user32::CreateWindowEx" + _TCHAR);
It's waste space, it can be shorter like below:

Code: Select all

hWndDialog=CreateWindowEx(0,pScriptName,0,0x90CA0000,0,0,392,223,hMainWnd,0,hInstanceDLL,DialogCallback);

// ...

function CreateWindowEx(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
{
  AkelPad.MemCopy(lpBuffer, lpClassName, _TSTR);
  oFunction.AddParameter(dwExStyle);
  oFunction.AddParameter(lpBuffer);
  oFunction.AddParameter(lpWindowName);
  oFunction.AddParameter(dwStyle);
  oFunction.AddParameter(x);
  oFunction.AddParameter(y);
  oFunction.AddParameter(nWidth);
  oFunction.AddParameter(nHeight);
  oFunction.AddParameter(hWndParent);
  oFunction.AddParameter(hMenu);
  oFunction.AddParameter(hInstance);
  oFunction.AddParameter(lpParam);

  hWndWindow=oFunction.Call("user32::CreateWindowEx" + _TCHAR);
  return hWndWindow;
}
And function GetLangString is inefficient. You can use the below for insteed:

Code: Select all

var pLowJscript
var pWhat
var pWith
var pMatchCase
var pMultiLine
var pEscapeSeq
var pFunction
var pDirection
var pForward
var pBackward
var pBeginning
var pInSel
var pAllFiles
var pFindNext
var pReplace
var pReplaceAll
var pCancel
var pSyntaxError
var pFinished
var pCountFiles
var pCountChanges

var nLangID;
nLangID=oFunction.Call("kernel32::GetUserDefaultLangID");
nLangID=nLangID & 0x3ff; //PRIMARYLANGID
if (nLangID == 0x19) //LANG_RUSSIAN
{
  pLowJscript = "\u0412\u0435\u0440\u0441\u0438\u044F\u0020\u004A\u0053\u0063\u0072\u0069\u0070\u0074\u0020\u043D\u0438\u0436\u0435\u002C\u0020\u0447\u0435\u043C\u0020\u0035\u002E\u0035\u002E";
  pWhat = "\u0427\u0442\u043E\u003A";
  pWith = "\u0427\u0435\u043C\u003A";
  pMatchCase = "\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C\u0020\u0440\u0435\u0433\u0438\u0441\u0442\u0440";
  pMultiLine = "\u041C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u043E";
  pEscapeSeq = "\u0045\u0073\u0063\u002D\u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438";
  pFunction = "\u0417\u0430\u043C\u0435\u043D\u044F\u0442\u044C\u0020\u043D\u0430\u0020\u0444\u0443\u043D\u043A\u0446\u0438\u044E";
  pDirection = "\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435";
  pForward = "\u0412\u043D\u0438\u0437";
  pBackward = "\u0412\u0432\u0435\u0440\u0445";
  pBeginning = "\u0421\u0020\u043D\u0430\u0447\u0430\u043B\u0430";
  pInSel = "\u0412\u0020\u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438";
  pAllFiles = "\u0412\u0441\u0435\u0020\u0444\u0430\u0439\u043B\u044B";
  pFindNext = "\u041D\u0430\u0439\u0442\u0438\u0020\u0434\u0430\u043B\u0435\u0435";
  pReplace = "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C";
  pReplaceAll = "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C\u0020\u0432\u0441\u0451";
  pCancel = "\u041E\u0442\u043C\u0435\u043D\u0430";
  pSyntaxError = "\u0421\u0438\u043D\u0442\u0430\u043A\u0441\u0438\u0447\u0435\u0441\u043A\u0430\u044F\u0020\u043E\u0448\u0438\u0431\u043A\u0430\u003A\n \\\\ - \u043E\u0431\u0440\u0430\u0442\u043D\u044B\u0439\u0020\u0441\u043B\u044D\u0448\n \\r - \u043A\u043E\u043D\u0435\u0446\u0020\u0441\u0442\u0440\u043E\u043A\u0438\n \\t - \u0437\u043D\u0430\u043A\u0020\u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438";
  pFinished = "\u041F\u043E\u0438\u0441\u043A\u0020\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u002E";
  pCountFiles = "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445\u0020\u0444\u0430\u0439\u043B\u043E\u0432\u003A\u0020";
  pCountChanges = "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u0020\u0437\u0430\u043C\u0435\u043D\u003A\u0020";
}
else
{
  pLowJscript = "JScript version is less than 5.5.";
  pWhat = "What:";
  pWith = "With:";
  pMatchCase = "Case sensitive";
  pMultiLine = "Multiline";
  pEscapeSeq = "Esc-sequences";
  pFunction = "Replace with function";
  pDirection = "Direction";
  pForward = "Down";
  pBackward = "Up";
  pBeginning = "Beginning";
  pInSel = "In selection";
  pAllFiles = "All files";
  pFindNext = "&Find next";
  pReplace = "&Replace";
  pReplaceAll = "Replace &All";
  pCancel = "Cancel";
  pSyntaxError = "Syntax error:\n \\\\ - backslash\n \\r - line feed\n \\t - tabulation";
  pFinished = "Search finished.";
  pCountFiles = "Changed files: ";
  pCountChanges = "Count of changes: ";
}
And for example "GetLangString(STRID_LOWJSCRIPT)" -> "pLowJscript"

In this way the js might be a little quicker and smaller. And the LangString might be more easy to be translated.

Right?

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

Post by VladSh »

Infocatcher
Наверное уже достал, но ещё чуток по   _punctuationFixer.js :) Начинаешь плотно использовать и замечаешь такие мелочи...

По кавычкам
исходно:

Code: Select all

Вспомнила как называется: "Мужчина и Женщина. Как нам понять друг друга?" Книга просто супер!
результат:

Code: Select all

Вспомнила как называется: «Мужчина и Женщина. Как нам понять друг друга? «Книга просто супер!
правда не знаю, можно ли это поправить?..


UPDATED: И ещё одна фича.

Убирается сдвиг впереди
исходно:

Code: Select all

1. Общий текст:
   - пункт 1;
   - пункт n.
результат:

Code: Select all

1. Общий текст:
- пункт 1;
- пункт n.
т.е. съедает пробелы/табы в начале строки.
Locked