AkelPad 4.9.7 выглядит "размытым" (шрифты меню и текста) на 4K-мониторе. У NotePad'а шрифты не размыты.
Не знаю, освещалась ли ранее эта проблема, не нашёл. Эта проблема не только AkelPad'a ещё несколько программ ею страдает.
AkelPad 4.9.7 (x86), режим MDI. Все плагины - последних версий (в частности, Coder 19.5).
Редактор был открыт несколько дней. Во время редактирования обычного текстового файла упал с ошибкой при нажатии Enter в окне автодополнения (чтобы выбрать слово из списка автодополнения).
Понимаю, что описание слишком общее, но это уже второй подобный случай. Предыдущее падение было точно в такой же момент - при очередном нажатии Enter в окне автодополнения.
Специально воспроизвести не удаётся. Из предположений: возможно, есть какая-то проблема в коде автодополнения? Например, утечка памяти или там выход за пределы массива при каких-то обстоятельствах?
Для текстовых файлов использую практически пустой файл подсветки:
;----------------------------------------------;
; Coder plugin syntax file ;
;----------------------------------------------;
;=============
;Colors
; Color need to be in #RRGGBB format.
; If color equal to zero, then color ignored.
;
;Font styles
; 0 ignored.
; 1 normal.
; 2 bold.
; 3 italic.
; 4 bold italic.
;
;For comfort file viewing/editing set tab size to 8 or higher.
Files:
;==========
;File types
;==========
*.uutxt
;----------------------------------------------;
; HighLight ;
;----------------------------------------------;
;Flags (sum of the members)
; 1 case sensitive.
; 2 word is a composition of characters ("Words:" section only). Example: "0123456789" - highlight words that contain only digits.
; 4 quote end required ("Quotes:" section only).
; 8 quote start string is ignored and last meet delimiter used as quote start ("Quotes:" section only).
; 16 quote end string is ignored and first meet delimiter used as quote end ("Quotes:" section only).
; 32 don't highlight quote start ("Quotes:" section only).
; 64 don't highlight quote end ("Quotes:" section only).
; 128 don't catch and don't highlight quote start ("Quotes:" section only).
; 256 don't catch and don't highlight quote end ("Quotes:" section only).
; 512 quote start, delimiter or word located at line start.
; 1024 quote end, delimiter or word located at line end.
; 2048 quote start is surrounded with delimiters ("Quotes:" section only).
; 4096 quote end is surrounded with delimiters ("Quotes:" section only).
; 8192 quote doesn't contain delimiters ("Quotes:" section only).
; 16384 only quote start string is catched ("Quotes:" section only).
; 32768 quote doesn't contain any character ("Quotes:" section only).
Font:
;=================================================================
;FontStyle FontSize FaceName
;=================================================================
${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName}
Colors:
;=============================================================================================================================================================================================================================================================================================================================================================================================================================
;BasicTextColor BasicBkColor SelTextColor SelBkColor LineTextColor LineBkColor LineBorderColor AltTextColor AltBkColor AltBorderColor ColumnColor MarkerColor CaretColor UrlColor ActiveUrlColor VisitUrlColor
;=============================================================================================================================================================================================================================================================================================================================================================================================================================
${HighLight_BasicTextColor} ${HighLight_BasicBkColor} ${HighLight_SelTextColor} ${HighLight_SelBkColor} ${HighLight_LineTextColor} ${HighLight_LineBkColor} ${HighLight_LineBorderColor} ${HighLight_AltTextColor} ${HighLight_AltBkColor} ${HighLight_AltBorderColor} ${HighLight_ColumnColor} ${HighLight_MarkerColor} ${HighLight_CaretColor} ${HighLight_UrlColor} ${HighLight_ActiveUrlColor} ${HighLight_VisitUrlColor}
BkImage:
;==================================================
;BkImageFile BkImageAlpha
;==================================================
${HighLight_BkImageFile} ${HighLight_BkImageAlpha}
AutoMark:
;====================================================================================================================
;AutoMarkFlags AutoMarkFontStyle AutoMarkTextColor AutoMarkBkColor
;====================================================================================================================
${HighLight_AutoMarkFlags} ${HighLight_AutoMarkFontStyle} ${HighLight_AutoMarkTextColor} ${HighLight_AutoMarkBkColor}
Quotes:
;======================================================================
;Flags Font Color Color Quote Quote Escape Quote Quote
; style text bkgrnd start end char include exclude
;======================================================================
;517=1+4+512
;517 2 0 0 `"` `"` "" "" ""
QuotesRE:
;==========================================================================
;Flags Pattern \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;==========================================================================
Delimiters:
;======================================
;Flags Font Color Color Char(s)
; style text bkgrnd
;======================================
1 0 0 0 " "
1 0 0 0 " "
1 0 0 0 .
1 0 0 0 ,
1 0 0 0 :
1 0 0 0 ;
1 0 0 0 !
1 0 0 0 ?
1 0 0 0 (
1 0 0 0 )
1 0 0 0 {
1 0 0 0 }
1 0 0 0 [
1 0 0 0 ]
1 0 0 0 `"`
1 0 0 0 /
1 0 0 0 \
1 0 0 0 <
1 0 0 0 >
1 0 0 0 =
1 0 0 0 *
1 0 0 0 +
1 0 0 0 %
1 0 0 0 ^
Words:
;===================================
;Flags Font Color Color Word
; style text bkgrnd
;===================================
;----------------------------------------------;
; CodeFold ;
;----------------------------------------------;
;Flags (sum of the members)
; 1 case sensitive.
; 2 force get fold name for function list from left at the fold start ("Folds:" section only).
; 4 force get fold name for function list from right at the fold start, including fold start ("Folds:" section only).
; 8 fold start located at line start ("Folds:" section only).
; 16 fold start located at line end ("Folds:" section only).
; 32 fold end located at line start ("Folds:" section only).
; 64 fold end located at line end ("Folds:" section only).
; 128 don't catch fold end ("Folds:" section) or skip end ("Skips:" section).
; 256 additional to 128 flag - more priority is given to sibling level instead of parent level ("Folds:" section only).
; 512 comment fold - fold ignore any other folds and skips inside ("Folds:" section only).
; 1024 reserved.
; 2048 deny fold - founded fold will be ignored ("Folds:" section only).
; 4096 xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
; 8192 don't check delimiters from left of fold start ("Folds:" section only).
; 16384 don't check delimiters from right of fold start ("Folds:" section only).
; 32768 don't check delimiters from left of fold end ("Folds:" section only).
; 65536 don't check delimiters from right of fold end ("Folds:" section only).
; 131072 deny delimiters ("Folds:" section only).
; 262144 don't show fold in list ("Folds:" section only).
; 1048576 regular expression of fixed length in fold start ("Folds:" section) or skip start ("Skips:" section).
; 2097152 regular expression of fixed length in fold end ("Folds:" section) or skip end ("Skips:" section).
FoldPanel:
;=================================================================================================================================================================================================================================================================================================================================================================================================================================================================
;PanelFirstBkColor PanelSecondBkColor PanelNormalFoldColor PanelActiveFoldColor PanelNormalNodeOpenBkColor PanelNormalNodeCloseBkColor PanelActiveNodeOpenBkColor PanelActiveNodeCloseBkColor PanelNormalNodeOpenSignColor PanelNormalNodeCloseSignColor PanelActiveNodeOpenSignColor PanelActiveNodeCloseSignColor
;=================================================================================================================================================================================================================================================================================================================================================================================================================================================================
${CodeFold_PanelFirstBkColor} ${CodeFold_PanelSecondBkColor} ${CodeFold_PanelNormalFoldColor} ${CodeFold_PanelActiveFoldColor} ${CodeFold_PanelNormalNodeOpenBkColor} ${CodeFold_PanelNormalNodeCloseBkColor} ${CodeFold_PanelActiveNodeOpenBkColor} ${CodeFold_PanelActiveNodeCloseBkColor} ${CodeFold_PanelNormalNodeOpenSignColor} ${CodeFold_PanelNormalNodeCloseSignColor} ${CodeFold_PanelActiveNodeOpenSignColor} ${CodeFold_PanelActiveNodeCloseSignColor}
FoldList:
;================================================
;ListTextColor ListBkColor
;================================================
${CodeFold_ListTextColor} ${CodeFold_ListBkColor}
TagMark:
;============================================================================================================
;TagMarkFlags TagMarkFontStyle TagMarkTextColor TagMarkBkColor
;============================================================================================================
${CodeFold_TagMarkFlags} ${CodeFold_TagMarkFontStyle} ${CodeFold_TagMarkTextColor} ${CodeFold_TagMarkBkColor}
Skips:
;=============================
;Flags Skip Skip Escape
; start end char
;=============================
Folds:
;=============================================================
;Flags Font Color Color Fold Fold Delimiters
; style text bkgrnd start end
;=============================================================
;264705=1+512+2048+262144
;262657 3 0 0 `"` `"` ""
;----------------------------------------------;
; AutoComplete ;
;----------------------------------------------;
CompleteList:
;=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
;ListFontStyle ListFontSize ListFaceName ListLineGap ListBlockIcon ListBlockIconMargins "left;right" ListHlBaseIcon ListHlBaseIconMargins "left;right" ListDocWordIcon ListDocWordIconMargins "left;right" ListBasicTextColor ListBasicBkColor ListSelTextColor ListSelBkColor
;=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
${AutoComplete_ListFontStyle} ${AutoComplete_ListFontSize} ${AutoComplete_ListFaceName} ${AutoComplete_ListLineGap} ${AutoComplete_ListBlockIcon} ${AutoComplete_ListBlockIconMargins} ${AutoComplete_ListHlBaseIcon} ${AutoComplete_ListHlBaseIconMargins} ${AutoComplete_ListDocWordIcon} ${AutoComplete_ListDocWordIconMargins} ${AutoComplete_ListBasicTextColor} ${AutoComplete_ListBasicBkColor} ${AutoComplete_ListSelTextColor} ${AutoComplete_ListSelBkColor}
Blocks:
;======================================================================
;Abbreviations and blocks
;
; $~abbr normal abbreviation.
; $=abbr exact abbreviation. May contain delimiters.
; $[] set caret to this position. Can be multiple (hot spots).
; $[text] select text. Can be multiple (hot spots).
; $$ symbol $.
; $\] escape symbol ]. Can be used in $[text] block: $[One [1$\] ].
; ${VAR} variable assigned from Coder::Settings.
; $; comment line.
;======================================================================
P.S.
Чуть не забыл: периодически я открываю большие лог-файлы (от 20 МБ до 100 МБ), иногда открываю их по сети. Может, с этим связано.
Posted: Sat May 07, 2016 11:01 pm
by LonerD
Обнаружил неприятный баг.
Перекачал старые версии, и выяснил, что баг впервые появился в AkelPad 4.9.2 и так и тянется вплоть до последней тестовой 4.9.8, проявляется в 32-х и 64-х битной версиях редактора. Windows 10 x64 SL Eng.
Чистый Акелпад, один ехе-файл с дефолтными настройками. Включена опция Show active column - активный столбец пунктирной линией отображается.
Проще всего увидеть проявление так. Открыть редактор, вставить какой-нибудь более-менее длинный текст (чтоб появилась полоса прокрутки), нажать Отмена (Ctrl+Z). Текст, соответственно, исчезнет, а пунктирная линия начнёт медленно-медлеееенно прорисовываться сверху вниз, иногда даже не один раз (при этом Акелпад подвисает, и в его окне артефакты от остатков текста виднеются).
Насколько помню - на Windows 8.1 x64 такого поведения не наблюдалось, иначе я, наверное, заметил бы. Хотя могу и ошибаться - возможно, во времена пользования 8.1 сидел ещё на старых версиях редактора, и активный столбец редко включаю.
Posted: Fri May 13, 2016 4:46 pm
by YuS
На ру-борде отписали об обнаруженном баге утечки памяти. Через несколько постов, там же есть подтверждение.
При открытом массивном текстовом файле (например, 10-20 Мб), если использовать многократную замену (Заменить всё), то количество занятой памяти увеличивается и не освобождается вплоть до закрытия файла, увеличение происходит с каждым новым циклом замены.
и т.д., можно занимать память до заполнения и появления сообщения о нехватке памяти...
Posted: Fri May 13, 2016 5:37 pm
by Skif_off
YuS
Не уверен, что это утечка памяти, тем более если
YuS wrote:количество занятой памяти увеличивается и не освобождается вплоть до закрытия файла, увеличение происходит с каждым новым циклом замены.
Кажется, где-то уже было подобное, для начала стоит взглянуть настройки лимита отмен и состояние опции Подробно на вкладке Редактор 1.
Хотя размер файла как-то маловат... Если только замен действительно МНОГО?
P.S. Картинку посмотреть не могу, у меня только с телефона в UC Browser удаётся иногда зайти на ргхост.
Posted: Sat May 14, 2016 2:49 am
by YuS
Skif_off wrote:Не уверен, что это утечка памяти
...
для начала стоит взглянуть настройки лимита отмен и состояние опции Подробно на вкладке Редактор 1.
Очень даже может быть, лимиты отключены. Но, всё же, ситуация достаточно критичная, т.к. вызывает переполнение памяти. Имхо, лучше добавить какое-то ограничение.
Skif_off wrote:
Хотя размер файла как-то маловат... Если только замен действительно МНОГО?
Для ускорения проявления ситуации, можно взять и больший файл с однотипными словами и производить массовую замену.
Posted: Sat May 14, 2016 10:21 am
by Skif_off
YuS wrote:лимиты отключены
Стоило этот момент сразу упомянуть
Posted: Fri Jun 03, 2016 8:21 am
by DV
DV wrote:AkelPad 4.9.7 (x86), режим MDI. Все плагины - последних версий (в частности, Coder 19.5).
Редактор был открыт несколько дней. Во время редактирования обычного текстового файла упал с ошибкой при нажатии Enter в окне автодополнения (чтобы выбрать слово из списка автодополнения).
Только что это случилось опять! У меня на всякий случай в фоне был запущен Process Hacker - так вот, AkelPad в момент падения использовал не более 200 МБ памяти, то есть это точно не из-за попытки выделить больше 2 ГБ.
После перезапуска AkelPad с восстановлением предыдущей сессии специально открыл новую вкладку и стал набирать тот же самый текст точно так же, как тогда, когда AkelPad упал с ошибкой. Нажал Enter для автодополнения в том же самом месте, где редактор упал в предыдущий раз - и воспроизвести не удалось, никакого падения.
P.S.
Кстати, перенос строк (Word Wrap) всегда включён.
Попробовал последний AkelPad 4.9.8 (x86) dev с включенным Word Wrap и текстовым файлом размером в 80 МБ.
Замечания к режиму MDI:
- при каждом переключении на файл в 80 МБ (все остальные открытые файлы - небольшие) дважды появляется прогресс-бар длительной операции. Почему дважды? Разве недостаточно "пройтись" по файлу один раз - когда мы на него уже переключились?
- при каждом переключении с файла в 80 МБ на любой другой один раз появляется прогресс-бар длительной операции. Почему он вообще появляется в этом случае? Зачем "проходиться" по файлу, если мы с него уходим?
- если выделяем весь текст, найдено будет только второе вхождение...
Проверялось на текущей тестовой: находится второе и третье вхождение.
... а если выделяем блок с тегом "tag", то находит только в третьем вхождении...
Верно. Т.к. вхождения с самого начала выделения пропускаются, иначе бы следующий поиск стоял бы на месте и возвращал одно и тоже.
2. При поиске в выделении, фактически, если строка найдена, то смещается только начало выделения, а конец не изменяется, т.е. совпадение не отмечается - я что-то делаю не так или такое поведение предусмотрено?
Всё верно. Так работает поиск в выделении.
alandre wrote:Не уверен, баг ли это, но временами мешает удобному использованию.
Macros-Rus.txt wrote:Замечания:
- Установка количества повторов в ноль, будет означать бесконечное
повторение действий пока не будет достигнута последняя строка окна редактирования.
- Если диалог поиска/замены ничего не нашел, повторение действий
прекращается.
- Если в редакторе закрыта последняя вкладка (MDI/PMDI), повторение действий прекращается.
YuS wrote:- если выделяем весь текст, найдено будет только второе вхождение...
Проверялось на текущей тестовой: находится второе и третье вхождение.
Хмм, уже и подзабыл, что там было не так, проверил и вспомнил, это я неправильно сформулировал... да, именно второе и третье. Вопрос был только про то, что при совпадении шаблона от начала выделения, первое вхождение пропускается...
Но это теперь понятно, т.к. это:
Instructor wrote:
... а если выделяем блок с тегом "tag", то находит только в третьем вхождении...
Верно. Т.к. вхождения с самого начала выделения пропускаются, иначе бы следующий поиск стоял бы на месте и возвращал одно и тоже.
- один и тот же вопрос...
Instructor wrote:
2. При поиске в выделении, фактически, если строка найдена, то смещается только начало выделения, а конец не изменяется, т.е. совпадение не отмечается - я что-то делаю не так или такое поведение предусмотрено?
Всё верно. Так работает поиск в выделении.
Понятно. Спасибо!
Posted: Sat Jun 04, 2016 11:07 am
by Instructor
Kley wrote:Команда 4197[, 1]:
- удаляет текущую строку и закладку (LineBoard плагин) на следующей строке;
- удаляет текущую строку (строка с закладкой), но оставляет закладку.
См. LineBoard 12.5
Skif_off wrote:Какое-то странное поведение при использовании AEM_LOCKSCROLL (дискуссия). Замечено ещё с UndoAll.js и UndoAllNoScroll.js.
На WinXP AkelPad падает, на Win7 не падает, но всё выглядит аналогично.
Падение не воспроизводится. Обновление прокрутки ещё надо (AEM_UPDATESCROLLBAR):
function ScrollLock(hWnd, bLock)
{
AkelPad.SendMessage(hWnd, 3185 /*AEM_LOCKSCROLL*/, 3 /*SB_BOTH*/, bLock);
if (!bLock) AkelPad.SendMessage(hWnd, 3376 /*AEM_UPDATESCROLLBAR*/, 3 /*SB_BOTH*/, 0);
}
gw wrote:AkelPad 4.9.7 выглядит "размытым" (шрифты меню и текста) на 4K-мониторе. У NotePad'а шрифты не размыты.
Не знаю, освещалась ли ранее эта проблема, не нашёл. Эта проблема не только AkelPad'a ещё несколько программ ею страдает.
if (bLock) oSys.Call("user32::InvalidateRect", hWnd, 0, true);
?
Posted: Sat Jun 04, 2016 12:44 pm
by Instructor
Skif_off wrote:равносильно
Нет
DV wrote:Во время редактирования обычного текстового файла упал с ошибкой при нажатии Enter в окне автодополнения (чтобы выбрать слово из списка автодополнения).
DV wrote:Нажал Enter для автодополнения в том же самом месте, где редактор упал в предыдущий раз - и воспроизвести не удалось, никакого падения.
Опция "Сохранять регистр введённых символов" автодополнения включена? Если да, то с помощью KDJудалось исправить ошибку.