Skip to content

Commit 91af0ae

Browse files
committed
Merge branch 'dev'
2 parents 808866a + b7f14c8 commit 91af0ae

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "Calva: Clojure & Clojurescript Interactive Programming",
44
"description": "Integrated REPL, formatter, Paredit, and more. Powered by nREPL.",
55
"icon": "assets/calva.png",
6-
"version": "2.0.45",
6+
"version": "2.0.46",
77
"publisher": "betterthantomorrow",
88
"author": {
99
"name": "Better Than Tomorrow",

src/calva-fmt/src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as vscode from 'vscode';
33
function readConfiguration() {
44
let workspaceConfig = vscode.workspace.getConfiguration("calva.fmt");
55
return {
6-
"format-as-you-type": workspaceConfig.get("formatAsYouType"),
6+
"format-as-you-type": workspaceConfig.get("formatAsYouType") as boolean,
77
"indentation?": workspaceConfig.get("indentation"),
88
"remove-surrounding-whitespace?": workspaceConfig.get("removeSurroundingWhitespace"),
99
"remove-trailing-whitespace?": workspaceConfig.get("removeTrailingWhitespace"),

src/calva-fmt/src/extension.ts

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,28 @@ import { RangeEditProvider } from './providers/range_formatter';
44
import * as formatter from './format';
55
import * as inferer from './infer';
66
import * as docmirror from "./docmirror"
7+
import * as config from './config'
78

8-
const ClojureLanguageConfiguration: vscode.LanguageConfiguration = {
9-
wordPattern: /[^\s,#()[\]{};"\\]+/,
10-
onEnterRules: [
11-
// This is madness, but the only way to stop vscode from indenting new lines
12-
{
13-
beforeText: /.*/,
14-
action: {
15-
indentAction: vscode.IndentAction.Outdent,
16-
removeText: Number.MAX_VALUE
17-
}
18-
},
19-
]
9+
function getLanguageConfiguration(autoIndentOn: boolean): vscode.LanguageConfiguration {
10+
return {
11+
wordPattern: /[^\s,#()[\]{};"\\]+/,
12+
onEnterRules: autoIndentOn ? [
13+
// This is madness, but the only way to stop vscode from indenting new lines
14+
{
15+
beforeText: /.*/,
16+
action: {
17+
indentAction: vscode.IndentAction.Outdent,
18+
removeText: Number.MAX_VALUE
19+
}
20+
},
21+
] : []
22+
}
2023
}
2124

2225

23-
2426
export function activate(context: vscode.ExtensionContext) {
2527
docmirror.activate();
26-
vscode.languages.setLanguageConfiguration("clojure", ClojureLanguageConfiguration);
28+
vscode.languages.setLanguageConfiguration("clojure", getLanguageConfiguration(config.getConfig()["format-as-you-type"]));
2729
// this doesn't actually grow anything yet, but just jumps to the start of the enclosing expression.
2830
// context.subscriptions.push(vscode.commands.registerTextEditorCommand('calva-fmt.forwardSexp', docmirror.forwardSexp))
2931
// context.subscriptions.push(vscode.commands.registerTextEditorCommand('calva-fmt.backwardSexp', docmirror.backwardSexp))
@@ -41,4 +43,9 @@ export function activate(context: vscode.ExtensionContext) {
4143
context.subscriptions.push(vscode.languages.registerOnTypeFormattingEditProvider("clojure", new FormatOnTypeEditProvider, "\r", "\n"));
4244
context.subscriptions.push(vscode.languages.registerDocumentRangeFormattingEditProvider("clojure", new RangeEditProvider));
4345
vscode.window.onDidChangeActiveTextEditor(inferer.updateState);
46+
vscode.workspace.onDidChangeConfiguration(e => {
47+
if (e.affectsConfiguration("calva.fmt.formatAsYouType")) {
48+
vscode.languages.setLanguageConfiguration("clojure", getLanguageConfiguration(config.getConfig()["format-as-you-type"]));
49+
}
50+
})
4451
}

0 commit comments

Comments
 (0)