Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 1adf76f

Browse files
authored
20 fix old style units to new ones (#51)
* add new option to update unit names * Add renaming old units with short names * Fix extension settings loading and tests * Use : for unit name separation * Add defaults for unit names * update version and changelog
1 parent ffbca47 commit 1adf76f

File tree

7 files changed

+398
-23
lines changed

7 files changed

+398
-23
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ All notable changes to the "pascal-uses-formatter" extension will be documented
33

44
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
55

6+
## [0.5.0]
7+
- Add replacing old style short unit names with longer forms.
8+
69
## [0.4.2]
710
- Do not sort when the block has unsupported comments and ifdefs in it.
811

package.json

+280-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "pascal-uses-formatter",
33
"displayName": "pascal-uses-formatter",
44
"description": "sorts the uses section in pascal files",
5-
"version": "0.4.2",
5+
"version": "0.5.0",
66
"publisher": "tuncb",
77
"repository": "https://github.com/tuncb/delphi-uses-formatter",
88
"license": "Apache-2.0",
@@ -30,15 +30,290 @@
3030
"pascal-uses-formatter.formatOnSave": {
3131
"type": "boolean",
3232
"default": true,
33-
"description": "Format uses section automatically after first activation"
33+
"description": "Format uses section automatically after first activation",
34+
"order": 1
35+
},
36+
"pascal-uses-formatter.updateUnitNames": {
37+
"type": "boolean",
38+
"default": true,
39+
"description": "Update unit names in uses section",
40+
"order": 2
41+
},
42+
"pascal-uses-formatter.unitNamesToUpdate": {
43+
"type": "array",
44+
"items": {
45+
"type": "string"
46+
},
47+
"default": [
48+
"System:Actions.pas",
49+
"System:Analytics.AppAnalytics.pas",
50+
"System:Analytics.pas",
51+
"System:AnsiStrings.pas",
52+
"System:Character.pas",
53+
"System:Classes.pas",
54+
"System:Contnrs.pas",
55+
"System:ConvUtils.pas",
56+
"System:Curl.pas",
57+
"System:DateUtils.pas",
58+
"System:Devices.pas",
59+
"System:Diagnostics.pas",
60+
"System:Generics.Collections.pas",
61+
"System:Generics.Defaults.pas",
62+
"System:Hash.pas",
63+
"System:HelpIntfs.pas",
64+
"System:IOUtils.pas",
65+
"System:ImageList.pas",
66+
"System:IniFiles.pas",
67+
"System:Internal.DebugUtils.pas",
68+
"System:Internal.ICU.pas",
69+
"System:JSON.BSON.pas",
70+
"System:JSON.Builders.pas",
71+
"System:JSON.Converters.pas",
72+
"System:JSON.Readers.pas",
73+
"System:JSON.Serializers.pas",
74+
"System:JSON.Types.pas",
75+
"System:JSON.Utils.pas",
76+
"System:JSON.Writers.pas",
77+
"System:JSON.pas",
78+
"System:JSONConsts.pas",
79+
"System:MaskUtils.pas",
80+
"System:Masks.pas",
81+
"System:Math.Vectors.pas",
82+
"System:Math.pas",
83+
"System:Messaging.pas",
84+
"System:NetEncoding.Sqids.pas",
85+
"System:NetEncoding.pas",
86+
"System:Notification.pas",
87+
"System:ObjAuto.pas",
88+
"System:Odbc.pas",
89+
"System:Permissions.pas",
90+
"System:PushNotification.pas",
91+
"System:RTLConsts.pas",
92+
"System:RegularExpressions.pas",
93+
"System:RegularExpressionsAPI.pas",
94+
"System:RegularExpressionsConsts.pas",
95+
"System:RegularExpressionsCore.pas",
96+
"System:Rtti.pas",
97+
"System:Sensors.Components.pas",
98+
"System:Sensors.pas",
99+
"System:Skia.API.pas",
100+
"System:Skia.pas",
101+
"System:Sqlite.pas",
102+
"System:StartUpCopy.pas",
103+
"System:StdConvs.pas",
104+
"System:StrUtils.pas",
105+
"System:SyncObjs.pas",
106+
"System:Threading.pas",
107+
"System:TimeSpan.pas",
108+
"System:TypInfo.pas",
109+
"System:UIConsts.pas",
110+
"System:UITypes.pas",
111+
"System:VarCmplx.pas",
112+
"System:VarConv.pas",
113+
"System:Vulkan.pas",
114+
"System:WideStrUtils.pas",
115+
"System:WideStrings.pas",
116+
"System:Win.ComConst.pas",
117+
"System:Win.ComObj.pas",
118+
"System:Win.ComObjWrapper.pas",
119+
"System:Win.ComServ.pas",
120+
"System:Win.Crtl.pas",
121+
"System:Win.Devices.pas",
122+
"System:Win.HighDpi.pas",
123+
"System:Win.IEInterfaces.pas",
124+
"System:Win.InternetExplorer.pas",
125+
"System:Win.Mtsobj.pas",
126+
"System:Win.Notification.pas",
127+
"System:Win.ObjComAuto.pas",
128+
"System:Win.OleControls.pas",
129+
"System:Win.OleServers.pas",
130+
"System:Win.Registry.pas",
131+
"System:Win.ScktComp.pas",
132+
"System:Win.Sensors.pas",
133+
"System:Win.ShareContract.pas",
134+
"System:Win.StdVCL.pas",
135+
"System:Win.Taskbar.pas",
136+
"System:Win.TaskbarCore.pas",
137+
"System:Win.VCLCom.pas",
138+
"System:Win.WinRT.pas",
139+
"System:ZLib.pas",
140+
"System:ZLibConst.pas",
141+
"System:Zip.pas",
142+
"System.Win:ComConst.pas",
143+
"System.Win:ComObj.pas",
144+
"System.Win:ComObjWrapper.pas",
145+
"System.Win:ComServ.pas",
146+
"System.Win:Crtl.pas",
147+
"System.Win:Devices.pas",
148+
"System.Win:HighDpi.pas",
149+
"System.Win:IEInterfaces.pas",
150+
"System.Win:InternetExplorer.pas",
151+
"System.Win:Mtsobj.pas",
152+
"System.Win:Notification.pas",
153+
"System.Win:ObjComAuto.pas",
154+
"System.Win:OleControls.pas",
155+
"System.Win:OleServers.pas",
156+
"System.Win:Registry.pas",
157+
"System.Win:ScktComp.pas",
158+
"System.Win:Sensors.pas",
159+
"System.Win:ShareContract.pas",
160+
"System.Win:StdVCL.pas",
161+
"System.Win:Taskbar.pas",
162+
"System.Win:TaskbarCore.pas",
163+
"System.Win:VCLCom.pas",
164+
"System.Win:WinRT.pas",
165+
"Winapi:ADOInt.pas",
166+
"Winapi:AccCtrl.pas",
167+
"Winapi:AclAPI.pas",
168+
"Winapi:ActiveX.pas",
169+
"Winapi:AspTlb.pas",
170+
"Winapi:Bluetooth.pas",
171+
"Winapi:BluetoothLE.pas",
172+
"Winapi:COMAdmin.pas",
173+
"Winapi:ComSvcs.pas",
174+
"Winapi:CommCtrl.pas",
175+
"Winapi:CommDlg.pas",
176+
"Winapi:Cor.pas",
177+
"Winapi:CorError.pas",
178+
"Winapi:CorHdr.pas",
179+
"Winapi:Cpl.pas",
180+
"Winapi:D2D1.pas",
181+
"Winapi:D3D10.pas",
182+
"Winapi:D3D10_1.pas",
183+
"Winapi:D3D11.pas",
184+
"Winapi:D3D11Shader.pas",
185+
"Winapi:D3D11Shadertracing.pas",
186+
"Winapi:D3D11_1.pas",
187+
"Winapi:D3D11_2.pas",
188+
"Winapi:D3D11_3.pas",
189+
"Winapi:D3D11on12.pas",
190+
"Winapi:D3D11sdklayers.pas",
191+
"Winapi:D3D12.pas",
192+
"Winapi:D3D12Shader.pas",
193+
"Winapi:D3D12sdklayers.pas",
194+
"Winapi:D3DCommon.pas",
195+
"Winapi:D3DCompiler.pas",
196+
"Winapi:D3DX10.pas",
197+
"Winapi:D3DX8.pas",
198+
"Winapi:D3DX9.pas",
199+
"Winapi:DDEml.pas",
200+
"Winapi:DX7toDX8.pas",
201+
"Winapi:DXFile.pas",
202+
"Winapi:DXGI.pas",
203+
"Winapi:DXGI1_2.pas",
204+
"Winapi:DXGI1_3.pas",
205+
"Winapi:DXGI1_4.pas",
206+
"Winapi:DXTypes.pas",
207+
"Winapi:Direct3D.PkgHelper.pas",
208+
"Winapi:Direct3D.pas",
209+
"Winapi:Direct3D8.pas",
210+
"Winapi:Direct3D9.pas",
211+
"Winapi:DirectDraw.pas",
212+
"Winapi:DirectInput.pas",
213+
"Winapi:DirectMusic.pas",
214+
"Winapi:DirectPlay8.pas",
215+
"Winapi:DirectShow9.pas",
216+
"Winapi:DirectSound.pas",
217+
"Winapi:Dlgs.pas",
218+
"Winapi:DwmApi.pas",
219+
"Winapi:DxDiag.pas",
220+
"Winapi:DxgiFormat.pas",
221+
"Winapi:DxgiType.pas",
222+
"Winapi:EdgeUtils.pas",
223+
"Winapi:FlatSB.pas",
224+
"Winapi:Functiondiscovery.pas",
225+
"Winapi:GDIPAPI.pas",
226+
"Winapi:GDIPOBJ.pas",
227+
"Winapi:GDIPUTIL.pas",
228+
"Winapi:ImageHlp.pas",
229+
"Winapi:Imm.pas",
230+
"Winapi:IpExport.pas",
231+
"Winapi:IpHlpApi.pas",
232+
"Winapi:IpRtrMib.pas",
233+
"Winapi:IpTypes.pas",
234+
"Winapi:Isapi.pas",
235+
"Winapi:Isapi2.pas",
236+
"Winapi:KnownFolders.pas",
237+
"Winapi:LZExpand.pas",
238+
"Winapi:Locationapi.pas",
239+
"Winapi:MLang.pas",
240+
"Winapi:MMSystem.pas",
241+
"Winapi:Manipulations.pas",
242+
"Winapi:Mapi.pas",
243+
"Winapi:Messages.pas",
244+
"Winapi:MsCTF.PkgHelper.pas",
245+
"Winapi:MsCTF.pas",
246+
"Winapi:MsInkAut.pas",
247+
"Winapi:MsInkAut15.pas",
248+
"Winapi:Mshtmhst.pas",
249+
"Winapi:Mtx.pas",
250+
"Winapi:MultiMon.pas",
251+
"Winapi:Nb30.pas",
252+
"Winapi:ObjectArray.pas",
253+
"Winapi:Ole2.pas",
254+
"Winapi:OleCtl.pas",
255+
"Winapi:OleDB.pas",
256+
"Winapi:OleDlg.pas",
257+
"Winapi:OpenGL.PkgHelper.pas",
258+
"Winapi:OpenGL.pas",
259+
"Winapi:OpenGLext.pas",
260+
"Winapi:PenInputPanel.pas",
261+
"Winapi:Penwin.pas",
262+
"Winapi:Portabledevicetypes.pas",
263+
"Winapi:PropKey.pas",
264+
"Winapi:PropSys.pas",
265+
"Winapi:PsAPI.pas",
266+
"Winapi:Qos.pas",
267+
"Winapi:RegStr.pas",
268+
"Winapi:RichEdit.pas",
269+
"Winapi:RtsCom.pas",
270+
"Winapi:SHFolder.pas",
271+
"Winapi:Sensors.pas",
272+
"Winapi:Sensorsapi.pas",
273+
"Winapi:ShLwApi.pas",
274+
"Winapi:ShellAPI.pas",
275+
"Winapi:ShellScaling.pas",
276+
"Winapi:ShlObj.pas",
277+
"Winapi:StructuredQuery.pas",
278+
"Winapi:StructuredQueryCondition.pas",
279+
"Winapi:TlHelp32.pas",
280+
"Winapi:TpcShrd.pas",
281+
"Winapi:UrlMon.pas",
282+
"Winapi:UserEnv.pas",
283+
"Winapi:UxTheme.pas",
284+
"Winapi:Vulkan.pas",
285+
"Winapi:WMF9.pas",
286+
"Winapi:WTSApi32.pas",
287+
"Winapi:Wbem.pas",
288+
"Winapi:WebView2.pas",
289+
"Winapi:WinCred.pas",
290+
"Winapi:WinHTTP.pas",
291+
"Winapi:WinInet.pas",
292+
"Winapi:WinSock.pas",
293+
"Winapi:WinSpool.pas",
294+
"Winapi:WinSvc.pas",
295+
"Winapi:Wincodec.pas",
296+
"Winapi:Windows.PkgHelper.pas",
297+
"Winapi:Windows.pas",
298+
"Winapi:Winrt.pas",
299+
"Winapi:WinrtMetadata.pas",
300+
"Winapi:Winsafer.pas",
301+
"Winapi:Winsock2.pas",
302+
"Winapi:msxml.pas",
303+
"Winapi:msxmlIntf.pas",
304+
"Winapi:oleacc.pas"
305+
],
306+
"description": "Unit names to update. If the part after ':' is found it is replaced with the full name with '.' replacing ':'.",
307+
"order": 3
34308
},
35309
"pascal-uses-formatter.overrideSortingOrder": {
36310
"type": "array",
37311
"items": {
38312
"type": "string"
39313
},
40314
"default": [],
41-
"description": "Override default namespace sorting order. Configure sorting priority by adding namespace to array"
315+
"description": "Override default namespace sorting order. Configure sorting priority by adding namespace to array",
316+
"order": 4
42317
},
43318
"pascal-uses-formatter.formattingStyle": {
44319
"type": "string",
@@ -51,7 +326,8 @@
51326
", Unit1"
52327
],
53328
"default": "Comma at the end",
54-
"description": "Formatting style for units"
329+
"description": "Formatting style for units",
330+
"order": 5
55331
}
56332
}
57333
}

src/extension.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@ interface IUsesFormatterState {
99
function getFormattingOptions(): FormattingOptions {
1010
const configurableSortingArray = vscode.workspace.getConfiguration('pascal-uses-formatter').get('overrideSortingOrder') as string[];
1111
const unitFormattingTypeName = vscode.workspace.getConfiguration('pascal-uses-formatter').get('formattingStyle') as string;
12+
const updateUnitNames = vscode.workspace.getConfiguration('pascal-uses-formatter').get('updateUnitNames') as boolean;
13+
const unitNamesToUpdate = vscode.workspace.getConfiguration('pascal-uses-formatter').get('unitNamesToUpdate') as string[];
14+
1215

1316
const unitFormattingType = unitFormattingTypeName === "Comma at the beginning" ? UnitFormattingType.commaFirst : UnitFormattingType.commaLast;
1417

1518
return {
1619
configurableSortingArray,
17-
unitFormattingType
20+
unitFormattingType,
21+
updateUnitNames,
22+
unitNamesToUpdate,
1823
};
1924
}
2025

src/test/suite/extension.test.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import path = require('path');
77
interface FormattingRawData {
88
overrideSortingOrder: string[];
99
formattingStyle: string;
10+
updateUnitNames: boolean;
11+
unitNamesToUpdate: string[];
1012
}
1113

1214
interface TestSample {
@@ -37,6 +39,8 @@ const getAbsolutePath = (fileName: string): string => path.resolve(__dirname, fi
3739
const updateConfiguration = async (options: FormattingRawData) => {
3840
await vscode.workspace.getConfiguration('pascal-uses-formatter').update('overrideSortingOrder', options.overrideSortingOrder, vscode.ConfigurationTarget.Global);
3941
await vscode.workspace.getConfiguration('pascal-uses-formatter').update('formattingStyle', options.formattingStyle, vscode.ConfigurationTarget.Global);
42+
await vscode.workspace.getConfiguration('pascal-uses-formatter').update('updateUnitNames', options.updateUnitNames, vscode.ConfigurationTarget.Global);
43+
await vscode.workspace.getConfiguration('pascal-uses-formatter').update('unitNamesToUpdate', options.unitNamesToUpdate, vscode.ConfigurationTarget.Global);
4044
};
4145

4246
const testFile = async (sample: TestSample): Promise<void> => {
@@ -60,12 +64,14 @@ const testFile = async (sample: TestSample): Promise<void> => {
6064
};
6165

6266
suite('Extension Test Suite', () => {
63-
let currentOptions: FormattingRawData = { overrideSortingOrder: [], formattingStyle: '' };
67+
let currentOptions: FormattingRawData = { overrideSortingOrder: [], formattingStyle: '', updateUnitNames: false, unitNamesToUpdate: [] };
6468

6569
before(() => {
6670
currentOptions = {
6771
overrideSortingOrder: vscode.workspace.getConfiguration('pascal-uses-formatter').get('overrideSortingOrder') as string[],
68-
formattingStyle: vscode.workspace.getConfiguration('pascal-uses-formatter').get('formattingStyle') as string
72+
formattingStyle: vscode.workspace.getConfiguration('pascal-uses-formatter').get('formattingStyle') as string,
73+
updateUnitNames: vscode.workspace.getConfiguration('pascal-uses-formatter').get('updateUnitNames') as boolean,
74+
unitNamesToUpdate: vscode.workspace.getConfiguration('pascal-uses-formatter').get('unitNamesToUpdate') as string[],
6975
};
7076
vscode.window.showInformationMessage('Start all tests.');
7177
});

0 commit comments

Comments
 (0)