From 2c828f1841096fcdef2281d5f425ee1d0b1d060c Mon Sep 17 00:00:00 2001 From: Anddy Sahir Agudelo <44873492+AnddyAgudelo@users.noreply.github.com> Date: Tue, 16 Jun 2026 02:00:59 -0500 Subject: [PATCH] fix(editor): syntax-highlight SystemVerilog/Verilog files (#5427) Map .sv/.svh to the 'systemverilog' language id and .v/.vh to 'verilog' in language-detect, so Monaco's bundled SystemVerilog/Verilog Monarch tokenizers (already registered in editor.main) are applied. Previously these files fell through to plaintext. Refs #5414. Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com> --- src/renderer/src/lib/language-detect.test.ts | 8 ++++++++ src/renderer/src/lib/language-detect.ts | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/renderer/src/lib/language-detect.test.ts b/src/renderer/src/lib/language-detect.test.ts index e3efd8de4..a223a8645 100644 --- a/src/renderer/src/lib/language-detect.test.ts +++ b/src/renderer/src/lib/language-detect.test.ts @@ -29,4 +29,12 @@ describe('detectLanguage', () => { expect(detectLanguage('scripts/setup.bat')).toBe('bat') expect(detectLanguage('C:\\repo\\scripts\\bootstrap.CMD')).toBe('bat') }) + + it('maps SystemVerilog and Verilog files to their Monaco language ids', () => { + expect(detectLanguage('rtl/cpu.sv')).toBe('systemverilog') + expect(detectLanguage('rtl/pkg.svh')).toBe('systemverilog') + expect(detectLanguage('rtl/alu.v')).toBe('verilog') + expect(detectLanguage('rtl/defs.vh')).toBe('verilog') + expect(detectLanguage('C:\\rtl\\TOP.SV')).toBe('systemverilog') + }) }) diff --git a/src/renderer/src/lib/language-detect.ts b/src/renderer/src/lib/language-detect.ts index d4655effb..857750cd3 100644 --- a/src/renderer/src/lib/language-detect.ts +++ b/src/renderer/src/lib/language-detect.ts @@ -80,6 +80,10 @@ const EXT_TO_LANGUAGE: Record = { '.vue': 'vue', '.svelte': 'svelte', '.astro': 'astro', + '.sv': 'systemverilog', + '.svh': 'systemverilog', + '.v': 'verilog', + '.vh': 'verilog', '.nim': 'nim', '.nims': 'nim', '.nimble': 'nim',