Scripts discussion (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:
Infocatcher wrote:А в случае с сохраненным файлом и автоматическом определении по расширению?
Всё будет :)
Что-то я не пойму, новая версия уже наступила?
А то у меня «псевдоним для неизвестного файла» «.txt», и он не определяется через

Code: Select all

AkelPad.CallW("Coder::Settings", 18 /*DLLA_CODER_GETALIAS*/, ...

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

Post by VladSh »

F. Phoenix
Пусть уже "Тест" будет, хрен бы с ним) На крайняк "Проверить". Это всё лучше чем "Запуск" или "Запустить".

Infocatcher
У меня работает)
Единственное - поставил у себя -xmlExts="[sxh]tml?|mht(ml)?"

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

Post by Instructor »

Infocatcher wrote:Что-то я не пойму, новая версия уже наступила?
Должна была :)

В процессе работы над новой версией успешно было оттестировано, но видимо перед релизом эта часть кода была изменена. Coder v10.3

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

Post by Infocatcher »


Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Вооот, теперь и у меня работает.
Infocatcher, А на русском языке комментариев уже не ждать?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

F. Phoenix wrote:Now it seems too large :lol: What about adding width variables?
For me, the buttons fixed width look better.
And you can use full words:
"&Деэкранир." -> "&Деэкранировать"
"Прозрачн. +" -> "Прозрачность+"
"Прозрачн. -" -> "Прозрачность-"

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Fixed or just same width? Just English has more short words than Russian or Polish, so I think, anyway it's better with lesser buttons. In case of Russian, look at this gradient:

Image

Which variants do you like more? I'm inclined to the first and third: I don't like shorting words, but nice layout is more preferred. Anyway, take this (with or without that settings - as you wish) in case we disagreed with Vlad about just one button:

Code: Select all

/********************************
RegExpTestJS.js - ver. 2012-09-16
Interface language
Language:      Russian (1049)
Translated by: forum community
*********************************/

nAX = 200, nAW = 100;
nBX = 305, nBW = 100;
nCX = 415, nCW = 75;
nRX = 200, nRW = 110;
           nPW = 386;
nMX = 400, nMW = 95;

pTxtCaption   = "Отладчик регулярных выражений JavaScript";
pTxtRegExp    = "Регулярное выражение (RE)";
pTxtSource    = "RE.source";
pTxtEscape    = "&Экранировать";
pTxtUnEscape  = "&Деэкранировать";
pTxtRE        = "RE";
pTxtIgCase    = "&ignoreCase";
pTxtGlobal    = "&global";
pTxtMultiL    = "&multiline";
pTxtNewLine   = "Переносы:";
pTxtCollect   = "&Коллекция";
pTxtNLWin     = "Win (\\r\\n)";
pTxtNLUnix    = "Unix (\\n)";
pTxtNLMac     = "Mac (\\r)";
pTxtString    = "Строка с данными для обработки (Str)";
pTxtAction    = "Операция";
pTxtMeTest    = "RE.test(Str)";
pTxtMeExec    = "RE.exec(Str)";
pTxtMeSearch  = "Str.search(RE)";
pTxtMeMatch   = "Str.match(RE)";
pTxtMeSplit   = "Str.split(RE)";
pTxtMeReplace = "Str.replace(RE,With):";
pTxtResult    = "Результат";
pTxtLastInd   = "RE.lastIndex=";
pTxtResetInd  = "Сбросить &индекс";
pTxtArray     = "Array";
pTxtEmpArray  = "(пустой массив)";
pTxtGlobPro   = "Свойства глобального объекта RegExp";
pTxtTest      = "Тест";
pTxtHelp      = "Справка";
pTxtOpaqMinus = "Прозрачность +";
pTxtOpaqPlus  = "Прозрачность -";
pTxtClose     = "Закрыть";
pTxtCopyPaste = "Обмен";
pTxtCopy      = "Обмен";
pTxtCopyCB    = "Копировать в буфер";
pTxtCopyAP    = "Копировать в AkelPad";
pTxtPasteCB   = "Вставить из буфера";
pTxtPasteAP   = "Вставить из AkelPad";
pTxtNoRE      = "Регулярное выражение отсутствует."
pTxtNoStr     = "Строка для тестирования отсутствует.";
pTxtRECollect = "Коллекция шаблонов";
pTxtName      = "Наименование";
pTxtValue     = "Значение";
pTxtAdd       = "Добавить (Ins)";
pTxtRename    = "Переим. (F2)";
pTxtDelete    = "Удалить (Del)";
pTxtOK        = "OK (Enter)";
pTxtAddRE     = "Новый шаблон";
pTxtRenRE     = "Переименование шаблона";
pTxtNewName   = "Новое имя";
pTxtREExist   = "Шаблон уже сохранен под именем ";
pTxtNameExist = "Данное наименование уже существует: ";
pTxtREHelp    = "Справка по регулярным выражениям";
pTxtHelpText  = "\tМодификаторы, использующиеся для поиска\r\ni\t\tне различать строчные и заглавные буквы\r\ng\t\tглобальный поиск (обрабатываются все совпадения\r\n\t\tс шаблоном поиска)\r\nm\t\tмногострочный поиск\r\n\r\n\tНаборы символов, использующиеся для поиска\r\nВыражение\tОписание\r\n[abc]\t\tНайти любой, указанный в скобках, символ\r\n[^abc]\t\tНайти любой символ, исключая те, что в скобках\r\n[0-9]\t\tНайти любую цифру от 0 до 9\r\n[A-Z]\t\tНайти любой символ в верхнем регистре от A до Z\r\n[a-z]\t\tНайти любой символ в нижнем регистре от a до z\r\n[A-z]\t\tНайти любой символ от A в верхнем регистре до z\r\n\t\tв нижнем регистре\r\n[adgk]\t\tНайти любой символ из заданного набора\r\n[^adgk]\t\tНайти любой символ кроме данного набора\r\n(red|blue|green)\tНайти любое из перечисленных вхождений\r\n\r\n\tСпециальные метасимволы\r\n.\t\tНайдёт любой символ, кроме переводов строк: \\n, \\r,\r\n\t\t\\u2028 или \\u2029 (можно использовать [\\s\\S] для\r\n\t\tпоиска любого символа, включая переводы строк)\r\n\\w\t\tНайдёт любой символ латинского алфавита, включая\r\n\t\tбуквы, цифры и знак подчеркивания\r\n\\W\t\tНайдет любой не-(лат.)словесный символ\r\n\\d\t\tНайдёт цифру из любого алфавита (у нас же юникод);\r\n\t\tиспльзуйте [0-9], чтобы найти только обычные цифры\r\n\\D\t\tНайдет нецифровой символ (все алфавиты)\r\n\\s\t\tНайдет любой пробельный символ, включая пробел,\r\n\t\tтабуляцию, переводы строки и другие юникодные\r\n\t\tпробельные символы\r\n\\S\t\tНайдет любой символ, кроме пробельного\r\n\\b\t\tНаходит границу слов латинских алфавитов, например\r\n\t\tпробел; не путать с [\\b]!\r\n\\B\t\tНаходит совпадения не по границам слов\r\n\\0\t\tНайдет символ NUL; не добавляйте в конец другие\r\n\t\tцифры\r\n\\n\t\tНаходит символ новой строки\r\n\\f\t\tНаходит символ прогона (form-feed)\r\n\\r\t\tНаходит символ возврата каретки\r\n\\t\t\tНаходит символ обычной табуляции\r\n\\v\t\tНаходит символ вертикальной табуляции\r\n\\hhh\t\tНаходит символ, заданный восьмеричным числом hhh\r\n\\xhh\t\tНаходит символ, заданный шестнадцатиричным\r\n\t\tчислом, с кодом hh (2 шестнадцатиричных цифры)\r\n\\uhhhh\t\tНаходит юникодный символ, заданный\r\n\t\tшестнадцатиричным числом, с кодом hhhh\r\n\t\t(4 шестнадцатиричных цифры)\r\n\r\n\tКвантификаторы\r\n^\t\tОбозначает начало входных данных; если установлен\r\n\t\tфлаг многострочного поиска \"m\", то также сработает\r\n\t\tпри начале новой строки\r\n$\t\tОбозначает конец входных данных; если установлен\r\n\t\tфлаг многострочного поиска, то также сработает\r\n\t\tв конце строки\r\nx(?=y)\t\tНаходит x, только если за x следует y\r\nx(?!y)\t\tНаходит x, только если за x не следует y\r\n+\t\tОбозначает повторение предшествующего элемента\r\n\t\t1 или более раз, эквивалентно {1,}\r\n*\t\tОбозначает повторение предшествующего элемента\r\n\t\t0 или более раз\r\n?\t\tОбозначает, что предшествующий элемент может\r\n\t\tкак присутствовать, так и отсутствовать\r\n{n}\t\tНаходит ровно n повторений предшествующего\r\n\t\tэлемента\r\n{n,}\t\tНаходит n и более повторений предшествующего\r\n\t\tэлемента\r\n{n,m}\t\tНаходит от n до m повторений предшествующего\r\n\t\tэлемента\r\n\r\n\tСвойства объекта RegExp\r\nglobal\t\tПоказывает, был ли включен флаг поиска всех\r\n\t\tсовпадений \"g\"\r\nignoreCase\tПоказывает, был ли включен флаг\r\n\t\tрегистронезависимого поиска \"i\"\r\nmultiline\t\tПоказывает, был ли включен флаг многострочного\r\n\t\tпоиска \"m\"\r\nlastIndex\t\tИндекс, с которого начинать следующий поиск\r\nsource\t\tТекст RegExp-паттерна\r\n\r\n\tМетоды объекта RegExp\r\ncompile()\t\tКомпилирует регулярное выражение\r\nexec()\t\tПри совпадении возвращает массив и обновляет\r\n\t\tсвойства объекта RegExp, если совпадений нет,\r\n\t\tвозвращает null\r\ntest()\t\tИспользуется, чтобы выяснить, есть ли совпадения\r\n\t\tрегулярного выражения со строкой (аналогично\r\n\t\tString#search), возвращает true или false; чтобы\r\n\t\tполучить сами совпадения, используйте exec или\r\n\t\tString#match\r\ntoString()\t\tВыводит строковое представление объекта RegExp,\r\n\t\tт.е. \"/паттерн/\"\r\n\t________________________________________________\r\n\tИсточники: http://www.w3schools.com,  http://javascript.ru";

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

Post by Infocatcher »

Andrey_A_A wrote:
Вооот, теперь и у меня работает.
Infocatcher, А на русском языке комментариев уже не ждать?
По поводу «теперь работает» или про insertTag.js?
Про сам скрипт – отсюда и далее.
А заработало вот это для автоматически установленной темы.

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

Post by Infocatcher »

Вот у нас есть

Code: Select all

  SetSel(nSelStart, nSelEnd[, nFlags]);

Аргументы
  nSelStart
    Позиция начала выделения.
  nSelEnd
    Позиция конца выделения.
  nFlags
    0x001  //AESELT_COLUMNON              Включить вертикальное выделение.
    0x002  //AESELT_COLUMNASIS            Оставить вертикальное выделение как есть.
    0x004  //AESELT_LOCKNOTIFY            Не посылать оповещения AEN_SELCHANGING и AEN_SELCHANGED.
    0x008  //AESELT_LOCKSCROLL            Не прокручивать окно редактирования.
    0x010  //AESELT_LOCKUPDATE            Не обновлять окно редактирования.
    0x020  //AESELT_LOCKCARET             Не перемещать каретку.
    0x080  //AESELT_NOCARETHORZINDENT     Не менять горизонтальный отступ каретки.
    0x100  //AESELT_NOVERTSCROLLCORRECT   При некоторых условиях прокрутка может увеличиваться на величину одной строки.
Но при этом

Code: Select all

AkelPad.ReplaceSel
__________________

Заменить выделение.

  ReplaceSel(pText[, bSelect]);

Аргументы
  pText
    Текст, которым заменяется выделение.
  bSelect
    true   выделить вставленный текст.
    false  не выделять вставленный текст (по умолчанию).
Почему в первом случае есть AESELT_LOCKSCROLL, а во втором надо еще дополнительный код писать? :)


И как центрировать каретку после SetSel()?
А то надо перейти к позиции по отступу и не хочется считать столбцы для

Code: Select all

AkelPad.SendMessage(hMainWnd, 1206 /*AKD_GOTOW*/, 0x1 /*GT_LINE*/, AkelPad.MemStrPtr(gotoStr));

Offline
Posts: 60
Joined: Tue Aug 21, 2012 11:17 am
Location: UK

Go to "line[:column]"

Post by tmsg »

I'm probably being thick here but I simply can't find an AP command or a script to simulate the behaviour of the Edit/Go to... command.

So I've written a script taking "line[:col]" as its only argument and this works, more or less. Go to line is easy, but once I have the line, positioning on the correct column doesn't work if the line contains tabs.

I know why this is happening but I don't know enough about AP scripting to remedy this... any hints from the script magicians?

TM

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

F. Phoenix wrote:Fixed or just same width? ...
I mean fixed and same width.
It seems to me that the fourth variant is the best.

VladSh, F. Phoenix
Please give me the final version of the translation.
tmsg wrote:... I simply can't find an AP command or a script to simulate the behaviour of the Edit/Go to... command.
Dialog box: Command(4162 /*IDM_EDIT_GOTO*/).
Without dialog box: message AKD_GOTO (read in AkelDLL.h).

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

There was final - just remove width settings, if don't like it: it works normally with your current layout too.

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

Post by Instructor »

Infocatcher wrote:А то надо перейти к позиции по отступу и не хочется считать столбцы для...
См. GT_OFFSETCHAR.
tmsg wrote:...can't find an AP command or a script to simulate the behaviour of the Edit/Go to... command.
It is right under your post :)

Code: Select all

Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.SendMessage(AkelPad.GetMainWnd(), 1206 /*AKD_GOTOW*/, 0x1 /*GT_LINE*/, AkelPad.MemStrPtr("100:5"));`)

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

F. Phoenix, thank you very much.

Updated Russian translation: RegExpTestJS_1049.lng

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor
По поводу скрипта DrawLine.js
Хороший скрипт, можно ещё вставить в него горячую клавишу по выходу из него.
Т.е. нажал - нарисовал - нажал гор. клавишу выхода
Locked