2013-10-07 22 views
0

我有我想要的大寫的文檔,如變量的情況
(trivalized例如)如何在Resharper模板中大寫整個變量?

///AT+$COMMAND$ 

void At$COMMAND$() 
{ 
} 

所以我想模板的用戶鍵入類似「嗒嗒」,並且得到在方法名稱中使用,但文檔部分變爲「BLAH」。

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

我能做到這一點?我在宏中看到,我可以將第一個字母大寫,但我希望整個單詞大寫。是否可以創建自定義宏?

+0

HTTP:/ /stackoverflow.com/questions/15342501/captilizing-a-name-in-a-resharper-template – Eldar

回答

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(); 
     } 
    } 
}