using System;
namespace JetBrains.ReSharper.Koans.LiveTemplates
{
// Surround with
//
// Ctrl+E, U (VS)
//
// Alt+Enter when text is selected
//
public class SurroundTemplates
{
// 1. Wrap code in a try/catch
// Select the method call and the Console.WriteLine
// Invoke Surround with, or hit Alt+Enter
// Select try/catch
// Edit the type of exception you want to catch, e.g. InvalidOperationException
// Tab to the name of the exception, and change if you want
// Tab again, and the Console.WriteLine is highlighted, ready to be replaced with e.g. throw;
//
// 2. View the try/catch surround template
// ReSharper → Templates Explorer → Surround Templates → try..catch
// Note the $SELECTION$ parameter. This is the currently selected text
// Note the $SELSTART$ and $SELEND$ macros. These are used to mark the
// start and end of the selection after the template has been invoked,
// and all editable macros have been edited
// Note the $END$ macro. This is the final position of the text caret
// once editing of the expanded template is complete
public void SurroundWithTryCatch()
{
var result = ThisMethodThrowsExceptions();
Console.WriteLine(result);
}
private string ThisMethodThrowsExceptions()
{
throw new InvalidOperationException();
}
// 2. Create a surround template to surround with quotes
// Go to ReSharper → Templates Explorer → Surround Templates
// Click the New Template toolbar icon
// Change the text to (including quotes): "$SELECTION$"
// Enter a description - quote
// Save the template (note that it isn't in the quicklist section yet)
// Select the message variable usage in the first Console.WriteLine and invoke
// Surround With, select More... and then select "quote"
// Go to Templates Explorer → Surround Templates and drag and drop the quote
// template into the quicklist section
// Select the message variable usage in the second Console.WriteLine and invoke
// Surround With and select "quote"
public void SurroundWithQuotes()
{
const string message = "This is the message";
Console.WriteLine(message);
Console.WriteLine(message);
}
}
}