source: trunk/tools/vslol/LolFxLanguageService.cs @ 2123

Last change on this file since 2123 was 2123, checked in by sam, 7 years ago

vslol: add licensing information to important files.

File size: 4.0 KB
Line 
1//
2// Lol Engine - VsLol add-in for Visual Studio
3//
4// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
5//   This program is free software; you can redistribute it and/or
6//   modify it under the terms of the Do What The Fuck You Want To
7//   Public License, Version 2, as published by Sam Hocevar. See
8//   http://www.wtfpl.net/ for more details.
9//
10
11using System.Collections.Generic;
12using System.Linq;
13using System.Text;
14
15using Microsoft.VisualStudio;
16using Microsoft.VisualStudio.Package;
17using Microsoft.VisualStudio.TextManager.Interop;
18using Microsoft.VisualStudio.OLE.Interop;
19
20namespace lol
21{
22
23class LolFxLanguageService : LanguageService
24{
25    public override string GetFormatFilterList()
26    {
27        throw new NotImplementedException();
28    }
29
30    public override LanguagePreferences GetLanguagePreferences()
31    {
32        if (m_preferences == null)
33        {
34            m_preferences = new LanguagePreferences(this.Site,
35                             typeof(LolFxLanguageService).GUID, this.Name);
36            m_preferences.Init();
37        }
38        return m_preferences;
39    }
40
41    public override IScanner GetScanner(IVsTextLines buffer)
42    {
43        if (m_scanner == null)
44        {
45             m_scanner = new LolFxScanner(buffer);
46        }
47        return m_scanner;
48    }
49
50    public override string Name
51    {
52        get { return "LolFx"; }
53    }
54
55    public override AuthoringScope ParseSource(ParseRequest req)
56    {
57        return new LolFxAuthoringScope();
58    }
59
60    private LanguagePreferences m_preferences;
61    private LolFxScanner m_scanner;
62
63    internal class LolFxScanner : IScanner
64    {
65        public LolFxScanner(IVsTextBuffer buffer)
66        {
67            m_buffer = buffer;
68        }
69
70        bool IScanner.ScanTokenAndProvideInfoAboutIt(TokenInfo tokeninfo, ref int state)
71        {
72            while (m_offset < m_source.Length)
73            {
74                if (m_source[m_offset] == ' ' || m_source[m_offset] == '\t')
75                   {
76                    ++m_offset;
77                    continue;
78                   }
79
80                tokeninfo.StartIndex = m_offset;
81                tokeninfo.EndIndex = m_offset;
82                tokeninfo.Type = TokenType.Unknown;
83                switch (state % 4)
84                   {
85                    case 0: tokeninfo.Color = TokenColor.Number; break;
86                    case 1: tokeninfo.Color = TokenColor.Text; break;
87                    case 2: tokeninfo.Color = TokenColor.Keyword; break;
88                    case 3: tokeninfo.Color = TokenColor.Comment; break;
89                }
90                ++m_offset;
91                ++state;
92                return true;
93            }
94
95            return false;
96        }
97
98        enum State
99        {
100            Default,
101            CComment,
102            CppComment,
103            String,
104        }
105
106        void IScanner.SetSource(string source, int offset)
107        {
108            m_source = source;
109            m_offset = offset;
110        }
111
112        private IVsTextBuffer m_buffer;
113        string m_source;
114        int m_offset;
115    }
116
117    internal class LolFxAuthoringScope : AuthoringScope
118    {
119        public override string GetDataTipText(int line, int col, out TextSpan span)
120        {
121            span = new TextSpan();
122            return null;
123        }
124
125        public override Declarations GetDeclarations(IVsTextView view,
126                                                     int line,
127                                                     int col,
128                                                     TokenInfo info,
129                                                     ParseReason reason)
130        {
131            return null;
132        }
133
134        public override string Goto(VSConstants.VSStd97CmdID cmd, IVsTextView textView, int line, int col, out TextSpan span)
135        {
136            span = new TextSpan();
137            return null;
138        }
139
140        public override Methods GetMethods(int line, int col, string name)
141        {
142            return null;
143        }
144    }
145}
146
147} /* namespace lol */
Note: See TracBrowser for help on using the repository browser.