mdview2: лимит файла 256 КБ, обрыв с сообщением вместо потери строк
- MAX_PAGES 8->16 (256 КБ), MAX_INDEX_PAGES/MAX_CACHE_DIR_PAGES 8->9 (18432 строк), кап контент-кэша 64->40 стр./набор (80 на оба). Бюджет worst-case (UTF-8 Latin+BOM): ~150 из 215 EMM-страниц. - При исчерпании контент-кэша (cache_reserve==0) или лимита строк индексация обрывается и последняя строка заменяется предупреждением (IF_TRUNC_MSG, рисуется вживую с ATTR_WARN — жёлтый по красному), без хвоста пустых строк. Раньше переполнение молча давало len=0 (пустые строки) без какого-либо индикатора. - help: лимиты обновлены (256 КБ / 18432 строк). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
#define PAGE_BITS 14u
|
||||
#define PAGE_SIZE (1u << PAGE_BITS) /* размер EMM-страницы: 16 КБ */
|
||||
#define PAGE_MASK ((uint16_t)(PAGE_SIZE - 1u))
|
||||
#define MAX_PAGES 8 /* 8 страниц × 16 КБ = 128 КБ */
|
||||
#define MAX_PAGES 16 /* 16 страниц × 16 КБ = 256 КБ */
|
||||
#define MAX_FILE ((uint32_t)MAX_PAGES * PAGE_SIZE)
|
||||
#define FILE_BUF ((char *)0xC000) /* окно W3, куда мапится текущая EMM-страница */
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#define ATTR_BAR_SPINNER COLOR(COLOR_WHITE, COLOR_LIGHTCYAN)
|
||||
#define ATTR_MENU_T COLOR(COLOR_BLACK, COLOR_LIGHTCYAN)
|
||||
#define ATTR_MENU_K COLOR(COLOR_YELLOW, COLOR_BLACK)
|
||||
#define ATTR_WARN COLOR(COLOR_YELLOW, COLOR_RED) /* строка-обрыв (исчерпан кэш/лимит) */
|
||||
|
||||
/* ---- Атрибуты диалога справки ------------------------------------ */
|
||||
#define ATTR_HELP_BG COLOR(COLOR_LIGHTGRAY, COLOR_BLACK)
|
||||
@@ -87,6 +88,12 @@
|
||||
#define IF_HSCROLL 0x10u /* блок горизонтально скроллируется ЦЕЛИКОМ (код/таблица),
|
||||
* включая строки короче 80 — двигаются как единый блок.
|
||||
* НЕ ставится на HR и границы fence (им нечего прятать). */
|
||||
#define IF_TRUNC_MSG 0x20u /* строка-обрыв: рисуется ВЖИВУЮ фикс. текстом (без контент-кэша);
|
||||
* cache_rec.reserved несёт код причины (TRUNC_*). */
|
||||
|
||||
/* ---- Причина обрыва индексации (cache_rec.reserved при IF_TRUNC_MSG) ---- */
|
||||
#define TRUNC_CONTENT 1 /* исчерпан контент-кэш (MAX_CACHE_CONTENT_PAGES) */
|
||||
#define TRUNC_LINES 2 /* исчерпана ёмкость индекса (max_lines) */
|
||||
|
||||
/* ---- Словарь сегментов/стилей (общий для индексатора и таблиц) ---- */
|
||||
/* Тип сегмента-продолжения, передаваемый в emit_seg()/inline_scan(). */
|
||||
|
||||
Reference in New Issue
Block a user