0

ドキュメント用に変数を大文字にしたい状況があります
(たとえば、トリバライズされます)

///AT+$COMMAND$

void At$COMMAND$()
{
}

したがって、テンプレートのユーザーに「Blah」のようなものを入力してもらいたいのですが、それはメソッド名で使用されますが、ドキュメントの部分は「BLAH」に変更されます。

例えば

///AT+BLAH
void AtBlah()
{
}

これはできますか?マクロで最初の文字を大文字にできることがわかりましたが、単語全体を大文字にしたいと思います。カスタム マクロを作成することはできますか?

4

1 に答える 1

0

Resharper 8 のマクロの変更に合わせてドキュメントを更新しました。http://confluence.jetbrains.com/display/NETCOM/4.04+Live+Template+Macros+%28R8%29 で確認できます

新しいドキュメントでは非常に簡単です。私の実装は次のとおりです。

using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.LiveTemplates.Macros;
using JetBrains.ReSharper.Feature.Services.LiveTemplates.Hotspots;

namespace ReSharperPlugin
{
    [MacroDefinition("LiveTemplatesMacro.CapitalizeVariable", // macro name should be unique among all other macros, it's recommended to prefix it with your plugin name to achieve that
    ShortDescription = "Capitalizes variable {0:list}", // description of the macro to be shown in the list of macros
    LongDescription = "Capitalize full name of variable" // long description of the macro to be shown in the area below the list
    )]
    public class CapitalizeVariableMacro : IMacroDefinition
    {
        public string GetPlaceholder(IDocument document, IEnumerable<IMacroParameterValue> parameters)
        {
            return "A";
        }

        public ParameterInfo[] Parameters
        {
            get { return new[] {new ParameterInfo(ParameterType.VariableReference)}; }
        }
    }

    [MacroImplementation(Definition = typeof(CapitalizeVariableMacro))]
    public class CapitalizeVariableMacroImpl : SimpleMacroImplementation
    {
        private readonly IMacroParameterValueNew _parameter;

        public CapitalizeVariableMacroImpl([Optional] MacroParameterValueCollection parameters)
        {
            _parameter = parameters.OptionalFirstOrDefault();
        }

        public override string EvaluateQuickResult(IHotspotContext context)
        {
            return _parameter == null ? null : _parameter.GetValue().ToUpperInvariant();
        }
    }
}
于 2014-01-15T16:20:54.560 に答える