Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre wrote:
But I need the number of sign, where the caret is.
Use message for edit window EM_CHARFROMPOS
How do I use?
AkelPad.SendMessage(hWndEdit, EM_CHARFROMPOS, 0, -1)
- undefined "EM_CHARFROMPOS".

For example,
AkelPad.SendMessage(hWndEdit, 1078 /*EM_EXLINEFROMCHAR*/, 0, -1)
- returns the number of current row.
How to read a number (index) of the symbol?

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

Post by Infocatcher »

VladSh wrote:
Infocatcher wrote:На всякий случай: я имел в виду создание файла-шаблона.
Если о файле параметров, т.е. где хранятся данные
Нет, я про создание нового файла-шаблона, а не про файл с прототипом меню.
То есть пользователь выбирает «создать новый шаблон», вводит расширение файла, например, «cpp» и на редактирование открывается (и создается, если еще не существует) файл template.cpp.

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

Post by Infocatcher »

VladSh
Тестовая: newFileTemplate-test.js
Только вот со старой версией ShowMenuEx.js работает, а с новой – нет. :?

Подразумевается примерно такое меню:

Code: Select all

html=HTML-файл
js=JavaScript-файл
-
?edit=Редактировать шаблон...

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

Post by Fr0sT »

А где можно весь набор взять - сами файлы шаблонов, скрипт, кусок менюхи для ContextMenu? :)

Кстати, если говорить о формате настроек, то посмотрите в сторону JSON. Для JS лучше не придумаешь. Правда, я не знаю, поддерживает ли движок скриптов eval().

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Fr0sT wrote:Правда, я не знаю, поддерживает ли движок скриптов eval().
поддерживает

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

Post by VladSh »

Infocatcher wrote:Только вот со старой версией ShowMenuEx.js работает, а с новой – нет. :?
С новой тоже работает, отправил по личке.
Infocatcher wrote:Подразумевается примерно такое меню:
...
Не могу понять, почему менюху использовать именно для корректировки шаблонов? Это ведь нечастая задача. По моему, гораздо актуальнее пред. версия - вывод расширений для создания файла.

Но даже если и так, то можно для обоих случаев использовать вывод меню. Правда если юзер будет каждый раз жать "Редактировать шаблон..." :twisted: Но ему ведь можно это запретить, ведь правда? :D
Fr0sT wrote:А где можно весь набор взять - сами файлы шаблонов, скрипт, кусок менюхи для ContextMenu?
Когда-то это мой скрипт был, и в нём внутри были шаблоны, потом они расшились по файлам; скрипт удалили со страницы за ненадобностью, а о шаблонах не подумали...
Думаю, Infocatcher поделится ссылочкой :)

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Когда-то это мой скрипт был, и в нём внутри были шаблоны, потом они расшились по файлам; скрипт удалили со страницы за ненадобностью, а о шаблонах не подумали...
Ага, было такое. Я ещё их искал и так и не нашел.

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

Post by Instructor »

KDJ wrote:How to read the cursor position? The cursor can be at the beginning or the end of the selection.

Code: Select all

var hWndEdit=AkelPad.GetEditWnd();

WScript.Echo("" + GetCaretOffset(hWndEdit));

function GetCaretOffset(hWndEdit)
{
  var lpIndex;
  var nOffset=-1;

  if (lpIndex=AkelPad.MemAlloc(12 /*sizeof(AECHARINDEX)*/))
  {
    AkelPad.SendMessage(hWndEdit, 3130 /*AEM_GETINDEX*/, 5 /*AEGI_CARETCHAR*/, lpIndex);
    nOffset=AkelPad.SendMessage(hWndEdit, 3136 /*AEM_INDEXTORICHOFFSET*/, 0, lpIndex);
    AkelPad.MemFree(lpIndex);
  }
  return nOffset;
}

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

Post by KDJ »

Instructor
Thank you very much. That is what I needed.

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

Post by Fr0sT »

KDJ
about LinesMoveUp/Down, I guess it would be logical to unite these 2 scripts into one because they have most of code identical.

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

Post by VladSh »

KDJ
I agree with Fr0sT.
In addition, the script makes multiple ReplaceSel, which is inconvenient when you undo. Better to pull the text into a variable, change it, and then insert once.

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

Post by Infocatcher »

VladSh wrote:Я вспомнил... накололся на методах fso и проверке...
Так не работало: if (fso.method), а так работало: if (fso.method == true).
Что за методы - не помню, но лучше перебдеть, чем недобдеть :)
У них там очень криво все реализовано. *злобный смайлик*
Вот возьмем WScript.Echo:

Code: Select all

WScript.Echo(typeof WScript.Echo); // unknown
WScript.Echo(WScript.Echo); // Объект не поддерживает это свойство или метод
А на вид кажется, что это

Code: Select all

var WScript = {
    Echo: function(val) { ... }
};
и предыдущий код должен выводить "function" и результат приведения функции к строке.
VladSh wrote:P.S. Что ж это за ужасы такие (код)? )))
Хитрый сферический пример основан на алгоритме сравнения.
Вот хорошая книга на тему: http://javascript.ru/book/definitiveguide

VladSh wrote:Думаю, Infocatcher поделится ссылочкой :)
Поделюсь, по-прежнему тестовая версия: newFileTemplate-test.js.

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

Post by KDJ »

Fr0sT wrote:KDJ
about LinesMoveUp/Down, I guess it would be logical to unite these 2 scripts into one because they have most of code identical.
VladSh wrote:KDJ
I agree with Fr0sT.
In addition, the script makes multiple ReplaceSel, which is inconvenient when you undo. Better to pull the text into a variable, change it, and then insert once.
Gentlemen, thank you very much for your good ideas. I will try to do it.

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

Post by VladSh »

KDJ wrote:Gentlemen, thank you very much for your good ideas. I will try to do it.
It became interesting and I made myself, sorry... :D
ShiftVerticaly.js

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

Post by VladSh »

Infocatcher wrote:Хитрый сферический пример основан на алгоритме сравнения.
Вот хорошая книга на тему: http://javascript.ru/book/definitiveguide
Cool 8)
Infocatcher wrote:
VladSh wrote:Думаю, Infocatcher поделится ссылочкой :)
Поделюсь, по-прежнему тестовая версия: newFileTemplate-test.js.
Ребята и я имели ввиду, что у них нет шаблонов для создания, т.е. template.css и т.п...
Предлагаю выложить на всеобщее обозрение и дать сюда ссылки :D

А по скрипту один момент:
Когда нет папки newFileTemplate-test, то при выборе "Редактировать шаблон" ничего не происходит - файл шаблона не создаётся, т.к. нет папки..
У меня там было (блин, код снёс...)... короче я с помощью fso проверял, если папки нет, то создаывал, а потом уже создавал файл.

И почему не хотите вызывать менюху при создании? :) Ну и что, что 2 раза вылетает, зато не надо реестр дёргать (пингвиноиды спасибо скажут), да и всё же красивше?.. :wink:
Locked