Sfall-ScriptEditor
59 строк · 2.0 Кб
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Drawing;
6
7using ScriptEditor.CodeTranslation;
8
9using ICSharpCode.TextEditor.Document;
10
11namespace ScriptEditor.SyntaxRules
12{
13internal class HighlightProcedures
14{
15static public void AddAllToList(IDocument document, Procedure[] procs)
16{
17bool refresh = false;
18HighlightExtraWord procedures = document.ExtraWordList;
19foreach (var p in procs)
20{
21string name = p.Name;
22if (!p.IsStandart() && !procedures.WordExist(name)) { // ProgramInfo.opcodes_list.ContainsKey(name)
23procedures.AddToList(document, name);
24refresh = true;
25}
26}
27if (refresh) document.HighlightingStrategy.MarkTokens(document);
28}
29
30static public void AddToList(IDocument document, string name)
31{
32document.ExtraWordList.AddToList(document, name.ToLowerInvariant());
33document.HighlightingStrategy.MarkTokens(document);
34}
35
36static public void DeleteFromList(IDocument document, string name)
37{
38document.ExtraWordList.RemoveFromList(name.ToLowerInvariant());
39document.HighlightingStrategy.MarkTokens(document);
40}
41
42static public void UpdateList(IDocument document, Procedure[] procs)
43{
44var pList = new HashSet<string>();
45foreach (var p in procs)
46{
47if (p.IsStandart()) continue;
48
49string name = p.Name;
50pList.Add(name);
51if (!document.ExtraWordList.WordExist(name)) {
52document.ExtraWordList.AddToList(document, name); // add procedure
53}
54}
55document.ExtraWordList.WordListRefresh(pList); // remove outdate procedures
56document.HighlightingStrategy.MarkTokens(document);
57}
58}
59}
60