public override void OnSettingsChanged()
        {
            if (!TextAreaLoaded)
            {
                return;
            }

            SelectedTheme = Themes[Settings.SelectedTheme];
            m_AssemblyIndentationStrategy.AutoIndentationEnabled = Settings.AssemblyEditorSettings.AutoCodeFormating;

            if (m_AssemblyIndentationStrategy.AutoIndentationEnabled)
            {
                m_AssemblyIndentationStrategy.IndentLines(Document);
                Save();
            }

            if (Settings.AssemblyEditorSettings.CodeFolding)
            {
                m_CodeFolding.ResumeUpdate();
            }
            else
            {
                m_CodeFolding.SuspendUpdate(true);
            }

            if (Settings.AssemblyEditorSettings.AutoCodeAnalization)
            {
                m_CodeAnalyzer.Trigger = AnalizerTrigger.DocumentChange;
                m_CodeAnalyzer.AnalyzeCode();
            }
            else
            {
                m_CodeAnalyzer.ClearResults();
                InterpretedSymbols.Clear();
                WrongLines.Clear();
                m_CodeAnalyzer.Trigger = AnalizerTrigger.Manual;
            }

            ApplyEditorStyle();
        }
        public override void AnalyzeCode()
        {
            ClearResults();

            var programLines = Document.Lines.Select(dl => Document.GetText(dl.Offset, dl.TotalLength)
                                                     .TrimStart(' ', '\t').Replace(Environment.NewLine, "").ToUpper()).ToList();

            var fileName         = Path.GetFileName(m_ProgramFullPath);
            var programDirectory = Path.GetDirectoryName(m_ProgramFullPath);

            m_Assembler = new Z80Assembler(programLines, new List <string> {
                programDirectory
            }, fileName);

            if (!m_Assembler.BuildProgram())
            {
                MarkLineAsWrong(Document.GetLineByNumber(m_Assembler.WrongLineNumber), m_Assembler.StatusMessage);
                WrongLine.Add(new Tuple <string, int>(m_Assembler.StatusMessage, m_Assembler.WrongLineNumber));
                AnalizingFinished?.Invoke(this, new EventArgs());
                return;
            }

            InterpretedSymbols.AddRange(m_Assembler.AssembledProgram.SymbolTable.Where(sd => sd.Key != @".LC").Select(kvp => new SymbolData
            {
                SymbolName = kvp.Key,
                SymbolText = kvp.Value.ToString(),
                LineNumber = kvp.Value.LineNumber,
                SymbolType = kvp.Value.Type == SymbolType.Address ? @"Cím" : "Konstans"
            }));

            if (Settings.AssemblyEditorSettings.MarkInactiveCode)
            {
                MarkSkippedLines(m_Assembler.SkippedLineNumbers);
            }

            AnalizingFinished?.Invoke(this, new EventArgs());
        }
 public void ClearResults()
 {
     MarkerService.RemoveAll(m => true);
     InterpretedSymbols.Clear();
     WrongLine.Clear();
 }