Page 11 of 97

Posted: Mon Sep 07, 2009 8:26 am
by VladSh
Instructor, извиняюсь за поздний ответ(

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

Posted: Mon Sep 07, 2009 12:08 pm
by Instructor
VladSh
Почему MemAlloc и MemFree вызываются без параметра true? Обсуждалось же.

Posted: Mon Sep 07, 2009 1:43 pm
by VladSh
Instructor wrote:VladSh
Почему MemAlloc и MemFree вызываются без параметра true? Обсуждалось же.
:oops:
Спасибо!

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

Posted: Sat Sep 12, 2009 2:47 pm
by Instructor
VladSh
Не воспроизводится. Может есть пошаговая последовательность?

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

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

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

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

Posted: Sun Sep 20, 2009 10:44 pm
by kadvlad
Друзья,

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

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

Спасибо.

Posted: Mon Sep 21, 2009 6:26 am
by Fr0sT
kadvlad
про кнопку: здесь

Posted: Mon Sep 21, 2009 8:29 am
by VladSh
kadvlad
Сорри, действительно скрипта в сборнике не было... :shock:

Положил скрипт в сборник: DelInsideSpaces.js

Posted: Mon Sep 21, 2009 10:14 am
by kadvlad
VladSh
спасибо.

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

Posted: Tue Sep 22, 2009 3:24 pm
by VladSh
Infocatcher
Обнаружился мелкий бажок в _punctuationFixer.js
исходно:

Code: Select all

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

Code: Select all

) ))

Posted: Tue Sep 22, 2009 3:49 pm
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

shorter code in searchreplace.js and linefilter.js

Posted: Wed Sep 23, 2009 12:58 am
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?

Posted: Wed Sep 23, 2009 8:28 am
by VladSh
Infocatcher
Наверное уже достал, но ещё чуток по   _punctuationFixer.js :) Начинаешь плотно использовать и замечаешь такие мелочи...

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

Code: Select all

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

Code: Select all

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


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

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

Code: Select all

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

Code: Select all

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