C# intellisense features of the CS-Script plugin for Notepad++


Features

Note: some features are being subject of the current migration to Roslyn. And while the migration is fully complete for Auto-completion and Code Formatting some other features may not fully work with C# 6. See C# 6 support for details

  • CLR Type members auto-completion. (Ctrl+Space or type '.')

           

  • Show Member info
    The info is implemented as a non-interactive tooltip. It pops up by rolling mouse over the C# syntax token. It cannot be triggered by any shortcut.

          

  • Show Method Info (overloads) popup while typing.
    The info is implemented as a interactive tooltip: you can iterate through method overloads with the up and down buttons .
    Triggered either automatically by typing '(' or by  F6 shortcut. For both triggers to work it is required that caret should be further the method opening bracket.
    If this condition is not met the info will not popup.  The info will also not popup if the method information cannot be obtained (e.g. because of compiling error).

          

  • Adding missing 'usings'.  (Ctrl+.)

          

  • Go to definition (F12)
    - in C# source code
    - in the reconstructed referenced assembly.

         

  • Formatting C# source code (Ctrl+F82)
    Before
    After
     


Usage


"CS-Script Intellisense" will display the completion suggestions when the '.' character is typed or the plugin shortcut is pressed. The plugin is bound to "Ctrl+." shortcut by default.

"CS-Script Intellisense" will also allow resolving and add the missing namespaces (with using statements) in the similar to the way Visual Studio does it.  The plugin is bound to "Ctrl+Shift+." shortcut by default. however if the "Invoke native Auto-Completion for non .cs files" is enabled the "Namespace   resolving is remapped to the more familiar "Ctrl+." shortcut.

The Intellisense implementation is based on the CS-Script C# source code model. A single .cs file (Notepad++ current document) forms a single-file C# project. The referenced assemblies are resolved automatically from the "using <namespace>;" clauses. The CS-Script //css_ref (or //css_reference) directives can be used to reference assemblies explicitly.
Extra C# files can also be added to the logical C# project with the //css_inc (or //css_include) directives.
The information about all CS-Script directives (~8 in total) can be found here: http://www.csscript.net/help/Directives.html.
The majority of the dependency scenarios can be handled by just two directives:  //css_inc and //css_ref. And in many case there is even no need for any CS-Script directives at all as a plain vanilla C# file is usually compatible with the CS-Script Intellisense model.  
The following are the samples of how to use the CS-Script directives:
Including the C# file math.cs containing the Math class definition

//css_inc math.cs;
using System;

class Script
{
static public void Main(string [] args)
{
Console.WriteLine(Math.Calculator.Add(1,2));
}
}

Referencing the math.dll assembly containing the Math class implementation

//css_ref math.dll;
using System;

class Script
{
    static public void Main(string [] args)
    {
        Console.WriteLine(Math.Calculator.Add(1,2));
    }
}


NOTE: All CS-Script directives and 'using' clauses are processed on the file opening. Thus if the new directive or 'using' clauses added to the "current document" you may want to re-generate the Intellisense data with the menu 'Plugins->C# Intellisense->Re-analyse Current Document'.

Last edited Apr 13, 2016 at 1:48 AM by oleg_s, version 13

Comments

oleg_s Apr 13, 2016 at 1:13 AM 
Sorry for the delayed response, CodePlex didn't send me the notification about your message.
No, the Intellisense support all module types (assemblies, source files).

Also CS-Script allows you to reference other scripts (as with Python 's import) and they are also supported.

Qwertie Mar 18, 2016 at 10:06 PM 
Based on the examples, it looks like IntelliSense supports only external assemblies, not local methods and local variables. Is that right?