Skip to content

Commit 9cbbd8b

Browse files
committed
adds initial autocomplete
1 parent 4f358b4 commit 9cbbd8b

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

client/modules/IDE/components/Editor/codemirror.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useRef, useEffect } from 'react';
22
import { EditorView, lineNumbers as lineNumbersExt } from '@codemirror/view';
3-
import { closeBrackets } from '@codemirror/autocomplete';
3+
import { autocompletion, closeBrackets } from '@codemirror/autocomplete';
44

55
// TODO: Check what the v6 variants of these addons are.
66
// import 'codemirror/addon/search/searchcursor';
@@ -141,6 +141,18 @@ export default function useCodeMirror({
141141
reconfigureEffect
142142
});
143143
}, [autocloseBracketsQuotes]);
144+
useEffect(() => {
145+
const reconfigureEffect = (fileState) =>
146+
fileState.autocompleteCpt.reconfigure(
147+
autocompleteHinter ? autocompletion() : []
148+
);
149+
updateFileStates({
150+
fileStates: fileStates.current,
151+
cmView: cmView.current,
152+
file,
153+
reconfigureEffect
154+
});
155+
}, [autocompleteHinter]);
144156

145157
// Initializes the files as CodeMirror states.
146158
function initializeDocuments() {
@@ -160,6 +172,7 @@ export default function useCodeMirror({
160172
linewrap,
161173
lineNumbers,
162174
autocloseBracketsQuotes,
175+
autocomplete: autocompleteHinter,
163176
onUpdateLinting,
164177
onViewUpdate
165178
}

client/modules/IDE/components/Editor/stateUtils.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ import {
2121
defaultHighlightStyle
2222
} from '@codemirror/language';
2323
import { highlightSelectionMatches } from '@codemirror/search';
24-
import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
24+
import {
25+
autocompletion,
26+
closeBrackets,
27+
closeBracketsKeymap
28+
} from '@codemirror/autocomplete';
2529
import {
2630
defaultKeymap,
2731
history,
@@ -265,13 +269,15 @@ export function createNewFileState(filename, document, settings) {
265269
const {
266270
linewrap,
267271
lineNumbers,
272+
autocomplete,
268273
autocloseBracketsQuotes,
269274
onUpdateLinting,
270275
onViewUpdate
271276
} = settings;
272277
const lineNumbersCpt = new Compartment();
273278
const lineWrappingCpt = new Compartment();
274279
const closeBracketsCpt = new Compartment();
280+
const autocompleteCpt = new Compartment();
275281

276282
// Depending on the file mode, we have a different tidier function.
277283
const mode = getFileMode(filename);
@@ -294,6 +300,7 @@ export function createNewFileState(filename, document, settings) {
294300
lineNumbersCpt.of(lineNumbers ? lineNumbersExt() : []),
295301
lineWrappingCpt.of(linewrap ? EditorView.lineWrapping : []),
296302
closeBracketsCpt.of(autocloseBracketsQuotes ? closeBrackets() : []),
303+
autocompleteCpt.of(autocomplete ? autocompletion() : []),
297304

298305
// Everything below here should always be on.
299306
history(),
@@ -352,7 +359,13 @@ export function createNewFileState(filename, document, settings) {
352359
}
353360

354361
const cmState = EditorState.create(stateOptions);
355-
return { cmState, lineNumbersCpt, lineWrappingCpt, closeBracketsCpt };
362+
return {
363+
cmState,
364+
lineNumbersCpt,
365+
lineWrappingCpt,
366+
closeBracketsCpt,
367+
autocompleteCpt
368+
};
356369
}
357370

358371
/**

0 commit comments

Comments
 (0)