Page 81 of 99

Posted: Wed Feb 03, 2016 3:41 am
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.

Posted: Wed Feb 03, 2016 5:10 pm
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)
сработало. Осталось разобраться с логикой и проверками...

Posted: Wed Feb 03, 2016 6:03 pm
by KDJ
Skif_off
CharsLimit value is type PO_DWORD, not PO_STRING.

Posted: Wed Feb 03, 2016 7:44 pm
by KDJ
FindReplaceEx.js
Changed:
- removed manual parameter "bLinesInLog",
- in "Find all" added option "Show in Log panel - entire lines".

Posted: Wed Feb 03, 2016 7:49 pm
by Skif_off
KDJ
Thanks, I thought that with a flag that something is wrong, but I decided that the string is versatile :)

Posted: Wed Feb 03, 2016 8:11 pm
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.

Posted: Wed Feb 03, 2016 9:12 pm
by Cuprum
beotiger
Как можно сделать переход к парному тегу с помощью AkelEmmet.js ?
Внутри EMMET_ACTIONS не нашел такого действия..

Posted: Wed Feb 03, 2016 10:07 pm
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

Posted: Thu Feb 04, 2016 2:04 am
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
А это, наверное, как раз вот этот случай:
Что происходит, если значение целочисленной переменной превышает максимальный допустимый для нее предел? Оказывается, никакой ошибки не генерируется. Вместо этого значение сбрасывается на минимум, предусмотренный для данного типа.
Диапазоны

Posted: Thu Feb 04, 2016 2:31 am
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

Posted: Thu Feb 04, 2016 6:01 pm
by KDJ
FindReplaceEx.js
Updated Russian translation by YuS.

Posted: Thu Feb 04, 2016 8:00 pm
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);
  }
}

Posted: Fri Feb 05, 2016 7:27 pm
by Skif_off
KDJ
Thank you, I have added checking, but a little differently, your variant is more convenient.

Posted: Fri Feb 05, 2016 8:23 pm
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'`)

Posted: Sat Feb 06, 2016 10:46 am
by Kley
KDJ
AkelPadMethodsView.js

Code: Select all

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