Skip to content

Commit bbfbe8d

Browse files
committed
Add support for haml and slim
Fixes zignd#141
1 parent f6bdfa0 commit bbfbe8d

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

package.json

+11-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,17 @@
6262
"markdown",
6363
"erb",
6464
"ejs",
65-
"svelte"
65+
"svelte",
66+
"haml",
67+
"slim"
68+
]
69+
},
70+
"html-css-class-completion.HAMLLanguages": {
71+
"type": "array",
72+
"description": "A list of HAML based languages where suggestions are enabled.",
73+
"default": [
74+
"haml",
75+
"slim"
6676
]
6777
},
6878
"html-css-class-completion.CSSLanguages": {

src/extension.ts

+16
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ enum Configuration {
2121
ExcludeGlobPattern = "html-css-class-completion.excludeGlobPattern",
2222
EnableEmmetSupport = "html-css-class-completion.enableEmmetSupport",
2323
HTMLLanguages = "html-css-class-completion.HTMLLanguages",
24+
HAMLLanguages = "html-css-class-completion.HAMLLanguages",
2425
CSSLanguages = "html-css-class-completion.CSSLanguages",
2526
JavaScriptLanguages = "html-css-class-completion.JavaScriptLanguages",
2627
}
@@ -33,6 +34,7 @@ const completionTriggerChars = ['"', "'", " ", "."];
3334
let caching = false;
3435

3536
const htmlDisposables: Disposable[] = [];
37+
const hamlDisposables: Disposable[] = [];
3638
const cssDisposables: Disposable[] = [];
3739
const javaScriptDisposables: Disposable[] = [];
3840
const emmetDisposables: Disposable[] = [];
@@ -144,6 +146,13 @@ const registerHTMLProviders = (disposables: Disposable[]) =>
144146
disposables.push(registerCompletionProvider(extension, /class=["|']([\w- ]*$)/));
145147
});
146148

149+
const registerHAMLProviders = (disposables: Disposable[]) =>
150+
workspace.getConfiguration()
151+
?.get<string[]>(Configuration.HAMLLanguages)
152+
?.forEach((extension) => {
153+
disposables.push(registerCompletionProvider(extension, /(?=\.)([\w-. ]*$)/, "", "."));
154+
});
155+
147156
const registerCSSProviders = (disposables: Disposable[]) =>
148157
workspace.getConfiguration()
149158
.get<string[]>(Configuration.CSSLanguages)
@@ -207,6 +216,11 @@ export async function activate(context: ExtensionContext): Promise<void> {
207216
registerHTMLProviders(htmlDisposables);
208217
}
209218

219+
if (e.affectsConfiguration(Configuration.HAMLLanguages)) {
220+
unregisterProviders(hamlDisposables);
221+
registerHAMLProviders(hamlDisposables);
222+
}
223+
210224
if (e.affectsConfiguration(Configuration.CSSLanguages)) {
211225
unregisterProviders(cssDisposables);
212226
registerCSSProviders(cssDisposables);
@@ -246,6 +260,7 @@ export async function activate(context: ExtensionContext): Promise<void> {
246260
}
247261

248262
registerHTMLProviders(htmlDisposables);
263+
registerHAMLProviders(hamlDisposables);
249264
registerCSSProviders(cssDisposables);
250265
registerJavaScriptProviders(javaScriptDisposables);
251266

@@ -263,6 +278,7 @@ export async function activate(context: ExtensionContext): Promise<void> {
263278

264279
export function deactivate(): void {
265280
unregisterProviders(htmlDisposables);
281+
unregisterProviders(hamlDisposables);
266282
unregisterProviders(cssDisposables);
267283
unregisterProviders(javaScriptDisposables);
268284
unregisterProviders(emmetDisposables);

0 commit comments

Comments
 (0)