Skip to content

Commit c785c20

Browse files
authored
get svelte.dev fully typechecked (#42)
1 parent 77de65f commit c785c20

File tree

8 files changed

+39
-1
lines changed

8 files changed

+39
-1
lines changed

apps/svelte.dev/src/routes/(authed)/repl/[id]/AppControls.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import type { Gist, User } from '$lib/db/types';
1212
1313
interface Props {
14-
user: User;
14+
user: User | null;
1515
repl: Repl;
1616
gist: Gist;
1717
name: string;

apps/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
showAst
7373
previewTheme={$theme.current}
7474
embedded
75+
vim={false}
7576
/>
7677
{/if}
7778
</div>

apps/svelte.dev/src/routes/_components/Example.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
relaxed
3333
showAst
3434
previewTheme={$theme.current}
35+
vim={false}
3536
/>
3637
{/if}
3738
</IntersectionObserver>

packages/repl/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"@lezer/highlight": "^1.2.0",
7171
"@neocodemirror/svelte": "^0.0.15",
7272
"@replit/codemirror-lang-svelte": "^6.0.0",
73+
"@replit/codemirror-vim": "^6.0.14",
7374
"@rich_harris/svelte-split-pane": "^1.1.3",
7475
"@rollup/browser": "^4.17.2",
7576
"@sveltejs/kit": "^2.0.0",

packages/repl/src/lib/CodeMirror.svelte

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
2222
export let readonly = false;
2323
export let tab = true;
24+
export let vim = false;
2425
2526
/** @type {ReturnType<typeof createEventDispatcher<{ change: { value: string } }>>} */
2627
const dispatch = createEventDispatcher();
@@ -174,6 +175,30 @@
174175
/** @type {import('@codemirror/state').Extension[]} */
175176
let extensions = [];
176177
178+
/**
179+
* update the extension if and when vim changes
180+
* @param {boolean} vimEnabled if vim it's included in the set of extensions
181+
*/
182+
async function getExtensions(vimEnabled) {
183+
let extensions = [watcher];
184+
if (vimEnabled) {
185+
const { vim } = await import('@replit/codemirror-vim').then((vimModule) => ({
186+
vim: vimModule.vim
187+
}));
188+
189+
extensions.unshift(
190+
vim({
191+
status: true
192+
})
193+
);
194+
}
195+
return extensions;
196+
}
197+
198+
$: getExtensions(vim).then((ext) => {
199+
extensions = ext;
200+
});
201+
177202
let cursor_pos = 0;
178203
179204
$: if ($cmInstance.view) {

packages/repl/src/lib/Input/ModuleEditor.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
/** @type {any[]} */ // TODO
99
export let warnings;
1010
11+
/** @type {boolean} */
12+
export let vim;
13+
1114
export function focus() {
1215
$module_editor?.focus();
1316
}
@@ -59,6 +62,7 @@
5962
6063
return [];
6164
}}
65+
{vim}
6266
on:change={handle_change}
6367
/>
6468
</div>

packages/repl/src/lib/Repl.svelte

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
export let showModified = false;
2929
export let showAst = false;
3030
export let autocomplete = true;
31+
/** @type {boolean} */
32+
export let vim;
3133
3234
let runes = false;
3335
@@ -352,6 +354,7 @@
352354
{autocomplete}
353355
error={compiled?.result.error}
354356
warnings={compiled?.result.warnings ?? []}
357+
{vim}
355358
/>
356359
</section>
357360

pnpm-lock.yaml

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

0 commit comments

Comments
 (0)