Добавлено: возможность задать кодировку для нового файла. Добавлено: ручной параметр "UrlCommand" - определяет команду для запуска при клике по гиперссылке.
Исправлено: не срабатывало перетаскивание текста в некоторые программы. Исправлено: восстановление типа новой строки из буфера отмены. Исправлено: группирование элементов в шаблоне регулярных выражений. Исправлено: подхватывание текста, при уже открытом диалоге поиска/замены, не восстанавливало пункт "С начала".
В 4.8.3 можно будет назначать команду для запуска при клике по гиперссылке. Т.е. можно вызвать скрипт, а скрипт уже определяет, что со ссылкой делать.
Появилась ли такая возможность?
Если да, то можно примеры использования.
Posted: Fri May 10, 2013 3:45 pm
by opk44
Andrey_A_A wrote:Появилась ли такая возможность?
Если да, то можно примеры использования.
1. Смотрим первый пост: "Добавлено: ручной параметр "UrlCommand..."
2. Смотрим Главное меню -> Справка -> Руководство (или [/Plugins/exe/AkelFiles/Docs/AkelHelp-Rus.htm]) раздел "Ручные установки". Последним в таблице идет "UrlCommand" и, что характерно, с примером использования. Вот, как-то так.
Posted: Fri May 10, 2013 3:52 pm
by Andrey_A_A
opk44 wrote:
Andrey_A_A wrote:Появилась ли такая возможность?
Если да, то можно примеры использования.
1. Смотрим первый пост:
Всё это просмотрено - поэтому и возник вопрос.
Мне не нужно открывать ссылку каким-либо браузером - это у меня решено скриптами ещё год назад.
А вопрос был в этом
Andrey_A_A wrote:Работая с большими документами возникла такая мысль: можно ли сделать в AkelPad внутренний формат ссылок. К примеру в начале документа стоит типа _#1_ и в документе в нужном месте _#1_
и отображается на подобе сылки (может другим цветом) и по нажатию переходит к ней.
Мне нужен пример внутренних ссылок, чтобы перемещаться внутри документа, а не браузера.
Posted: Fri May 10, 2013 5:08 pm
by Instructor
Andrey_A_A
- При клике по ссылке с префиксом "goto:" осуществляется поиск текста в документе. Префикс goto: необходимо добавить в настройках программы на вкладке "Редактор 2".
- При клике по ссылке с клавишей Ctrl вызывается FireFox из указанного места.
- При обычном клике без клавиши Ctrl, открывается ссылка браузером по умолчанию.
Instructor wrote:Andrey_A_A
- При клике по ссылке с префиксом "goto:" осуществляется поиск текста в документе. Префикс goto: необходимо добавить в настройках программы...
' GotoMarkOrOpenUrl.vbs
'======================= Описание ======================================
' Переход по внутренним ссылкам документа или открытие ссылки в браузере
'======================= Дополнение ====================================
' с версии AkelPad 4.8.3. можно использовать внутренние ссылки в документе и осуществлять навигацию
' что для этого нужно сделать:
' 1. В настройках программы на вкладке "Редактор 2 в "Префиксы" добавьте goto:
' 2. В AkelPad.ini в секции [Options] пропишите UrlCommand=Call("Scripts::Main", 1, "GotoMarkOrOpenUrl.vbs", "%u")
' 3. В документе создайте внутреннюие ссылки в документе, к примеру goto:##1 в начале и в середине
' Так же можно настроить вызов обычной ссылки любым браузером
'===========================================================================
' используется Functions.vbs, FunctionsINITextRWS.vbs который следует положить в ...AkelFiles\Plugs\Scripts\Include\
' Автор: Аверин Андрей
' Версия: 1.0 (10.05.2013)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru/forum/9-846-6211-16-1368213090
'==================== Изменяемые пути ==================================
With AkelPad
.Include "Functions.vbs"
URL = .GetArgLine()
aT=Split(URL, ":")
Select Case aT(0)
Case "goto" EndLine : .TextFind 0, aT(1), &H00000001+&H08000000 : EndLine
Case Else
.Include "FunctionsINITextRWS.vbs"
Program = GetPath(ReadINIText(.ReadFile(.GetAkelDir(0) & "\AkelPadImage.ini", 1), "Browser", "BrowserDefault"))
If Len(Program) > 7 Then
Pro = GetPathProcessName(Replace(GetOtherObjectFile(Program, 3), "Portable", ""))
If Len(Pro) > 0 Then Program = Pro
CreateObject("WScript.Shell").Run Chr(34) & Program & Chr(34) & Chr(32) & Chr(34) & URL & Chr(34)
Else
If .IsOldWindows() Then TCHAR = "A" Else TCHAR = "W" End If
Call .SystemFunction().Call("shell32::ShellExecute" + TCHAR, .GetEditWnd(), "open", URL, 0, 0, 1)
End If
End Select
End With
Sub EndLine : E = PosEndLine : AkelPad.SetSel E,E : End Sub
Posted: Fri May 17, 2013 2:05 pm
by FeyFre
Буду просить фичу:
Увеличить число запоминаемых последних файлов на пару порядков. Настройка позволяет задать не более 999, а мне понадобилось пересмотреть глазами ~2500 текстовых файлов. В итоге история редактирования текстовых файлов годичной давности благополучно канула в Лету, что есть плохо.
Posted: Fri May 17, 2013 5:46 pm
by opk44
FeyFre wrote:история редактирования ... канула в Лету
Можно попробовать спасти. Создать текущую точку восстановления (1). Затем откатиться на точку восстановления "до того как". Слазать в реестр и экспортировать в файл ветку [HKEY_CURRENT_USER\Software\Akelsoft\AkelPad\Recent]. Затем снова откатиться на точку (1) и подпихнуть экспортированный reg-файл. Телодвижений только многовато с этой "машиной времени", но должно сработать. Или можно поискать/посмотреть сторонний софт чтения файлов реестра, тогда можно будет без откатов обойтись. Правда тут уже ничего конкретного посоветовать не могу. Работал с каким-то DOS-подобным редактором, но уж очень там ограниченно все (в наборе Win_XPE есть хорошее средство работы с удаленным реестром, но вроде бы только с "живым", а с Hiren я не работал).
Posted: Fri May 17, 2013 6:23 pm
by VladSh
FeyFre wrote:на пару порядков
Это в примерно 100 раз.
Posted: Fri May 17, 2013 6:42 pm
by FeyFre
Речь об восстановлении не идет. Точки восстановления не делаю по традиции с очень давних пор. Но суть не в этом, суть в том что нужно много истории. Действительно много.
Posted: Fri May 17, 2013 7:27 pm
by opk44
FeyFre wrote:не делаю по традиции с очень давних пор
Как говорил товарищ Пешков "безумству храбрых поём мы песню"... Но, хозяин-барин.
Появилась реплика не по сути вопроса. Вот у меня выбрана опция "сохранять настройки в INI", но все равно часть настроек хранится в реестре. Цель использования реестра как удобного хранилища вполне понятна - он как бы именно для того MS-ом и создавался. И все же хотелось бы "настоящей портабельности", а не частичной. К тому редактирование реестра, как правило, запрещено для не-Администратора компьютера, так что не все могут при случае туда слазать ("если что").
Posted: Sat May 18, 2013 6:35 pm
by private_joker
opk44 wrote:Вот у меня выбрана опция "сохранять настройки в INI", но все равно часть настроек хранится в реестре. Цель использования реестра как удобного хранилища вполне понятна - он как бы именно для того MS-ом и создавался. И все же хотелось бы "настоящей портабельности", а не частичной.
Такая вот штука.
Есть XML-файл. Размер 2.5MiB. В лучших традициях машинно-генерированных XML-файлов он состоит из 2-х строк:
первая, стандартный XML-пролог - <?xml
вторая, собственно сам документ(весь).
Плагин сессий включен. Открыто пару документов, в т.ч. и этот. Т.е. при запуске АР вспоминаются документы(не важно какой из документов был активен при закрытии), всё норм.
Но если вдруг я откываю АР с этим файлом в качестве аргумента (по F4 Total Commander) - висяк. АР жрет весь процессор, ни на что не отвечает, и т.п. Крутится в процедуре AE_StackPointInsert(akeledit.c), в пределах адрессов цикла for(строки 6800-6806).(сборкам по архиву исходников 4.8.3 скачанному 5 минут назад) Стек вызовов предоставляю. Настройки тутечкы.
> NotePad.exe!AE_StackPointInsert(_AKELEDIT * ae=0x00b83088, _AECHARINDEX * ciPoint=0x040e3808) Line 6802 + 0x3 bytes C
NotePad.exe!AE_StackFoldInsert(_AKELEDIT * ae=0x00b83088, const _AEFOLD * lpFold=0x01d683e8) Line 6088 + 0xf bytes C
NotePad.exe!AE_EditProc(_AKELEDIT * ae=0x00b83088, unsigned int uMsg=3407, unsigned int wParam=0, long lParam=1240520) Line 1960 + 0x9 bytes C
NotePad.exe!AE_EditShellProc(HWND__ * hWnd=0x007d086a, unsigned int uMsg=3407, unsigned int wParam=0, long lParam=1240520) Line 360 + 0xd bytes C
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes
user32.dll!_CallWindowProcAorW@24() + 0x51 bytes
user32.dll!_CallWindowProcW@20() + 0x1b bytes
NotePad.exe!CallWindowProcWide(long (HWND__ *, unsigned int, unsigned int, long)* lpPrevWndFunc=0x00402225, HWND__ * hWnd=0x007d086a, unsigned int uMsg=3407, unsigned int wParam=0, long lParam=1240520) Line 2076 C
NotePad.exe!EditProc(HWND__ * hWnd=0x007d086a, unsigned int uMsg=3407, unsigned int wParam=0, long lParam=1240520) Line 5569 + 0x13 bytes C
LineBoard.dll!00a34cd4()
[Frames below may be incorrect and/or missing, no symbols loaded for LineBoard.dll]
SmartSel.dll!00a91e26()
Coder.dll!00ac55b6()
NotePad.exe!CommonEditProc(HWND__ * hWnd=0x007d086a, unsigned int uMsg=3407, unsigned int wParam=0, long lParam=1240520) Line 5477 + 0x16 bytes C
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes
user32.dll!_SendMessageWorker@20() + 0xc8 bytes
user32.dll!_SendMessageA@16() + 0x49 bytes
Coder.dll!00acea74()
Coder.dll!00ad1ee3()
Coder.dll!00ad3fb3()
comctl32.dll!_SBSetText@12() + 0x92 bytes
Собственно есть подозрение что это не висяк, не баг какой-нибудь, а просто так получилось обработка одной большой строки(фолдингом в данном случая) операция достаточно сложная. В любом случае дождаться не судьба. Да, есть ограничение на размер документа есть, но оно у меня чуть выше чем размер этого докумнта(часто бывает нужно) :) Может подумать над каким нибудь ограничением на длину строки?