Skip to content
Browse files

Finished lexer implementation.

  • Loading branch information...
1 parent ec14f4e commit b07721ff0a291ac64f585380102af96c8b384eca @cmrazek committed Jul 8, 2012
View
146 Help/Code.snippets
@@ -48,5 +48,151 @@ namespace NppScripts
}
</sampleCode>
</item>
+ <item id="SampleLexer#C">
+ <sampleCode language="CSharp">
+<![CDATA[using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using NppSharp;
+
+namespace Test
+{
+ [NppDisplayName("C (NppSharp)")]
+ [NppDescription("C Source File")]
+ public class TestLexer : ILexer
+ {
+ // Default file extensions.
+ // The user may modify this list through Settings -> Style Configurator.
+ public IEnumerable<string> Extensions
+ {
+ get { return new string[] { "ct", "ct&", "f", "f&", "st", "st&" }; }
+ }
+
+ // Styles used by this lexer.
+ LexerStyle _defaultStyle = new LexerStyle("Default");
+ LexerStyle _keywordStyle = new LexerStyle("Keywords", Color.Blue);
+ LexerStyle _commentStyle = new LexerStyle("Comments", Color.Green, FontStyle.Italic);
+ LexerStyle _numberStyle = new LexerStyle("Numbers", Color.DarkRed);
+ LexerStyle _stringStyle = new LexerStyle("Strings", Color.DarkRed);
+ LexerStyle _dataTypeStyle = new LexerStyle("Data Types", Color.Teal);
+ LexerStyle _operatorStyle = new LexerStyle("Operators", Color.Black, FontStyle.Bold);
+
+ // Default styles.
+ // The user may modify the style appearance through Settings -> Style Configurator.
+ public IEnumerable<LexerStyle> Styles
+ {
+ get
+ {
+ return new LexerStyle[] { _defaultStyle, _keywordStyle, _commentStyle, _numberStyle,
+ _stringStyle, _dataTypeStyle, _operatorStyle };
+ }
+ }
+
+ // Keywords that will be shaded blue.
+ private string[] _keywords = new string[] { "auto", "struct", "break", "else", "switch",
+ "case", "enum", "register", "typedef", "extern", "return", "union", "continue", "for",
+ "default", "goto", "sizeof", "volatile", "do", "if", "static", "while" };
+
+ // Data types that will be shaded teal.
+ private string[] _dataTypes = new string[] { "double", "int", "long", "char", "float",
+ "short", "const", "unsigned", "signed", "void" };
+
+ // Operators that will be bolded.
+ private char[] _operators = new char[] { '=', '!', '>', '<', '&', '|', '~', '^', '?', ':',
+ '+', '-', '*', '/', '%', '&', '{', '}', '[', ']', ',', '.', '#' };
+
+ // The state will only make use of 1 bit, a flag to indicate if we're inside a block comment.
+ private const int State_InsideComment = 1;
+
+ public int StyleLine(ILexerLine line, int state)
+ {
+ // This function is called by NppSharp to get the lexer to perform styling and code
+ // folding on a line of text.
+
+ char nextCh;
+ while (!line.EOL)
+ {
+ nextCh = line.NextChar;
+
+ if ((state & State_InsideComment) != 0)
+ {
+ // Currently inside block comment.
+ if (line.Peek(2) == "*/")
+ {
+ line.Style(_commentStyle, 2);
+ state &= ~State_InsideComment;
+ }
+ else
+ {
+ line.Style(_commentStyle);
+ }
+ }
+ else if (line.Peek(2) == "//")
+ {
+ // Start of line comment; rest of line is forfeit.
+ line.StyleRemainder(_commentStyle);
+ }
+ else if (line.Peek(2) == "/*")
+ {
+ // Start of block comment. Switch the state on so it passes down to other lines.
+ state |= State_InsideComment;
+ }
+ else if (Char.IsLetter(nextCh) || nextCh == '_')
+ {
+ // Token beginning with letter or underscore. Standard identifier.
+ string token = line.Peek((ch) => Char.IsLetterOrDigit(ch) || ch == '_');
+ if (_keywords.Contains(token)) line.Style(_keywordStyle, token.Length);
+ else if (_dataTypes.Contains(token)) line.Style(_dataTypeStyle, token.Length);
+ else line.Style(_defaultStyle, token.Length);
+ }
+ else if (Char.IsDigit(nextCh))
+ {
+ // Token beginning with number.
+ line.Style(_numberStyle, (ch) => Char.IsDigit(ch) || ch == '.');
+ }
+ else if (nextCh == '\"' || nextCh == '\'')
+ {
+ // String literal.
+ char lastCh = '\\';
+ bool done = false;
+ line.Style(_stringStyle, (ch) =>
+ {
+ if (done) return false;
+ if (ch == nextCh && lastCh != '\\') done = true;
+ lastCh = ch;
+ return true;
+ });
+ }
+ else if (nextCh == '{')
+ {
+ // Opening braces are the start of a code folding section.
+ line.FoldStart();
+ line.Style(_operatorStyle);
+ }
+ else if (nextCh == '}')
+ {
+ // Closing braces are the end of a code folding section.
+ line.FoldEnd();
+ line.Style(_operatorStyle);
+ }
+ else if (_operators.Contains(nextCh))
+ {
+ // Operators
+ line.Style(_operatorStyle);
+ }
+ else
+ {
+ // All other characters.
+ line.Style(_defaultStyle);
+ }
+ }
+
+ return state;
+ }
+ }
+}]]>
+ </sampleCode>
+ </item>
</examples>
View
5 Help/Content Layout.content
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Topics>
<Topic id="3ab31a3a-226e-45b7-b1eb-c68d3755dc77" visible="True" isDefault="true" title="Welcome" />
- <Topic id="bd9bc6cd-319e-40c2-8f4e-352cbfdb8345" visible="True" title="Sample" />
- <Topic id="f89a8866-e24a-4a19-9d27-f70d7da44b34" visible="True" isSelected="true" title="Adding Attributes" />
+ <Topic id="bd9bc6cd-319e-40c2-8f4e-352cbfdb8345" visible="True" isSelected="true" title="Sample" />
+ <Topic id="f89a8866-e24a-4a19-9d27-f70d7da44b34" visible="True" title="Adding Attributes" />
+ <Topic id="2a67db05-d02e-4972-9c0d-857f437846bb" visible="True" />
</Topics>
View
77 Help/Lexer Sample.aml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<topic id="2a67db05-d02e-4972-9c0d-857f437846bb" revisionNumber="1">
+ <developerSampleDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!--
+ <summary>
+ <para>Optional summary abstract</para>
+ </summary>
+ -->
+ <introduction>
+ <!-- Uncomment this to generate an outline of the section and sub-section
+ titles. Specify a numeric value as the inner text to limit it to
+ a specific number of sub-topics when creating the outline. Specify
+ zero (0) to limit it to top-level sections only. -->
+ <!-- <autoOutline /> -->
+ <para>NppSharp now supports the creation of lexers using a .NET language.</para>
+ <para>Lexers provide syntax hilighting and code folding.</para>
+ </introduction>
+ <!-- <procedure>Optional procedures. See How To document for procedure layout example.</procedure> -->
+ <!-- <requirements>Optional requirements section</requirements> -->
+ <!-- <demonstrates>Optional info about what is demonstrated</demonstrates> -->
+ <!-- <codeExample>Optional code example</codeExample> -->
+ <!-- Add one or more top-level section elements. These are collapsible.
+ If using <autoOutline />, add an address attribute to identify it
+ and specify a title so that it can be jumped to with a hyperlink. -->
+ <section address="Section1">
+ <title>Optional section title</title>
+ <content>
+ <!-- Uncomment this to create a sub-section outline
+ <autoOutline /> -->
+ <para>
+ The following sample demonstrates a quick-and-dirty C lexer, written using NppSharp.
+ It supports syntax highlighting and code folding.
+ </para>
+ <codeReference>SampleLexer#C</codeReference>
+ <para>
+ The keywords are hard-coded in this lexer. For a full-on production
+ quality lexer, you may choose to use a configuration file to store
+ the keyword lists. This can be safely done in the class constructor
+ or the Styles &apos;get&apos; property.
+ </para>
+ </content>
+ </section>
+ <relatedTopics>
+ <!-- One or more of the following:
+ - A local link
+ - An external link
+ - A code entity reference
+
+ <link xlink:href="Other Topic's ID">Link text</link>
+ <externalLink>
+ <linkText>Link text</linkText>
+ <linkAlternateText>Optional alternate link text</linkAlternateText>
+ <linkUri>URI</linkUri>
+ </externalLink>
+ <codeEntityReference>API member ID</codeEntityReference>
+
+ Examples:
+
+ <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8278">Some other topic</link>
+
+ <externalLink>
+ <linkText>SHFB on CodePlex</linkText>
+ <linkAlternateText>Go to CodePlex</linkAlternateText>
+ <linkUri>http://shfb.codeplex.com</linkUri>
+ </externalLink>
+
+ <codeEntityReference>T:TestDoc.TestClass</codeEntityReference>
+ <codeEntityReference>P:TestDoc.TestClass.SomeProperty</codeEntityReference>
+ <codeEntityReference>M:TestDoc.TestClass.#ctor</codeEntityReference>
+ <codeEntityReference>M:TestDoc.TestClass.#ctor(System.String,System.Int32)</codeEntityReference>
+ <codeEntityReference>M:TestDoc.TestClass.ToString</codeEntityReference>
+ <codeEntityReference>M:TestDoc.TestClass.FirstMethod</codeEntityReference>
+ <codeEntityReference>M:TestDoc.TestClass.SecondMethod(System.Int32,System.String)</codeEntityReference>
+ -->
+ </relatedTopics>
+ </developerSampleDocument>
+</topic>
View
1 Help/NppSharp.shfbproj
@@ -49,6 +49,7 @@
</ItemGroup>
<ItemGroup>
<None Include="CommandAttributes.aml" />
+ <None Include="Lexer Sample.aml" />
<None Include="Sample.aml" />
<None Include="Welcome.aml" />
</ItemGroup>
View
6 NppSharp.sln
@@ -1,7 +1,7 @@

-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NppSharp", "NppSharp\NppSharp.vcproj", "{D3EE14CE-4384-42C2-BCBA-F9C446D061BE}"
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NppSharp", "NppSharp\NppSharp.vcxproj", "{D3EE14CE-4384-42C2-BCBA-F9C446D061BE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NppSharpCS", "NppSharpCS\NppSharpCS.csproj", "{5FBB35AA-E35E-4374-BD6C-0C777F7F791F}"
EndProject
View
2 NppSharp/AssemblyInfo.cpp
@@ -31,7 +31,7 @@ using namespace System::Security::Permissions;
// You can specify all the value or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly:AssemblyVersionAttribute("1.0.2.0")];
+[assembly:AssemblyVersionAttribute("1.0.3.0")];
[assembly:ComVisible(false)];
View
43 NppSharp/LexerLine.cpp
@@ -24,6 +24,8 @@ namespace NppSharp
, _styles(nullptr)
, _len(0)
, _pos(0)
+ , _sb(gcnew StringBuilder())
+ , _foldLevel(0)
{
}
@@ -38,6 +40,8 @@ namespace NppSharp
_len = str->Length;
_pos = 0;
+ _foldLevel = 0;
+
if (_styles == nullptr || _styles->Length < _len) _styles = gcnew array<byte>(_len);
for (int i = 0; i < _len; ++i) _styles[i] = 0;
}
@@ -127,4 +131,43 @@ namespace NppSharp
if (_pos >= _len) return L'\0';
return _text[_pos];
}
+
+ String^ LexerLine::Peek(LexerReadDelegate^ readFunc)
+ {
+ if (readFunc == nullptr) throw gcnew ArgumentNullException("readFunc");
+
+ _sb->Clear();
+
+ int pos = _pos;
+ wchar_t ch;
+ while (pos < _len)
+ {
+ ch = _text[pos++];
+ if (readFunc(ch)) _sb->Append(ch);
+ else break;
+ }
+
+ return _sb->ToString();
+ }
+
+ void LexerLine::Style(LexerStyle^ style, LexerReadDelegate^ readFunc)
+ {
+ if (readFunc == nullptr) throw gcnew ArgumentNullException("readFunc");
+
+ while (_pos < _len)
+ {
+ if (readFunc(_text[_pos])) Style(style);
+ else break;
+ }
+ }
+
+ void LexerLine::FoldStart()
+ {
+ _foldLevel++;
+ }
+
+ void LexerLine::FoldEnd()
+ {
+ _foldLevel--;
+ }
}
View
10 NppSharp/LexerLine.h
@@ -16,6 +16,8 @@
#pragma once
+using namespace System::Text;
+
namespace NppSharp
{
ref class LexerLine : public ILexerLine
@@ -30,11 +32,17 @@ namespace NppSharp
property String^ Text { virtual String^ get(); }
virtual String^ Peek(int length);
+ virtual String^ Peek(LexerReadDelegate^ readFunc);
virtual void Style(LexerStyle^ style);
virtual void Style(LexerStyle^ style, int length);
+ virtual void Style(LexerStyle^ style, LexerReadDelegate^ readFunc);
virtual void StyleRemainder(LexerStyle^ style);
virtual void StyleRange(LexerStyle^ style, int startPos, int length);
+ virtual void FoldStart();
+ virtual void FoldEnd();
+ int GetFoldLevel() { return _foldLevel; }
+
void Start(String^ text);
property array<byte>^ StylesBuf { array<byte>^ get(); }
@@ -43,5 +51,7 @@ namespace NppSharp
array<byte>^ _styles;
int _len;
int _pos;
+ StringBuilder^ _sb;
+ int _foldLevel;
};
}
View
32 NppSharp/LexerWrapper.cpp
@@ -38,6 +38,7 @@ namespace NppSharp
void LexerWrapper::Release()
{
+ delete this;
}
const char* LexerWrapper::PropertyNames()
@@ -86,6 +87,8 @@ namespace NppSharp
int state = line > 0 ? _doc->GetLineState(line - 1) : 0;
int codePage = _doc->CodePage();
LexerLine^ lineObj = gcnew LexerLine();
+ int foldLevel = line > 0 ? (_doc->GetLevel(line - 1) & SC_FOLDLEVELNUMBERMASK) : SC_FOLDLEVELBASE;
+ bool foldBlank;
while (pszPos < pszEnd)
{
@@ -103,11 +106,12 @@ namespace NppSharp
{
lineStr = gcnew String(pszPos, 0, lineLen);
}
+ foldBlank = String::IsNullOrWhiteSpace(lineStr);
// Tell script to style the line.
- lineObj->Start(lineStr);
try
{
+ lineObj->Start(lineStr);
state = _clrLexer->StyleLine(lineObj, state);
}
catch (Exception^ ex)
@@ -157,8 +161,32 @@ namespace NppSharp
}
}
+ // Apply line state
+ _doc->SetLineState(line, state);
+
+ // Apply fold level state
+ int lineFoldLevel = lineObj->GetFoldLevel();
+ if (lineFoldLevel > 0)
+ {
+ _doc->SetLevel(line, foldLevel | SC_FOLDLEVELHEADERFLAG);
+ foldLevel += lineFoldLevel;
+ }
+ else if (lineFoldLevel < 0)
+ {
+ _doc->SetLevel(line, foldLevel);
+ foldLevel += lineFoldLevel;
+ if (foldLevel < SC_FOLDLEVELBASE) foldLevel = SC_FOLDLEVELBASE;
+ }
+ else
+ {
+ if (foldBlank) foldLevel |= SC_FOLDLEVELWHITEFLAG;
+ _doc->SetLevel(line, foldLevel);
+ }
+
+ foldLevel &= SC_FOLDLEVELNUMBERMASK;
+
// Advance to next line.
- _doc->SetLineState(line++, state);
+ line++;
pszPos = pszLineEnd;
}
}
View
167 NppSharp/NppSharp.vcxproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D3EE14CE-4384-42C2-BCBA-F9C446D061BE}</ProjectGuid>
+ <RootNamespace>NppSharp</RootNamespace>
+ <Keyword>ManagedCProj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <CLRSupport>true</CLRSupport>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <CLRSupport>true</CLRSupport>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>NppIncludes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>NppSharp.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AssemblyDebug>true</AssemblyDebug>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>NppIncludes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>NppSharp.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <Reference Include="System">
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </Reference>
+ <Reference Include="System.Data">
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </Reference>
+ <Reference Include="System.Xml">
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </Reference>
+ <Reference Include="System.Windows.Forms">
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </Reference>
+ <Reference Include="System.Drawing">
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\NppSharpCS\NppSharpCS.csproj">
+ <Project>{5fbb35aa-e35e-4374-bd6c-0c777f7f791f}</Project>
+ <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+ <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="app.ico" />
+ <None Include="icon1.ico" />
+ <None Include="NppSharp.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="app.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="NppIncludes\Docking.h" />
+ <ClInclude Include="NppIncludes\ILexer.h" />
+ <ClInclude Include="NppIncludes\menuCmdID.h" />
+ <ClInclude Include="NppIncludes\Notepad_plus_msgs.h" />
+ <ClInclude Include="NppIncludes\PluginInterface.h" />
+ <ClInclude Include="NppIncludes\Scintilla.h" />
+ <ClInclude Include="ClrUtil.h" />
+ <ClInclude Include="CmdList.h" />
+ <ClInclude Include="Main.h" />
+ <ClInclude Include="NppInterface.h" />
+ <ClInclude Include="Stdafx.h" />
+ <ClInclude Include="StringBuf.h" />
+ <ClInclude Include="StringStore.h" />
+ <ClInclude Include="DockWindow.h" />
+ <ClInclude Include="LexerFactories.h" />
+ <ClInclude Include="LexerLine.h" />
+ <ClInclude Include="LexerWrapper.h" />
+ <ClInclude Include="OutputWindow.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="AssemblyInfo.cpp" />
+ <ClCompile Include="ClrUtil.cpp" />
+ <ClCompile Include="Main.cpp" />
+ <ClCompile Include="Npp_Editor.cpp" />
+ <ClCompile Include="NppInterface.cpp" />
+ <ClCompile Include="Stdafx.cpp">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+ </ClCompile>
+ <ClCompile Include="StringStore.cpp" />
+ <ClCompile Include="DockWindow.cpp" />
+ <ClCompile Include="Npp_DockWindow.cpp" />
+ <ClCompile Include="LexerLine.cpp" />
+ <ClCompile Include="LexerWrapper.cpp" />
+ <ClCompile Include="Npp_Lexer.cpp" />
+ <ClCompile Include="Npp_OutputWindow.cpp" />
+ <ClCompile Include="OutputWindow.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
View
141 NppSharp/NppSharp.vcxproj.filters
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ <Filter Include="Notepad++">
+ <UniqueIdentifier>{25ab4619-fd3a-48f5-8096-9b67c0335e7b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Core">
+ <UniqueIdentifier>{44e1a19a-5351-46ed-a038-66220ae6635e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="DockWindow">
+ <UniqueIdentifier>{9a9b76db-612d-4ff3-9c6c-ed240ccb05f2}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Lexer">
+ <UniqueIdentifier>{5437bb1d-707a-4196-bea4-494ab827abb8}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="OutputWindow">
+ <UniqueIdentifier>{92131f8b-fdf9-478c-a11c-c013ea5e3f1f}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="app.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="icon1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="NppSharp.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="app.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="resource.h">
+ <Filter>Resource Files</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\Docking.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\ILexer.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\menuCmdID.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\Notepad_plus_msgs.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\PluginInterface.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="NppIncludes\Scintilla.h">
+ <Filter>Notepad++</Filter>
+ </ClInclude>
+ <ClInclude Include="ClrUtil.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="CmdList.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="Main.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="NppInterface.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="Stdafx.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="StringBuf.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="StringStore.h">
+ <Filter>Core</Filter>
+ </ClInclude>
+ <ClInclude Include="DockWindow.h">
+ <Filter>DockWindow</Filter>
+ </ClInclude>
+ <ClInclude Include="LexerFactories.h">
+ <Filter>Lexer</Filter>
+ </ClInclude>
+ <ClInclude Include="LexerLine.h">
+ <Filter>Lexer</Filter>
+ </ClInclude>
+ <ClInclude Include="LexerWrapper.h">
+ <Filter>Lexer</Filter>
+ </ClInclude>
+ <ClInclude Include="OutputWindow.h">
+ <Filter>OutputWindow</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="AssemblyInfo.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="ClrUtil.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="Main.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="Npp_Editor.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="NppInterface.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="Stdafx.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="StringStore.cpp">
+ <Filter>Core</Filter>
+ </ClCompile>
+ <ClCompile Include="DockWindow.cpp">
+ <Filter>DockWindow</Filter>
+ </ClCompile>
+ <ClCompile Include="Npp_DockWindow.cpp">
+ <Filter>DockWindow</Filter>
+ </ClCompile>
+ <ClCompile Include="LexerLine.cpp">
+ <Filter>Lexer</Filter>
+ </ClCompile>
+ <ClCompile Include="LexerWrapper.cpp">
+ <Filter>Lexer</Filter>
+ </ClCompile>
+ <ClCompile Include="Npp_Lexer.cpp">
+ <Filter>Lexer</Filter>
+ </ClCompile>
+ <ClCompile Include="Npp_OutputWindow.cpp">
+ <Filter>OutputWindow</Filter>
+ </ClCompile>
+ <ClCompile Include="OutputWindow.cpp">
+ <Filter>OutputWindow</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
View
27 NppSharpCS/ILexer.cs
@@ -28,26 +28,45 @@ public interface ILexer
/// <summary>
/// The file extensions to be automatically styled by this lexer.
/// </summary>
+ /// <remarks>
+ /// These are default extensions suggested by the lexer. Users may alter this list by
+ /// using the Settings -> Style Configurator dialog.
+ /// </remarks>
IEnumerable<string> Extensions { get; }
/// <summary>
/// A list of word styles to be applied to text when styling.
/// </summary>
- /// <remarks>Notepad++ limits a language to a maximum of 32 styles.</remarks>
+ /// <remarks>
+ /// <para>
+ /// When Notepad++ starts up, NppSharp will use this property to get a list of styles used by the lexer.
+ /// It will use this information to create the XML configuration file at
+ /// appdata\roaming\Notepad++\plugins\config\NppSharp.xml.
+ /// On consecutive Notepad++ start-ups, this file will be re-loaded, and any user-customized
+ /// information will be kept intact.
+ /// </para>
+ /// <para>
+ /// Users may alter the appear of the styles by using the Settings -> Style Configurator dialog.
+ /// </para>
+ /// <para>
+ /// Notepad++ imposes a restriction of 32 styles per language.
+ /// </para>
+ /// </remarks>
IEnumerable<LexerStyle> Styles { get; }
/// <summary>
/// Called when Notepad++ requires the lexer to apply styles to a line.
/// </summary>
- /// <param name="line">The object that contains the line information.</param>
+ /// <param name="line">The object that contains the line information and provides styling/folding functionality.</param>
/// <param name="previousLineState">The state value of the previous line.</param>
/// <returns>The state value of this line.</returns>
/// <remarks>
/// <para>
/// Styling is performed a line at a time, and uses a single integer to keep track of the
/// state between lines. For example, if a multi-line comment begins on line 1, and
- /// continues for several lines, lines 2 through and after will somehow need to know that
- /// they are in the middle of a comment section.
+ /// continues for several lines, lines 2 and after will somehow need to know that
+ /// they are in the middle of a comment section. The state variable is used to accomplish
+ /// this.
/// </para>
/// <para>
/// The return value indicates what the state of the current line should be.
View
82 NppSharpCS/ILexerLine.cs
@@ -25,12 +25,51 @@ namespace NppSharp
/// </summary>
public interface ILexerLine
{
+ #region Text Processing
/// <summary>
/// The line of text.
/// </summary>
string Text { get; }
/// <summary>
+ /// Gets the length of the text.
+ /// </summary>
+ int Length { get; }
+
+ /// <summary>
+ /// Gets the current position.
+ /// </summary>
+ int Position { get; set; }
+
+ /// <summary>
+ /// Gets a value indicating if the end of line has been reached.
+ /// </summary>
+ bool EOL { get; }
+
+ /// <summary>
+ /// Retrieves the next characters from the line without affecting the current position.
+ /// </summary>
+ /// <param name="length">The number of characters to be retrieved.</param>
+ /// <returns>The next characters on the line.</returns>
+ /// <remarks>If the end of the line has been reached, this function will return an empty string.</remarks>
+ string Peek(int length);
+
+ /// <summary>
+ /// Retrieves the next character from the line without affecting the current position.
+ /// </summary>
+ /// <remarks>If the end of the line has been reached, will return a NUL '\0' character.</remarks>
+ char NextChar { get; }
+
+ /// <summary>
+ /// Reads characters from the line until the callback function returns false.
+ /// </summary>
+ /// <param name="readFunc">The callback function to control when reading stops.</param>
+ /// <returns>A string containing the characters read from the line.</returns>
+ string Peek(LexerReadDelegate readFunc);
+ #endregion
+
+ #region Styling
+ /// <summary>
/// Sets the style for the next character.
/// </summary>
/// <param name="style">The style to be assigned.</param>
@@ -59,37 +98,30 @@ public interface ILexerLine
void StyleRange(LexerStyle style, int startPos, int length);
/// <summary>
- /// Gets the length of the text.
- /// </summary>
- int Length { get; }
-
- /// <summary>
- /// Gets the current position.
+ /// Styles characters on the line until the callback function returns false.
/// </summary>
- int Position { get; set; }
-
- /// <summary>
- /// Gets a value indicating if the end of line has been reached.
- /// </summary>
- bool EOL { get; }
-
- /// <summary>
- /// Retrieves the next characters from the line without affecting the current position.
- /// </summary>
- /// <param name="length">The number of characters to be retrieved.</param>
- /// <returns>The next characters on the line.</returns>
- /// <remarks>If the end of the line has been reached, this function will return an empty string.</remarks>
- string Peek(int length);
+ /// <param name="style">The style to be assigned.</param>
+ /// <param name="readFunc">The callback function to control when styling stops.</param>
+ void Style(LexerStyle style, LexerReadDelegate readFunc);
+ #endregion
+ #region Folding
/// <summary>
- /// Retrieves the next character from the line without affecting the current position.
+ /// Indicates that a fold section should start on this line.
/// </summary>
- /// <remarks>If the end of the line has been reached, will return a NUL '\0' character.</remarks>
- char NextChar { get; }
+ void FoldStart();
/// <summary>
- /// Gets the output window writer object.
+ /// Indicates the end of a fold section.
/// </summary>
- OutputView Output { get; }
+ void FoldEnd();
+ #endregion
}
+
+ /// <summary>
+ /// Used to control the ILexerLine.Peek() function.
+ /// </summary>
+ /// <param name="ch">The next character to be read.</param>
+ /// <returns>This function should return true if the character is to be included in the string returned by Read(), or false to stop reading.</returns>
+ public delegate bool LexerReadDelegate(char ch);
}
View
6 NppSharpCS/LexerStyle.cs
@@ -66,6 +66,7 @@ public LexerStyle(string name, Color foreColor, Color backColor)
/// <param name="name">The name of the word style.</param>
/// <param name="foreColor">The foreground text color.</param>
/// <param name="fontStyle">The font style.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, FontStyle fontStyle)
{
_name = name;
@@ -80,6 +81,7 @@ public LexerStyle(string name, Color foreColor, FontStyle fontStyle)
/// <param name="foreColor">The foreground text color.</param>
/// <param name="backColor">The background text color.</param>
/// <param name="fontStyle">The font style.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, Color backColor, FontStyle fontStyle)
{
_name = name;
@@ -95,6 +97,7 @@ public LexerStyle(string name, Color foreColor, Color backColor, FontStyle fontS
/// <param name="foreColor">The foreground text color.</param>
/// <param name="fontName">The name of the font family.</param>
/// <param name="fontStyle">The font style.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, string fontName, FontStyle fontStyle)
{
_name = name;
@@ -111,6 +114,7 @@ public LexerStyle(string name, Color foreColor, string fontName, FontStyle fontS
/// <param name="backColor">The background text color.</param>
/// <param name="fontName">The name of the font family.</param>
/// <param name="fontStyle">The font style.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, Color backColor, string fontName, FontStyle fontStyle)
{
_name = name;
@@ -128,6 +132,7 @@ public LexerStyle(string name, Color foreColor, Color backColor, string fontName
/// <param name="fontName">The name of the font family.</param>
/// <param name="fontStyle">The font style.</param>
/// <param name="fontSize">The size of the font.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, string fontName, FontStyle fontStyle, int fontSize)
{
_name = name;
@@ -146,6 +151,7 @@ public LexerStyle(string name, Color foreColor, string fontName, FontStyle fontS
/// <param name="fontName">The name of the font family.</param>
/// <param name="fontStyle">The font style.</param>
/// <param name="fontSize">The size of the font.</param>
+ /// <remarks>FontStyle.Strikeout is not functional within Notepad++</remarks>
public LexerStyle(string name, Color foreColor, Color backColor, string fontName, FontStyle fontStyle, int fontSize)
{
_name = name;
View
43 NppSharpCS/NppSharpCS.csproj
@@ -1,4 +1,5 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -9,6 +10,27 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NppSharp</RootNamespace>
<AssemblyName>NppSharpInterface</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>2.0</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -19,6 +41,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\NppSharpInterface.XML</DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -28,6 +51,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Release\NppSharpInterface.XML</DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@@ -114,6 +138,23 @@
<ItemGroup>
<None Include="Resources\dotnet.png" />
</ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
View
2 NppSharpCS/Plugin.cs
@@ -256,7 +256,7 @@ private static void OnShowHelpFile(object data)
try
{
string helpFileName = string.Concat("file://", Path.Combine(_npp.NppDir, Res.HelpFileName));
- Help.ShowHelp(Control.FromHandle(_npp.Window.Handle), helpFileName);
+ Help.ShowHelp(Control.FromHandle(_npp.Window.Handle), helpFileName); // TODO: remove
}
catch (Exception ex)
{
View
4 NppSharpCS/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.2.0")]
-[assembly: AssemblyFileVersion("1.0.2.0")]
+[assembly: AssemblyVersion("1.0.3.0")]
+[assembly: AssemblyFileVersion("1.0.3.0")]
View
4 NppSharpCS/Res.Designer.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
-// Runtime Version:2.0.50727.3634
+// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -19,7 +19,7 @@ namespace NppSharp {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Res {
View
12 README
@@ -1,25 +1,29 @@
NppSharp
Notepad++ plugin to run scripts written in C#/.NET
https://github.com/cmrazek/NppSharp
-Current Version: 1.0.2
+Current Version: 1.0.3
License:
This is licensed under GNU General Public License v3 (http://www.gnu.org/licenses/gpl.txt).
Download:
- Setup: https://github.com/downloads/cmrazek/NppSharp/NppSharp_Setup_1.0.2.exe
+ Setup: https://github.com/downloads/cmrazek/NppSharp/NppSharp_Setup_1.0.3.exe
Source: https://github.com/cmrazek/NppSharp/zipball/master
Requirements:
- Visual C++ 2005 Runtime: http://www.microsoft.com/en-us/download/details.aspx?id=3387
- .NET Framework 2.0: http://www.microsoft.com/en-us/download/details.aspx?id=19
+ Visual C++ 2010 Runtime: http://www.microsoft.com/en-ca/download/details.aspx?id=5555
+ .NET Framework 4: http://www.microsoft.com/en-us/download/details.aspx?id=17718
Contact:
Chris Mrazek (cmrazek)
Email: chrismrazek@gmail.com
ChangeLog:
+Version 1.0.3 - 2012-07-08:
+- Upgraded to .NET Framework 4 / Visual Studio 2010.
+- Added ability to create lexers in C#.
+
Version 1.0.2 - 2012-06-26:
- Fixed serious error occurring when the toolbar icon property throws an exception.
- Added built-in ability to load toolbar icons from .ico files through the 'FileName' property.
View
12 README.markdown
@@ -3,25 +3,29 @@ Notepad++ plugin to run scripts written in C#/.NET
[https://github.com/cmrazek/NppSharp](https://github.com/cmrazek/NppSharp)
-Current Version: 1.0.2
+Current Version: 1.0.3
## License
- This is licensed under [GNU General Public License v3](http://www.gnu.org/licenses/gpl.txt).
## Download
-- Setup: ([Download](https://github.com/downloads/cmrazek/NppSharp/NppSharp_Setup_1.0.2.exe))
+- Setup: ([Download](https://github.com/downloads/cmrazek/NppSharp/NppSharp_Setup_1.0.3.exe))
- Source: ([Download](https://github.com/cmrazek/NppSharp/zipball/master))
## Requirements
-- Visual C++ 2005 Runtime: ([Download](http://www.microsoft.com/en-us/download/details.aspx?id=3387))
-- Microsoft .NET Framework 2.0: ([Download](http://www.microsoft.com/en-us/download/details.aspx?id=19))
+- Visual C++ 2010 Runtime: ([Download](http://www.microsoft.com/en-ca/download/details.aspx?id=5555))
+- Microsoft .NET Framework 4: ([Download](http://www.microsoft.com/en-us/download/details.aspx?id=17718))
## Contact
- Chris Mrazek (cmrazek)
- Email: chrismrazek@gmail.com
## ChangeLog
+Version 1.0.3 - 2012-07-08:
+- Upgraded to .NET Framework 4 / Visual Studio 2010.
+- Added ability to create lexers in C#.
+
Version 1.0.2 - 2012-06-26:
- Fixed serious error occurring when the toolbar icon property throws an exception.
- Added built-in ability to load toolbar icons from .ico files through the 'FileName' property.
View
2 Setup/NppSharpSetup.nsi
@@ -3,7 +3,7 @@
;---------------------------------------------------------------------------------------------------
Name "NppSharp"
-OutFile "Output\NppSharp_Setup_1.0.2.exe"
+OutFile "Output\NppSharp_Setup_1.0.3.exe"
InstallDir "$PROGRAMFILES32\Notepad++"
;---------------------------------------------------------------------------------------------------

0 comments on commit b07721f

Please sign in to comment.
Something went wrong with that request. Please try again.