Skip to content

Commit b7b8963

Browse files
authored
Merge pull request #223 from inferrinizzard/vscode/v6
Update VSCode Extension with v6 setting changes
2 parents 4f2fae7 + f7d5f82 commit b7b8963

File tree

3 files changed

+55
-64
lines changed

3 files changed

+55
-64
lines changed

vscode/package.json

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "prettier-sql-vscode",
33
"displayName": "Prettier SQL VSCode",
44
"description": "VSCode Extension to format SQL files",
5-
"version": "0.3.0",
5+
"version": "1.0.0",
66
"publisher": "inferrinizzard",
77
"author": {
88
"name": "inferrinizzard"
@@ -65,7 +65,7 @@
6565
"vsce": "vsce"
6666
},
6767
"dependencies": {
68-
"prettier-sql": "^5.1.0"
68+
"sql-formatter": "^6.1.2"
6969
},
7070
"devDependencies": {
7171
"@types/glob": "^7.1.4",
@@ -120,6 +120,7 @@
120120
"postgresql",
121121
"redshift",
122122
"spark",
123+
"sqlite",
123124
"tsql"
124125
],
125126
"default": "sql",
@@ -141,17 +142,22 @@
141142
"default": true,
142143
"markdownDescription": "Override for `insertSpaces` if `#Prettier-SQL.ignoreTabSettings#` is active"
143144
},
144-
"Prettier-SQL.uppercaseKeywords": {
145-
"type": "boolean",
146-
"default": true,
147-
"markdownDescription": "Whether to print keywords in ALL CAPS or lowercase"
145+
"Prettier-SQL.keywordCase": {
146+
"type": "string",
147+
"enum": [
148+
"preserve",
149+
"upper",
150+
"lower"
151+
],
152+
"default": "preserve",
153+
"markdownDescription": "Whether to print keywords in ALL CAPS, lowercase, or preserve existing"
148154
},
149-
"Prettier-SQL.keywordPosition": {
155+
"Prettier-SQL.indentStyle": {
150156
"type": "string",
151157
"enum": [
152158
"standard",
153-
"tenSpaceLeft",
154-
"tenSpaceRight"
159+
"tabularLeft",
160+
"tabularRight"
155161
],
156162
"enumDescriptions": [
157163
"Standard SQL format, with cascading indents",
@@ -161,19 +167,25 @@
161167
"default": "standard",
162168
"markdownDescription": "Where to place keywords"
163169
},
164-
"Prettier-SQL.breakBeforeBooleanOperator": {
165-
"type": "boolean",
166-
"default": false,
170+
"Prettier-SQL.logicalOperatorNewline": {
171+
"type": "string",
172+
"enum": [
173+
"before",
174+
"after"
175+
],
176+
"default": "before",
167177
"markdownDescription": "Whether to break before or after AND and OR"
168178
},
169179
"Prettier-SQL.aliasAS": {
170180
"type": "string",
171181
"enum": [
182+
"preserve",
172183
"always",
173184
"select",
174185
"never"
175186
],
176187
"enumDescriptions": [
188+
"Preserve existing AS usage",
177189
"Use AS in SELECT clauses and for tables",
178190
"Use AS only in SELECT clauses",
179191
"Do not use AS for aliases"
@@ -201,41 +213,17 @@
201213
"default": "after",
202214
"markdownDescription": "Where to place commas for SELECT and GROUP BY clauses"
203215
},
204-
"Prettier-SQL.keywordNewline.newlineMode": {
205-
"type": "string",
206-
"enum": [
207-
"always",
208-
"lineWidth",
209-
"itemCount",
210-
"never"
211-
],
212-
"markdownEnumDescriptions": [
213-
"Always break keywords items onto a newline",
214-
"Break onto newline when line width > `#Prettier-SQL.lineWidth#` ",
215-
"Break onto newline when item count > `#Prettier-SQL.itemCount#` ",
216-
"Place all selected columns on the same line as keyword"
217-
],
218-
"minimum": 1,
219-
"default": "always",
220-
"markdownDescription": "Rule for when to break keyword clauses onto a newline"
221-
},
222-
"Prettier-SQL.keywordNewline.itemCount": {
223-
"type": "number",
224-
"minimum": 1,
225-
"default": 3,
226-
"markdownDescription": "Breaks keywords clauses onto newline after n items when `#Prettier-SQL.keywordNewline#` is set to itemCount"
227-
},
228-
"Prettier-SQL.parenOptions.openParenNewline": {
216+
"Prettier-SQL.parenOptions.newlineBeforeOpenParen": {
229217
"type": "boolean",
230218
"default": false,
231219
"markdownDescription": "Place (, Open Paren, CASE on newline when creating a new block"
232220
},
233-
"Prettier-SQL.parenOptions.closeParenNewline": {
221+
"Prettier-SQL.parenOptions.newlineBeforeCloseParen": {
234222
"type": "boolean",
235223
"default": true,
236224
"markdownDescription": "Place ), Close Paren, END on newline when closing a block"
237225
},
238-
"Prettier-SQL.lineWidth": {
226+
"Prettier-SQL.expressionWidth": {
239227
"type": "integer",
240228
"default": 50,
241229
"minimum": 0,
@@ -252,7 +240,7 @@
252240
"default": false,
253241
"markdownDescription": "Strip whitespace around operators such as + or >="
254242
},
255-
"Prettier-SQL.semicolonNewline": {
243+
"Prettier-SQL.newlineBeforeSemicolon": {
256244
"type": "boolean",
257245
"default": false,
258246
"markdownDescription": "Whether to place semicolon on its own line or on previous line"

vscode/src/extension.ts

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import * as vscode from 'vscode';
2-
import { format } from 'prettier-sql';
2+
import { format } from 'sql-formatter';
33
import type {
4+
SqlLanguage,
5+
KeywordCase,
6+
IndentStyle,
47
AliasMode,
58
CommaPosition,
6-
FormatterLanguage,
7-
KeywordMode,
8-
NewlineMode,
9-
} from 'prettier-sql';
9+
LogicalOperatorNewline,
10+
} from 'sql-formatter';
1011

1112
const getConfigs = (
1213
settings: vscode.WorkspaceConfiguration,
1314
formattingOptions: vscode.FormattingOptions | { tabSize: number; insertSpaces: boolean },
14-
language: FormatterLanguage
15+
language: SqlLanguage
1516
) => {
1617
const ignoreTabSettings = settings.get<boolean>('ignoreTabSettings');
1718
const { tabSize, insertSpaces } = ignoreTabSettings // override tab settings if ignoreTabSettings is true
@@ -26,34 +27,28 @@ const getConfigs = (
2627
const formatConfigs = {
2728
language:
2829
language === 'sql' // override default SQL language mode if SQLFlavourOverride is set
29-
? settings.get<FormatterLanguage>('SQLFlavourOverride') ?? 'sql'
30+
? settings.get<SqlLanguage>('SQLFlavourOverride') ?? 'sql'
3031
: language,
3132
indent,
32-
uppercase: settings.get<boolean>('uppercaseKeywords'),
33-
keywordPosition: settings.get<KeywordMode>('keywordPosition'),
34-
breakBeforeBooleanOperator: settings.get<boolean>('breakBeforeBooleanOperator'),
33+
keywordCase: settings.get<KeywordCase>('keywordCase'),
34+
indentStyle: settings.get<IndentStyle>('indentStyle'),
35+
logicalOperatorNewline: settings.get<LogicalOperatorNewline>('logicalOperatorNewline'),
3536
aliasAs: settings.get<AliasMode>('aliasAS'),
3637
tabulateAlias: settings.get<boolean>('tabulateAlias'),
3738
commaPosition: settings.get<CommaPosition>('commaPosition'),
38-
newline: (newlineSetting =>
39-
newlineSetting === 'itemCount'
40-
? settings.get<number>('itemCount') // pass itemCount number if keywordNewline is itemCount mode
41-
: (newlineSetting as NewlineMode))(settings.get<string>('keywordNewline')),
42-
parenOptions: {
43-
openParenNewline: settings.get<boolean>('parenOptions.openParenNewline'),
44-
closeParenNewline: settings.get<boolean>('parenOptions.closeParenNewline'),
45-
},
46-
lineWidth: settings.get<number>('lineWidth'),
39+
newlineBeforeOpenParen: settings.get<boolean>('newlineBeforeOpenParen'),
40+
newlineBeforeCloseParen: settings.get<boolean>('newlineBeforeCloseParen'),
41+
expressionWidth: settings.get<number>('expressionWidth'),
4742
linesBetweenQueries: settings.get<number>('linesBetweenQueries'),
4843
denseOperators: settings.get<boolean>('denseOperators'),
49-
semicolonNewline: settings.get<boolean>('semicolonNewline'),
44+
newlineBeforeSemicolon: settings.get<boolean>('newlineBeforeSemicolon'),
5045
};
5146

5247
return formatConfigs;
5348
};
5449

5550
export function activate(context: vscode.ExtensionContext) {
56-
const formatProvider = (language: FormatterLanguage) => ({
51+
const formatProvider = (language: SqlLanguage) => ({
5752
provideDocumentFormattingEdits(
5853
document: vscode.TextDocument,
5954
options: vscode.FormattingOptions
@@ -84,14 +79,15 @@ export function activate(context: vscode.ExtensionContext) {
8479
},
8580
});
8681

87-
const languages: { [lang: string]: FormatterLanguage } = {
82+
const languages: { [lang: string]: SqlLanguage } = {
8883
'sql': 'sql',
8984
'plsql': 'plsql',
9085
'mysql': 'mysql',
9186
'postgres': 'postgresql',
92-
'hql': 'sql',
93-
'hive-sql': 'sql',
87+
'hql': 'hive',
88+
'hive-sql': 'hive',
9489
'sql-bigquery': 'bigquery',
90+
'sqlite': 'sqlite',
9591
};
9692
// add Prettier-SQL as a format provider for each language
9793
Object.entries(languages).forEach(([vscodeLang, prettierLang]) =>

vscode/yarn.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,6 +1896,13 @@ slash@^3.0.0:
18961896
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
18971897
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
18981898

1899+
sql-formatter@^6.1.2:
1900+
version "6.1.2"
1901+
resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-6.1.2.tgz#78b05021c641020312a5f144ec313b38e7663258"
1902+
integrity sha512-09AiPmA6zDq82IBXOj5kN33VeAqaV92enkoonlhJge0fmfTESiYs3pwsntGKxa1C89xj/9MoHlNeqMmCr23BJw==
1903+
dependencies:
1904+
argparse "^2.0.1"
1905+
18991906
string-width@^1.0.1:
19001907
version "1.0.2"
19011908
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"

0 commit comments

Comments
 (0)