Skip to content

Commit 456737a

Browse files
committed
finishes hinter script, implements it
1 parent c3d0872 commit 456737a

File tree

6 files changed

+83
-244
lines changed

6 files changed

+83
-244
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,7 @@ export default function useCodeMirror({
143143
}, [autocloseBracketsQuotes]);
144144
useEffect(() => {
145145
const reconfigureEffect = (fileState) =>
146-
fileState.autocompleteCpt.reconfigure(
147-
autocompleteHinter ? autocompletion() : []
148-
);
146+
fileState.autocompleteCpt.reconfigure(true ? autocompletion() : []);
149147
updateFileStates({
150148
fileStates: fileStates.current,
151149
cmView: cmView.current,
@@ -172,7 +170,7 @@ export default function useCodeMirror({
172170
linewrap,
173171
lineNumbers,
174172
autocloseBracketsQuotes,
175-
autocomplete: autocompleteHinter,
173+
autocomplete: true,
176174
onUpdateLinting,
177175
onViewUpdate
178176
}

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

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,43 @@
11
import { LanguageSupport } from '@codemirror/language';
22
import { javascript } from '@codemirror/lang-javascript';
3+
import { p5Hinter } from '../../../../utils/p5-hinter-cm6';
34

45
function testCompletions(context) {
56
const word = context.matchBefore(/\w*/);
67
if (word.from === word.to && !context.explicit) return null;
78

9+
function addDomNodeInfo(item) {
10+
const itemCopy = { ...item };
11+
12+
if (item.p5DocPath) {
13+
itemCopy.info = () => {
14+
const domNode = document.createElement('a');
15+
domNode.href = `https://p5js.org/reference/p5/${item.p5DocPath}`;
16+
domNode.role = 'link';
17+
domNode.target = '_blank';
18+
domNode.onclick = (event) => event.stopPropagation();
19+
domNode.innerHTML = `
20+
<span class="hint-hidden">open ${item.label} reference</span>
21+
<span aria-hidden="true">&#10132;</span>
22+
`;
23+
return {
24+
dom: domNode,
25+
destroy: () => {
26+
// Cleanup logic if needed
27+
domNode.remove();
28+
}
29+
};
30+
};
31+
}
32+
33+
return itemCopy;
34+
}
35+
36+
const hinterWithDomNodes = p5Hinter.map(addDomNodeInfo);
37+
838
return {
939
from: word.from,
10-
options: [
11-
{ label: 'connie', type: 'keyword' },
12-
{ label: 'rachel', type: 'variable', info: '(World)' },
13-
{ label: 'claire', type: 'text', apply: '⠁⭒*.✩.*⭒⠁', detail: 'macro' }
14-
]
40+
options: hinterWithDomNodes
1541
};
1642
}
1743

client/utils/p5-hinter-cm6.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/utils/p5-hinter.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/scripts/update-p5-hinter-cm6.js

Lines changed: 0 additions & 163 deletions
This file was deleted.

0 commit comments

Comments
 (0)