Я не смог найти плагин или макрос, на который вы ссылаетесь, но я создал макрос, который будет хорошо работать!
Сначала для установки сделайте следующее:
- Нажмите Alt + F11
- Развернуть MyMacros
- Открыть модуль EnvironmentEvents
- Вставьте код в модуль (код находится в конце этого поста)
- Закрыть редактор макросов
Для использования макроса:
- Нажмите
`
( могила клавиша).
- Следующее нажатие
"
- Введите слова, которые вы хотите
- В завершение введите
"`
- Смотри, как происходит волшебство!
ПРИМЕЧАНИЕ: Вы можете просто начать набирать значение sting, а затем добавить символы могилы до и после, и оно все равно будет работать.
Макрос удалит пробелы, а затем PascalCase весь набор слов. Он также удаляет одинарные и двойные кавычки. Наконец, он преобразует запятые в подчеркивания, если вы хотите использовать соглашение об именах, предложенное Роем Ошеровом ( Искусство модульного тестирования , стр. 211):
MethodUnderTest_Scenario_Behavior ()
Примеры:
public void `"return zero for an all gutter game"`
public void `"LoadMainParts, when materials files are valid, will return a list of parts sorted by sequential item number ascending"`
... превратится в это (после второго `
нажатия):
public void ReturnZeroForAnAllGutterGame
public void LoadMainParts_WhenMaterialsFilesAreValid_WillReturnAListOfPartsSortedBySequentialItemNumberAscending
Макрос:
...
Imports System.Text.RegularExpressions
...
Private isPascalCaseAndSpaceRemovalEnabled As Boolean
Private Function ConvertToPascalCase(ByVal value As String) As String
'apply ToUpper on letters preceeded by a space, double quotes, or a comma'
Dim pattern As String = "[ ,"",\,][a-z]"
value = Regex.Replace(value, _
pattern, _
Function(m) m.Value.ToUpper, _
RegexOptions.Singleline)
'replace commas with underscores'
value = value.Replace(",", "_")
'remove spaces, graves, double quotes, and single qoutes'
Dim removalCharacters As String() = {" ", "`", """", "'"}
For Each character In removalCharacters
value = value.Replace(character, "")
Next
Return value
End Function
Private Sub TextDocumentKeyPressEvents_AfterKeyPress(ByVal Keypress As String, _
ByVal Selection As EnvDTE.TextSelection, _
ByVal InStatementCompletion As Boolean) _
Handles TextDocumentKeyPressEvents.AfterKeyPress
If isPascalCaseAndSpaceRemovalEnabled AndAlso Keypress = "`" Then
Selection.SelectLine()
Dim pattern As String = "`""(.*)""`"
Dim substringToReplace As String = Regex.Match(Selection.Text, _
pattern, _
RegexOptions.Singleline).Value
Selection.ReplacePattern(pattern, _
ConvertToPascalCase(substringToReplace), _
vsFindOptions.vsFindOptionsRegularExpression)
Selection.MoveToPoint(Selection.BottomPoint)
isPascalCaseAndSpaceRemovalEnabled = False
CancelKeyPress = True
ElseIf Keypress = "`" Then
isPascalCaseAndSpaceRemovalEnabled = True
End If
End Sub
Не стесняйтесь адаптировать код к вашим потребностям.