Page 14 of 24

Posted: Thu Jun 26, 2014 9:25 pm
by KDJ
Cuprum

Code: Select all

WScript.Echo(GetCurrentLineText());

function GetCurrentLineText()
{
  var hEditWnd = AkelPad.GetEditWnd();
  var lpIndex  = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
  var nOffsetBegin;
  var nOffsetEnd;

  AkelPad.SendMessage(hEditWnd, 3130 /*AEM_GETINDEX*/, 5 /*AEGI_CARETCHAR*/, lpIndex);

  AkelPad.SendMessage(hEditWnd, 3130 /*AEM_GETINDEX*/, 16 /*AEGI_LINEBEGIN*/, lpIndex);
  nOffsetBegin = AkelPad.SendMessage(hEditWnd, 3136 /*AEM_INDEXTORICHOFFSET*/, 0, lpIndex);

  AkelPad.SendMessage(hEditWnd, 3130 /*AEM_GETINDEX*/, 17 /*AEGI_LINEEND*/, lpIndex);
  nOffsetEnd = AkelPad.SendMessage(hEditWnd, 3136 /*AEM_INDEXTORICHOFFSET*/, 0, lpIndex);

  AkelPad.MemFree(lpIndex);

  return AkelPad.GetTextRange(nOffsetBegin, nOffsetEnd);
}

Posted: Thu Jun 26, 2014 9:56 pm
by Cuprum
KDJ
Благодарю1

Posted: Sun Jun 29, 2014 9:28 am
by Lenchik
Наверняка можно мощью скриптов Акельпада повторить или даже превзойти возможности плагина для другого редактора.
https://sublime.wbond.net/packages/LaTeXTab
Может быть, кто-нибудь возьмется?
http://en.wikibooks.org/wiki/LaTeX/Tables - это подсказки по выходному формату

Posted: Fri Jul 04, 2014 8:37 am
by kadvlad
Открыто 40 файлов.
Нужно в начало каждого вставить одинаковый текст TEXT1 и имя текущего файла, и в конец − одинаковый текст TEXT2.

В документации нашёл функцию AkelPad.GetEditFile(0)
Простое вхождение искомого текста успешно заменяется на имя файла, а вот сложные конструкции с регэкспами типа моей задачи выдают ошибку "Недопустимый символ".

_________________________________________________
И дополнительно − вопрос, чтоб не начинать новую тему:

Можно ли настроить Coder::Highlight отмечать выделенный текст одновременно в нескольких файлах?

Прошу помощи.
Спасибо.

Posted: Fri Jul 04, 2014 6:33 pm
by KDJ
kadvlad wrote:Открыто 40 файлов.
Нужно в начало каждого вставить одинаковый текст TEXT1 и имя текущего файла, и в конец − одинаковый текст TEXT2.
Standard script SearchReplace.js:
What: ^[\s\S]*$
With: return "TEXT1" + AkelPad.GetEditFile(0) + $0 + "TEXT2";
[x] Regular expressions
[x] Replace with function
[x] All files

Press "Replace all" button.

Posted: Fri Jul 04, 2014 6:45 pm
by kadvlad
KDJ,
thanks, this works fine.

Is it possible to insert just the file name, without full path and extention?

Posted: Fri Jul 04, 2014 6:48 pm
by Instructor
kadvlad
Чтобы не экранировать "TEXT1", "TEXT2", можно использовать те же настройки, что и указал KDJ, но скопировать текст в буфер обмена и заменять на:

Code: Select all

return AkelPad.GetClipboardText() + AkelPad.GetEditFile(0) + $0 + AkelPad.GetClipboardText();

Posted: Fri Jul 04, 2014 7:08 pm
by kadvlad
Instructor
экранировать не проблема.

в Вашем варианте разве не будет дважды вставляться одинаковый текст (нужно два разных фрагмента − для начала и для конца)?

*мой менеджер буфера обмена сохраняет 30 последних фрагментов + избранное

хотелось бы исключить полный путь и расширение файла..

Posted: Fri Jul 04, 2014 7:22 pm
by KDJ
kadvlad
With: return "TEXT1" + AkelPad.GetEditFile(0).replace(/.+\\/, "").replace(/\.[^.]+$/, "") + $0 + "TEXT2";

Posted: Fri Jul 04, 2014 7:31 pm
by kadvlad
KDJ,
thanks again, works just fine.

*will try to learn subject more by myself.

Posted: Sat Jul 05, 2014 4:41 am
by Instructor
kadvlad wrote:экранировать не проблема.

в Вашем варианте разве не будет дважды вставляться одинаковый текст (нужно два разных фрагмента − для начала и для конца)?
Тогда не суть. Просто ориентировался на два запроса:
...вставить одинаковый текст.

...вот сложные конструкции с регэкспами типа моей задачи выдают ошибку "Недопустимый символ".
kadvlad wrote:Можно ли настроить Coder::Highlight отмечать выделенный текст одновременно в нескольких файлах?
Только в пределах одного документа.

Posted: Tue Jul 15, 2014 10:07 am
by kadvlad
Вставить текст N раз

бывает необходимо скопировать и повторить текст/строку ≈200 раз
возможно ли автоматизировать этот процесс?

Posted: Tue Jul 15, 2014 12:53 pm
by FeyFre
Макрос плагин если руками

Скриптом

Code: Select all

var text = AkelPad.GetSelText();
//! Стать курсором куда надо вставлять
for(var i=0; i<N; i++)
{
     AkelPad.ReplaceSel( text );
}

Posted: Tue Jul 15, 2014 3:13 pm
by kadvlad
FeyFre,

спасибо.
Оба варианта работают

Posted: Mon Jul 21, 2014 4:13 pm
by Skif_off
Вожусь с файлом: поиск регэкспами, исправление вручную, мечешься туда-сюда, ВНЕЗАПНО вспомнил про команду

Code: Select all

Call("Coder::HighLight", 2, "#RRGGBB", "#RRGGBB", FLAGS, FONTSTYLE, ID, "TEXT", TEXTLENGTH)
Реально не написал кипятком только потому что большой мальчик :)
Нет ли у кого-нибудь желания сделать небольшое GUI?
По типу LinesFilter.js, только с двумя галочками - Учитывать регистр и Регулярные выражения для FLAGS. Для вставки цвета есть ChooseColor.js, но и просто окна ввода хватит с головой. С FONTSTYLE не знаю, radio button? Или выпадающее меню, чтобы не раздувать окно?

Кроме AutoIt ни с чем толком не знаком, а скриптом AutoIt научился посылать только Command(xxxx).