Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 19
Joined: Sun Jan 17, 2016 5:41 pm

Post by nbsp »

KDJ
It would be nice if there was an option like "Find all" -> "Show in Log panel (entire line)" to avoid manually setting bLinesInLog=true in "FindReplaceEx.ini" each time this behavior is desired.

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Подскажите, пожалуйста, что не так:

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
var oSet     = AkelPad.ScriptSettings();
var pText    = "";

// прочитать настройки плагина
if (oSet.Begin("Coder", 0x21 /*POB_READ|POB_PLUGS*/))
{
  pText = oSet.Read("CharsLimit", 3 /*PO_STRING*/);
  oSet.End();
}

// записать настройку
if (oSet.Begin("Coder", 0x22 /*POB_SAVE|POB_PLUGS*/))
{
  oSet.Write("CharsLimit", 3 /*PO_STRING*/, pText + "00");
  oSet.End();
}
параметр считывается, но не записывается.

Добавлено:
Записывается, но нужно перезапустить AkelPad. Смотрю, как можно дёрнуть плагин.

Добавлено:
Попробовал добавить в конце

Code: Select all

AkelPad.Call("Coder::Settings", 2)
сработало. Осталось разобраться с логикой и проверками...

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

Post by KDJ »

Skif_off
CharsLimit value is type PO_DWORD, not PO_STRING.

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

Post by KDJ »

FindReplaceEx.js
Changed:
- removed manual parameter "bLinesInLog",
- in "Find all" added option "Show in Log panel - entire lines".

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

KDJ
Thanks, I thought that with a flag that something is wrong, but I decided that the string is versatile :)

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

Post by KDJ »

Skif_off
If you store AkelPad settings in registry instead of in .ini file, your script does not work properly.
Because "CharsLimit" will be saved as STRING, and not as DWORD.

Offline
Posts: 382
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

beotiger
Как можно сделать переход к парному тегу с помощью AkelEmmet.js ?
Внутри EMMET_ACTIONS не нашел такого действия..

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

KDJ
Yes, I use .ini file and script with PO_STRING work fine, I checked registry and now I use PO_DWORD.

Любопытно, запускал

Code: Select all

oSet.Write("CharsLimit", 1 /*PO_DWORD*/, pText * 10);
несколько раз подряд, результат:
1 000 000 (по умолчанию)
10 000 000
100 000 000
1 000 000 000
0

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Skif_off wrote: Любопытно, запускал

Code: Select all

oSet.Write("CharsLimit", 1 /*PO_DWORD*/, pText * 10);
несколько раз подряд, результат:
1 000 000 (по умолчанию)
10 000 000
100 000 000
1 000 000 000
0
А это, наверное, как раз вот этот случай:
Что происходит, если значение целочисленной переменной превышает максимальный допустимый для нее предел? Оказывается, никакой ошибки не генерируется. Вместо этого значение сбрасывается на минимум, предусмотренный для данного типа.
Диапазоны

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

KDJ wrote:FindReplaceEx.js
Changed:
- removed manual parameter "bLinesInLog",
- in "Find all" added option "Show in Log panel - entire lines".

Code: Select all

/**************************************************
FindReplaceEx.js - ver. 2016-02-03
Interface language
Language:      Russian (1049)
Translated by: F. Phoenix, Andrey_A_A, VladSh, YuS
**************************************************/
...
sTxtOnlyMatched   = 'только найденное';                        //new
sTxtEntireLines   = 'целые строки';                        //new

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

Post by KDJ »

FindReplaceEx.js
Updated Russian translation by YuS.

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

Post by KDJ »

Skif_off wrote:

Code: Select all

oSet.Write("CharsLimit", 1 /*PO_DWORD*/, pText * 10);
DWORD type is unsigned integer, range 0 - 0xFFFFFFFF (dec 4294967295).

Code: Select all

var oSet = AkelPad.ScriptSettings();
var nCharsLimit;

if (oSet.Begin("Coder", 0x21 /*POB_READ|POB_PLUGS*/))
{
  nCharsLimit = oSet.Read("CharsLimit", 1 /*PO_DWORD*/);
  oSet.End();

  if (oSet.Begin("Coder", 0x22 /*POB_SAVE|POB_PLUGS*/))
  {
    nCharsLimit = nCharsLimit * 10;

    if (nCharsLimit > 0xFFFFFFFF)
      nCharsLimit = 1000000 /*default*/;

    oSet.Write("CharsLimit", 1 /*PO_DWORD*/, nCharsLimit);
    oSet.End();

    AkelPad.Call("Coder::Settings", 2);
  }
}

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

KDJ
Thank you, I have added checking, but a little differently, your variant is more convenient.

Offline
Posts: 53
Joined: Wed Dec 09, 2015 6:33 pm

Post by beotiger »

Cuprum wrote:beotiger
Как можно сделать переход к парному тегу с помощью AkelEmmet.js ?
Внутри EMMET_ACTIONS не нашел такого действия..
Cuprum, в Emmet'е (по крайней в той версии, что я адаптировал) есть пара скрытых действий matching_pair и insert_formatted_line_break.

Почему их автор скрыл, я не ведаю, но можно добавить эти действия в конец массива EMMET_ACTIONS
так, что теперь он должен выглядеть

Code: Select all

// Emmet actions
var EMMET_ACTIONS = [
			'expand_abbreviation', 'match_pair_outward', 'match_pair_inward', 'wrap_with_abbreviation', // 3
			'next_edit_point', 'prev_edit_point', 'merge_lines', 'remove_tag',	// 7
			'split_join_tag', 'toggle_comment', 'evaluate_math_expression',	// 10
			'increment_number_by_1', 'decrement_number_by_1', 'increment_number_by_01',	// 13
			'decrement_number_by_01', 'increment_number_by_10', 'decrement_number_by_10',	// 16
			'select_next_item', 'select_previous_item', 'reflect_css_value',	// 19
			'update_image_size', 'encode_decode_data_url',
			'matching_pair', 'insert_formatted_line_break'];
.

Теперь можно вызывать эти два действия, как и все остальные:

Переход к парному тегу:

Code: Select all

Call("Scripts::Main", 1, "AkelEmmet.js", `-action='matching_pair'`)
Вставка новой строки:

Code: Select all

Call("Scripts::Main", 1, "AkelEmmet.js", `-action='insert_formatted_line_break'`)

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

KDJ
AkelPadMethodsView.js

Code: Select all

function GetLangStrings()
{
  if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 1049 /*Russian*/)
  {
    ...
    sTxtCopyListToCB = "Копировать список";
Locked