@@ -24,6 +24,10 @@ module QuickFixes =
2424 let toText = prefixingUnderscores + ident.idText.Replace( " _" , String.Empty)
2525 Some { FromText = ident.idText; FromRange = ident.idRange; ToText = toText })
2626
27+ let removePrefixingAndSuffixingUnderscores ( ident : Ident ) = lazy (
28+ let toText = ident.idText.Trim '_'
29+ Some { FromText = ident.idText; FromRange = ident.idRange; ToText = toText })
30+
2731 let addPrefix prefix ( ident : Ident ) = lazy (
2832 Some { FromText = ident.idText; FromRange = ident.idRange; ToText = prefix + ident.idText })
2933
@@ -83,12 +87,17 @@ let private camelCaseRule (identifier:string) =
8387 if not ( isCamelCase identifier) then Some " RulesNamingConventionsCamelCaseError"
8488 else None
8589
86- let private underscoreRule allowPrefix ( identifier : string ) =
87- if allowPrefix && identifier.TrimStart( '_' ) .Contains( " _" ) then
88- Some " RulesNamingConventionsUnderscoreError"
89- else if not allowPrefix && identifier.Contains( " _" ) then
90- Some " RulesNamingConventionsUnderscoreError"
91- else
90+ let private underscoreRule ( underscoreMode : NamingUnderscores ) ( identifier : string ) =
91+ let errorKeyToRemoveUnderscores = " RulesNamingConventionsUnderscoreError"
92+ let errorKeyToRemoveLeadingOrTrailingUnderscores = " RulesNamingConventionsNoInfixUnderscoreError"
93+ match underscoreMode with
94+ | NamingUnderscores.AllowPrefix when identifier.TrimStart( '_' ) .Contains '_' ->
95+ Some errorKeyToRemoveUnderscores
96+ | NamingUnderscores.None when identifier.Contains '_' ->
97+ Some errorKeyToRemoveUnderscores
98+ | NamingUnderscores.AllowInfix when ( identifier.StartsWith '_' || identifier.EndsWith '_' ) ->
99+ Some errorKeyToRemoveLeadingOrTrailingUnderscores
100+ | _ ->
92101 None
93102
94103let private prefixRule ( prefix : string ) ( identifier : string ) =
@@ -120,12 +129,15 @@ let private checkIdentifierPart (config:NamingConfig) (identifier:Ident) (idText
120129
121130 let underscoresError =
122131 match config.Underscores with
123- | Some NamingUnderscores.None ->
124- underscoreRule false idText
132+ | Some ( NamingUnderscores.None as nuCfg ) ->
133+ underscoreRule nuCfg idText
125134 |> Option.map ( formatError >> tryAddFix QuickFixes.removeAllUnderscores)
126- | Some NamingUnderscores.AllowPrefix ->
127- underscoreRule true idText
135+ | Some ( NamingUnderscores.AllowPrefix as nuCfg ) ->
136+ underscoreRule nuCfg idText
128137 |> Option.map ( formatError >> tryAddFix QuickFixes.removeNonPrefixingUnderscores)
138+ | Some ( NamingUnderscores.AllowInfix as nuCfg) ->
139+ underscoreRule nuCfg idText
140+ |> Option.map ( formatError >> tryAddFix QuickFixes.removePrefixingAndSuffixingUnderscores)
129141 | _ -> None
130142
131143 let prefixError =
0 commit comments