summaryrefslogtreecommitdiffstats
path: root/idatui/highlight.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Two independent constants: memoise the pygments token -> Rich style lookup ↵user46 hours1-4/+20
| | | | | | (a decompilation uses ~18 distinct token types but each token walked up to nine 'token in ttype' hierarchy checks), and hold the worker-connect poll at 5ms for the first 5s instead of backing off geometrically from the first probe. Result: {"status":"keep","total_ms":18856.8,"lg_boot_ms":689.7,"lg_decomp_ms":2484.2,"lg_graph_ms":1120,"lg_hex_ms":700.1,"lg_index_ms":96.5,"lg_listing_cold_ms":425.6,"lg_listing_warm_ms":511.5,"lg_nav_ms":6590.7,"lg_palette_ms":4.8,"lg_render_ms":215.1,"lg_search_ms":2195.5,"pure_graph_ms":238.1,"sm_boot_ms":431.5,"sm_decomp_ms":667.2,"sm_graph_ms":686.9,"sm_hex_ms":569.8,"sm_index_ms":0,"sm_listing_cold_ms":258.1,"sm_listing_warm_ms":283.2,"sm_nav_ms":365.2,"sm_palette_ms":0.3,"sm_render_ms":243.7,"sm_search_ms":79,"fails":0}
* highlight: bring pseudocode onto the measured paletteblasty2026-07-251-11/+20
| | | | | | | | | | | | | | | | | | | | | | | | | highlight.py was still carrying VS Code Dark+ (#c586c0 keywords, #4ec9b0 types, #dcdcaa identifiers) — an entirely different colour system from the listing, which moved to a measured palette in d1cfab2. Reading a function in split view meant reading two unrelated themes side by side, with the same thing coloured differently in each pane. Same palette in both panes now, so one hue means one thing everywhere: a string is #9ece6a and a symbol #7aa2f7 whether you're in disassembly or pseudocode. Contrast against the app background #12161c, signal 7:1+ and structure 3-4:1: keyword (control) #e8ecf2 15.3 operator/body #c3cad3 11.0 string #9ece6a 9.9 number #d8a657 8.2 type/builtin #93aee0 8.1 name #7aa2f7 7.2 comment #7c8b9e 5.2 punctuation #626c7a 3.4 Control keywords take the brightest NEUTRAL rather than a hue, mirroring the mnemonic column: they're the skeleton you scan for, and a hue there would claim a meaning the rest of the palette already assigns. Punctuation drops from grey70 to 3.4:1 — it was competing with the code it delimits. Suite 192/0.
* fix decompiler highlighting + cursor jankblasty2026-07-091-0/+58
Highlighting: Textual has NO C/C++ tree-sitter grammar (and the syntax extra wasn't installed), so language='cpp' was a silent no-op. Replace TextArea with a virtualized, Pygments-highlighted ScrollView: - idatui/highlight.py: CLexer -> Rich styles, per-line Segment lists - DecompView: lines highlighted ONCE at load, cached as Strips; O(1) scroll Jank: profiling showed our code is ~3.6ms/move (render_line 0.018ms) -- the cost was terminal repaint volume, since every cursor move refreshed the whole ~43-line viewport. Now: - cursor reactive repaint=False (no implicit full refresh) - region-limited refresh: in-place moves repaint only the 2 changed rows (measured 43 -> 2 render_line calls/move), full refresh only on scroll Applied to both DisasmView and DecompView. pilot suite 15/15 (adds highlighting assertion).