Page 6 of 8

Posted: Sun Aug 14, 2011 4:50 pm
by Instructor
Исправлено: FixWrap теперь корректно обрабатывает строки являющиеся частями перенесенной строки.

Fixed: FixWrap now properly handles lines that are the parts of the wrapped line.


Format plugin v2.1

Posted: Wed Sep 07, 2011 3:09 pm
by [Yustas.NeO]
Предлагаю

1. В функциях "Format::LineSortStrAsc" и "Format::LineSortStrDesc" добавить некий параметр, с помощью которого сортировка бы учитывала возрастание чисел (11>2).

Тоесть: d2 d1 d11 b2 b11 b1 -> b1 b2 b11 d1 d2 d11.



2. В функциях "Format::LineSortIntAsc" и "Format::LineSortIntDesc" добавить некий параметр, с помощью которого сортировалось бы не просто по "комбинации символов, начинающихся с цифр", а только по цифрам. Т.е. что бы могла сохраниться "первоначальная сортировка.

Тоесть: a1c a2c b1b b2b c1a c2a -> a1c b1b c1a a2c b2b c2a
а не c1a b1b a1c c2a b2b a2c



P.S. В файле "Format-Rus.txt" строка 102 "" - лишняя.

Posted: Thu Sep 08, 2011 6:28 am
by Fr0sT
Специфический реквест, едва ли он кому-то еще понадобится. Тогда уж надо идти дальше и дать возможность указывать compare callback, который будет принимать две строки и возвращать результат сравнения. Но это уже будет на скриптах, соответственно, медленно.

Posted: Thu Sep 08, 2011 12:13 pm
by Instructor
[Yustas.NeO] wrote:Тоесть: a1c a2c b1b b2b c1a c2a -> a1c b1b c1a a2c b2b c2a
а не c1a b1b a1c c2a b2b a2c
Доработано.
P.S. В файле "Format-Rus.txt" строка 102 "" - лишняя.
Убрано.

Posted: Thu Sep 08, 2011 12:19 pm
by Instructor
Исправлено: LineSortIntAsc, LineSortIntDesc меняли очередность строк после сортировки.

Fixed: LineSortIntAsc, LineSortIntDesc change the order of lines after sorting.


Format plugin v2.2

Posted: Fri Sep 09, 2011 9:54 am
by Andrey_A_A
Метод Format::LineReverse добавляет лишнюю строку
Выделите несколько строк , попробуйте сделать несколько раз

Posted: Fri Sep 09, 2011 10:52 am
by opk44
Andrey_A_A
Не совсем так. У меня описанное Вами воспроизводится только в том случае, если в выделение попадает последняя строка (которая не завершается парой 0D0A, т.е. "переводом каретки"). Сколько бы Вы не повторяли, больше одного перевода строки не появится. Кстати недавно по тому же поводу этот вопрос поднимался, вроде "ничем не кончилось".

Posted: Fri Sep 09, 2011 4:04 pm
by Instructor
Andrey_A_A
Видимо включен "SmartSel::NoSelEOL".

После:
AkelPad 4.6.4 (01.08.2011)
--------------------------
Добавлено: ручной параметр для "MouseOptions" со значением 16 - не выделять новую строку при тройном клике, а также при клике в зону левого отступа.
в "SmartSel::NoSelEOL" нет необходимости.

Posted: Fri Sep 09, 2011 6:05 pm
by Andrey_A_A
из справки
Определяет настройки мыши. Задается суммой членов:
1 - GUI.
2 - GUI.
4 - GUI.
8 - GUI.
16 - Не выделять новую строку при клике в зону левого отступа, а также при тройном клике.
По умолчанию: 1+2+4=7.
и что прописывать в AkelPad.ini
1+2+4+16=23 ?

Posted: Fri Sep 09, 2011 6:36 pm
by FeyFre
Andrey_A_A

Code: Select all

MouseOptions=23

Posted: Fri Sep 09, 2011 7:02 pm
by Andrey_A_A
FeyFre, спасибо

Posted: Sun Sep 11, 2011 2:45 pm
by Andrey_A_A
Работаю с большими списками слов, выяснил следующее:
функция
Call("Format::LineRemoveDuplicates")
Call("Format::LineGetUnique")
Call("Format::LineGetDuplicates")
работает очень медленно
проверял на списках 120.000 строк и выше
взять к примеру этот код на vbs - работает моментально

Code: Select all

' Функция удаления из массива одинаковых значений
Function DelDublicateArr(Arrr)
  Dim oDict, Item, Key
  Set oDict = CreateObject("Scripting.Dictionary")
  oDict.RemoveAll
  oDict.CompareMode = 0
  For Each Item In Arrr
   If Len(Item) > 0 Then
    If Not oDict.Exists(Item) Then oDict.Add Item, Item
   End If
  Next
  Key = oDict.Keys
  Set oDict = Nothing
  DelDublicateArr = Key
End Function


может есть смысл поменять код для функций

заодно посмотреть
Call("Format::LineSortStrAsc")
Call("Format::LineSortStrDesc")
Call("Format::LineSortIntAsc")
Call("Format::LineSortIntDesc")

этот код тоже работает быстро

Code: Select all

' Функция сортировки элементов текстового массива по возрастанию
Function SelectingArrUp(ArrS)
  Call SortingUp(ArrS, 0, Ubound(ArrS) - 1)
  SelectingArrUp = ArrS
End Function

' процедура быстрой сортировки по возрастанию
Sub SortingUp(sArr, ll, rr)
  Dim ii, jj, xx, yy
  ii = ll : jj = rr
  xx = sArr((ll + rr) \ 2)
  Do
    While sArr(ii) < xx
      ii = ii + 1
    Wend
    While xx < sArr(jj)
      jj = jj - 1
    Wend
    If ii <= jj Then
      If sArr(ii) <> sArr(jj) Then
        yy = sArr(ii) : sArr(ii) = sArr(jj) : sArr(jj) = yy
      End If
      ii = ii + 1 : jj = jj - 1
    End If
  Loop Until ii > jj
  If ll < jj Then SortingUp sArr, ll, jj
  If ii < rr Then SortingUp sArr, ii, rr
End Sub

Posted: Sun Sep 11, 2011 3:13 pm
by Instructor
Andrey_A_A
Массив еще сформировать надо :) Полный код скриптов приведите.

Posted: Sun Sep 11, 2011 3:33 pm
by Andrey_A_A
Там всё просто, я не умею пока работать с памятью - просто выделяю и сортирую и вставляю обратно

Code: Select all

With AkelPad
  tTxt = .GetSelText()
  If Len(tTxt) = 0 Then
    Call .SetSel(0, -1) : tTxt = .GetSelText()
  End If
  If Len(tTxt) = 0 Then Wscript.Quit
  Txt = Split(tTxt, Chr(13))
End With

Text = Join(SelectingArrUp(Txt), vbNewLine)
Call AkelPad.ReplaceSel(Text)

' Функция сортировки элементов текстового массива по возрастанию
Function SelectingArrUp(ArrS)
  Call SortingUp(ArrS, 0, Ubound(ArrS) - 1)
  SelectingArrUp = ArrS
End Function

' процедура быстрой сортировки по возрастанию
Sub SortingUp(sArr, ll, rr)
  Dim ii, jj, xx, yy
  ii = ll : jj = rr
  xx = sArr((ll + rr) \ 2)
  Do
    While sArr(ii) < xx
      ii = ii + 1
    Wend
    While xx < sArr(jj)
      jj = jj - 1
    Wend
    If ii <= jj Then
      If sArr(ii) <> sArr(jj) Then
        yy = sArr(ii) : sArr(ii) = sArr(jj) : sArr(jj) = yy
      End If
      ii = ii + 1 : jj = jj - 1
    End If
  Loop Until ii > jj
  If ll < jj Then SortingUp sArr, ll, jj
  If ii < rr Then SortingUp sArr, ii, rr
End Sub


второй такой же
вместо
Text = Join(SelectingArrUp(Txt), vbNewLine)
вставить
Text = Join(SelectingArrUp(Txt), vbNewLine)
и функцию приведенную выше

Posted: Mon Sep 12, 2011 3:44 am
by Instructor
Andrey_A_A
Да, удаление дубликатов заметно быстрее - будем оптимизировать :)