#include "sourcefile.hpp" #include "prefs.hpp" #include "stdafx.hpp" IMPLEMENT_DYNAMIC(SourceFile, CRichEditCtrl) BEGIN_MESSAGE_MAP(SourceFile, CRichEditCtrl) ON_WM_CREATE() END_MESSAGE_MAP() SourceFile::SourceFile() {} SourceFile::~SourceFile() {} int SourceFile::OnCreate(LPCREATESTRUCT lpCreateStruct) { CRichEditCtrl::OnCreate(lpCreateStruct); SetReadOnly(true); SetFont(&prefs.editFont); SetBackgroundColor(false, prefs.rgb_bkgrnd); CHARFORMAT fmt = {sizeof(fmt)}; fmt.dwMask = CFM_COLOR; fmt.crTextColor = prefs.rgb_default; SetSel(0, -1); SetDefaultCharFormat(fmt); SetSelectionCharFormat(fmt); SetSel(0, 0); return 0; } void SourceFile::highLight(int row, int col) { int pos = LineIndex(row) + col; HideSelection(true, false); bool quote = false; int end = pos, len = GetTextLength(); while (end < len) { SetSel(end, end + 1); auto txt = GetSelText(); if (txt[0] == '\"') quote = !quote; if (!quote && (txt[0] == ':' || !isprint(txt[0]))) break; ++end; } HideSelection(false, false); SetSel(pos, end); }