| View previous topic :: View next topic |
| Author |
Message |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Sun Aug 14, 2011 4:50 pm Post subject: |
|
|
Исправлено: FixWrap теперь корректно обрабатывает строки являющиеся частями перенесенной строки.
Fixed: FixWrap now properly handles lines that are the parts of the wrapped line.
Format plugin v2.1 |
|
| Back to top |
|
 |
[Yustas.NeO]
Joined: 12 Mar 2007 Posts: 235
|
Posted: Wed Sep 07, 2011 3:09 pm Post subject: |
|
|
Предлагаю
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 "" - лишняя. |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 850
|
Posted: Thu Sep 08, 2011 6:28 am Post subject: |
|
|
| Специфический реквест, едва ли он кому-то еще понадобится. Тогда уж надо идти дальше и дать возможность указывать compare callback, который будет принимать две строки и возвращать результат сравнения. Но это уже будет на скриптах, соответственно, медленно. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Thu Sep 08, 2011 12:13 pm Post subject: |
|
|
| [Yustas.NeO] wrote: | Тоесть: a1c a2c b1b b2b c1a c2a -> a1c b1b c1a a2c b2b c2a
а не c1a b1b a1c c2a b2b a2c | Доработано.
| Quote: | | P.S. В файле "Format-Rus.txt" строка 102 "" - лишняя. | Убрано. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Thu Sep 08, 2011 12:19 pm Post subject: |
|
|
Исправлено: LineSortIntAsc, LineSortIntDesc меняли очередность строк после сортировки.
Fixed: LineSortIntAsc, LineSortIntDesc change the order of lines after sorting.
Format plugin v2.2 |
|
| Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 477 Location: Сочи, Хоста
|
Posted: Fri Sep 09, 2011 9:54 am Post subject: |
|
|
Метод Format::LineReverse добавляет лишнюю строку
Выделите несколько строк , попробуйте сделать несколько раз |
|
| Back to top |
|
 |
opk44
Joined: 16 Jan 2010 Posts: 188
|
Posted: Fri Sep 09, 2011 10:52 am Post subject: |
|
|
Andrey_A_A
Не совсем так. У меня описанное Вами воспроизводится только в том случае, если в выделение попадает последняя строка (которая не завершается парой 0D0A, т.е. "переводом каретки"). Сколько бы Вы не повторяли, больше одного перевода строки не появится. Кстати недавно по тому же поводу этот вопрос поднимался, вроде "ничем не кончилось". |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Fri Sep 09, 2011 4:04 pm Post subject: |
|
|
Andrey_A_A
Видимо включен "SmartSel::NoSelEOL".
После:
| Quote: | AkelPad 4.6.4 (01.08.2011)
--------------------------
Добавлено: ручной параметр для "MouseOptions" со значением 16 - не выделять новую строку при тройном клике, а также при клике в зону левого отступа. | в "SmartSel::NoSelEOL" нет необходимости. |
|
| Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 477 Location: Сочи, Хоста
|
Posted: Fri Sep 09, 2011 6:05 pm Post subject: |
|
|
из справки
| Quote: | Определяет настройки мыши. Задается суммой членов:
1 - GUI.
2 - GUI.
4 - GUI.
8 - GUI.
16 - Не выделять новую строку при клике в зону левого отступа, а также при тройном клике.
По умолчанию: 1+2+4=7. |
и что прописывать в AkelPad.ini
1+2+4+16=23 ? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Fri Sep 09, 2011 6:36 pm Post subject: |
|
|
Andrey_A_A
|
|
| Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 477 Location: Сочи, Хоста
|
Posted: Fri Sep 09, 2011 7:02 pm Post subject: |
|
|
| FeyFre, спасибо |
|
| Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 477 Location: Сочи, Хоста
|
Posted: Sun Sep 11, 2011 2:45 pm Post subject: |
|
|
Работаю с большими списками слов, выяснил следующее:
функция
Call("Format::LineRemoveDuplicates")
Call("Format::LineGetUnique")
Call("Format::LineGetDuplicates")
работает очень медленно
проверял на списках 120.000 строк и выше
взять к примеру этот код на vbs - работает моментально
Удаление дубликатов
| Code: | ' Функция удаления из массива одинаковых значений
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: | ' Функция сортировки элементов текстового массива по возрастанию
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
|
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Sun Sep 11, 2011 3:13 pm Post subject: |
|
|
Andrey_A_A
Массив еще сформировать надо Полный код скриптов приведите. |
|
| Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 477 Location: Сочи, Хоста
|
Posted: Sun Sep 11, 2011 3:33 pm Post subject: |
|
|
Там всё просто, я не умею пока работать с памятью - просто выделяю и сортирую и вставляю обратно
Сортировка
| Code: |
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)
и функцию приведенную выше |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4640
|
Posted: Mon Sep 12, 2011 3:44 am Post subject: |
|
|
Andrey_A_A
Да, удаление дубликатов заметно быстрее - будем оптимизировать  |
|
| Back to top |
|
 |
|