@jupyterlab/codemirror 4.0.0-alpha.2 → 4.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/codemirror-ipythongfm.d.ts +9 -3
- package/lib/codemirror-ipythongfm.js +52 -30
- package/lib/codemirror-ipythongfm.js.map +1 -1
- package/lib/commands.d.ts +13 -0
- package/lib/commands.js +32 -0
- package/lib/commands.js.map +1 -0
- package/lib/editor.d.ts +48 -279
- package/lib/editor.js +220 -818
- package/lib/editor.js.map +1 -1
- package/lib/extension.d.ts +236 -0
- package/lib/extension.js +687 -0
- package/lib/extension.js.map +1 -0
- package/lib/extensions/customStyle.d.ts +25 -0
- package/lib/extensions/customStyle.js +51 -0
- package/lib/extensions/customStyle.js.map +1 -0
- package/lib/extensions/index.d.ts +3 -0
- package/lib/extensions/index.js +8 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/rulers.d.ts +8 -0
- package/lib/extensions/rulers.js +85 -0
- package/lib/extensions/rulers.js.map +1 -0
- package/lib/extensions/ybinding.d.ts +125 -0
- package/lib/extensions/ybinding.js +213 -0
- package/lib/extensions/ybinding.js.map +1 -0
- package/lib/factory.d.ts +15 -5
- package/lib/factory.js +53 -24
- package/lib/factory.js.map +1 -1
- package/lib/index.d.ts +7 -19
- package/lib/index.js +7 -23
- package/lib/index.js.map +1 -1
- package/lib/language.d.ts +96 -0
- package/lib/language.js +1690 -0
- package/lib/language.js.map +1 -0
- package/lib/mimetype.d.ts +3 -0
- package/lib/mimetype.js +16 -5
- package/lib/mimetype.js.map +1 -1
- package/lib/searchprovider.d.ts +197 -0
- package/lib/searchprovider.js +550 -0
- package/lib/searchprovider.js.map +1 -0
- package/lib/theme.d.ts +57 -0
- package/lib/theme.js +194 -0
- package/lib/theme.js.map +1 -0
- package/lib/token.d.ts +375 -0
- package/lib/token.js +18 -0
- package/lib/token.js.map +1 -0
- package/package.json +45 -41
- package/src/codemirror-ipythongfm.ts +109 -0
- package/src/commands.ts +34 -0
- package/src/editor.ts +783 -0
- package/src/extension.ts +878 -0
- package/src/extensions/customStyle.ts +79 -0
- package/src/extensions/index.ts +8 -0
- package/src/extensions/rulers.ts +112 -0
- package/src/extensions/ybinding.ts +267 -0
- package/src/factory.ts +100 -0
- package/src/index.ts +17 -0
- package/src/language.ts +1729 -0
- package/src/mimetype.ts +54 -0
- package/src/searchprovider.ts +700 -0
- package/src/theme.ts +219 -0
- package/src/token.ts +436 -0
- package/src/typings.d.ts +13 -0
- package/style/base.css +22 -162
- package/style/index.css +1 -7
- package/style/index.js +1 -7
- package/lib/codemirror-ipython.d.ts +0 -2
- package/lib/codemirror-ipython.js +0 -30
- package/lib/codemirror-ipython.js.map +0 -1
- package/lib/mode.d.ts +0 -81
- package/lib/mode.js +0 -149
- package/lib/mode.js.map +0 -1
- package/lib/syntaxstatus.d.ts +0 -67
- package/lib/syntaxstatus.js +0 -140
- package/lib/syntaxstatus.js.map +0 -1
- package/lib/tokens.d.ts +0 -18
- package/lib/tokens.js +0 -9
- package/lib/tokens.js.map +0 -1
- package/typings/codemirror/codemirror.d.ts +0 -227
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/codemirror",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.20",
|
|
4
4
|
"description": "JupyterLab - CodeMirror Editor Provider",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -20,16 +20,15 @@
|
|
|
20
20
|
"lib": "lib/"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
|
-
"lib
|
|
24
|
-
"lib/*.js.map",
|
|
25
|
-
"lib/*.js",
|
|
23
|
+
"lib/**/*.{d.ts,js,js.map}",
|
|
26
24
|
"style/*.css",
|
|
27
25
|
"typings/codemirror/*.d.ts",
|
|
28
|
-
"style/index.js"
|
|
26
|
+
"style/index.js",
|
|
27
|
+
"src/**/*.{ts,tsx}"
|
|
29
28
|
],
|
|
30
29
|
"scripts": {
|
|
31
30
|
"build": "tsc -b",
|
|
32
|
-
"build:test": "tsc --build tsconfig.test.json",
|
|
31
|
+
"build:test": "lezer-generator test/foo.grammar -o test/foo.js && tsc --build tsconfig.test.json",
|
|
33
32
|
"clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
|
|
34
33
|
"docs": "typedoc src",
|
|
35
34
|
"test": "jest",
|
|
@@ -39,47 +38,52 @@
|
|
|
39
38
|
"watch": "tsc -b --watch"
|
|
40
39
|
},
|
|
41
40
|
"dependencies": {
|
|
42
|
-
"@
|
|
43
|
-
"@
|
|
44
|
-
"@
|
|
45
|
-
"@
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"codemirror": "
|
|
59
|
-
"
|
|
60
|
-
"
|
|
41
|
+
"@codemirror/autocomplete": "^6.4.0",
|
|
42
|
+
"@codemirror/commands": "^6.1.0",
|
|
43
|
+
"@codemirror/lang-cpp": "^6.0.0",
|
|
44
|
+
"@codemirror/lang-css": "^6.0.0",
|
|
45
|
+
"@codemirror/lang-html": "^6.4.0",
|
|
46
|
+
"@codemirror/lang-java": "^6.0.0",
|
|
47
|
+
"@codemirror/lang-javascript": "^6.1.0",
|
|
48
|
+
"@codemirror/lang-json": "^6.0.0",
|
|
49
|
+
"@codemirror/lang-markdown": "^6.0.0",
|
|
50
|
+
"@codemirror/lang-php": "^6.0.0",
|
|
51
|
+
"@codemirror/lang-python": "^6.1.0",
|
|
52
|
+
"@codemirror/lang-rust": "^6.0.0",
|
|
53
|
+
"@codemirror/lang-sql": "^6.3.0",
|
|
54
|
+
"@codemirror/lang-wast": "^6.0.0",
|
|
55
|
+
"@codemirror/lang-xml": "^6.0.0",
|
|
56
|
+
"@codemirror/language": "^6.4.0",
|
|
57
|
+
"@codemirror/legacy-modes": "^6.3.0",
|
|
58
|
+
"@codemirror/search": "^6.2.0",
|
|
59
|
+
"@codemirror/state": "^6.2.0",
|
|
60
|
+
"@codemirror/view": "^6.7.0",
|
|
61
|
+
"@jupyter/ydoc": "^0.3.1",
|
|
62
|
+
"@jupyterlab/codeeditor": "^4.0.0-alpha.20",
|
|
63
|
+
"@jupyterlab/coreutils": "^6.0.0-alpha.20",
|
|
64
|
+
"@jupyterlab/documentsearch": "^4.0.0-alpha.20",
|
|
65
|
+
"@jupyterlab/nbformat": "^4.0.0-alpha.20",
|
|
66
|
+
"@jupyterlab/translation": "^4.0.0-alpha.20",
|
|
67
|
+
"@lezer/common": "^1.0.0",
|
|
68
|
+
"@lezer/generator": "^1.0.0",
|
|
69
|
+
"@lezer/highlight": "^1.0.0",
|
|
70
|
+
"@lumino/coreutils": "^2.0.0-rc.0",
|
|
71
|
+
"@lumino/disposable": "^2.0.0-rc.0",
|
|
72
|
+
"@lumino/signaling": "^2.0.0-rc.0",
|
|
73
|
+
"yjs": "^13.5.40"
|
|
61
74
|
},
|
|
62
75
|
"devDependencies": {
|
|
63
|
-
"@jupyterlab/
|
|
64
|
-
"@
|
|
65
|
-
"@
|
|
66
|
-
"jest": "^
|
|
76
|
+
"@jupyterlab/testing": "^4.0.0-alpha.20",
|
|
77
|
+
"@lezer/generator": "^1.0.0",
|
|
78
|
+
"@lezer/lr": "^1.0.0",
|
|
79
|
+
"@types/jest": "^29.2.0",
|
|
80
|
+
"jest": "^29.2.0",
|
|
67
81
|
"rimraf": "~3.0.0",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"typescript": "~4.5.2"
|
|
82
|
+
"typedoc": "~0.23.25",
|
|
83
|
+
"typescript": "~5.0.0-beta"
|
|
71
84
|
},
|
|
72
85
|
"publishConfig": {
|
|
73
86
|
"access": "public"
|
|
74
87
|
},
|
|
75
|
-
"jupyterlab": {
|
|
76
|
-
"extraStyles": {
|
|
77
|
-
"codemirror": [
|
|
78
|
-
"lib/codemirror.css",
|
|
79
|
-
"addon/dialog/dialog.css",
|
|
80
|
-
"addon/fold/foldgutter.css"
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
88
|
"styleModule": "style/index.js"
|
|
85
89
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
|
|
4
|
+
// TODO: add support for LaTeX
|
|
5
|
+
// This should be coded as an extension for https://github.com/lezer-parser/markdown
|
|
6
|
+
// see https://github.com/lezer-parser/markdown/blob/main/src/extension.ts for examples
|
|
7
|
+
// Then this extension can be passed to the markdown function above:
|
|
8
|
+
//
|
|
9
|
+
// load: () => {
|
|
10
|
+
// return import('@codemirror/lang-markdown').then(m => m.markdown({extensions: latex}));
|
|
11
|
+
// }
|
|
12
|
+
|
|
13
|
+
/*import CodeMirror from 'codemirror';
|
|
14
|
+
import 'codemirror/addon/mode/multiplex';
|
|
15
|
+
import 'codemirror/mode/gfm/gfm';
|
|
16
|
+
import 'codemirror/mode/stex/stex';
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Define an IPython GFM (GitHub Flavored Markdown) mode.
|
|
20
|
+
*
|
|
21
|
+
* Is just a slightly altered GFM Mode with support for LaTeX.
|
|
22
|
+
* LaTeX support was supported by Codemirror GFM as of
|
|
23
|
+
* https://github.com/codemirror/CodeMirror/pull/567
|
|
24
|
+
* But was later removed in
|
|
25
|
+
* https://github.com/codemirror/CodeMirror/commit/d9c9f1b1ffe984aee41307f3e927f80d1f23590c
|
|
26
|
+
*/
|
|
27
|
+
/*CodeMirror.defineMode(
|
|
28
|
+
'ipythongfm',
|
|
29
|
+
(config: CodeMirror.EditorConfiguration, modeOptions?: any) => {
|
|
30
|
+
const gfmMode = CodeMirror.getMode(config, {
|
|
31
|
+
name: 'gfm',
|
|
32
|
+
// Override list3 with an under-used token, rather than `keyword`
|
|
33
|
+
tokenTypeOverrides: { list3: 'string-2' }
|
|
34
|
+
});
|
|
35
|
+
const texMode = CodeMirror.getMode(config, {
|
|
36
|
+
name: 'stex',
|
|
37
|
+
inMathMode: true
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return CodeMirror.multiplexingMode(
|
|
41
|
+
gfmMode,
|
|
42
|
+
// force parsing inline code and code blocks with gfmMode to prevent
|
|
43
|
+
// parsing them as tex see:
|
|
44
|
+
// https://github.com/jupyterlab/jupyterlab/issues/6774
|
|
45
|
+
{
|
|
46
|
+
open: '<code>',
|
|
47
|
+
close: '</code>',
|
|
48
|
+
mode: gfmMode,
|
|
49
|
+
parseDelimiters: true
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
open: '<pre>',
|
|
53
|
+
close: '</pre>',
|
|
54
|
+
mode: gfmMode,
|
|
55
|
+
parseDelimiters: true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
open: '```',
|
|
59
|
+
close: '```',
|
|
60
|
+
mode: gfmMode,
|
|
61
|
+
parseDelimiters: true
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
open: '`',
|
|
65
|
+
close: '`',
|
|
66
|
+
mode: gfmMode,
|
|
67
|
+
parseDelimiters: true
|
|
68
|
+
},
|
|
69
|
+
// only if we did not match a code element or block,
|
|
70
|
+
// then try do parse using the tex mode
|
|
71
|
+
{
|
|
72
|
+
open: '$$',
|
|
73
|
+
close: '$$',
|
|
74
|
+
mode: texMode,
|
|
75
|
+
delimStyle: 'delimit'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
// `$math mode$` is only matched if both opening
|
|
79
|
+
// and closing $ are in the same line
|
|
80
|
+
open: /\$(?=.*\$)/,
|
|
81
|
+
close: '$',
|
|
82
|
+
mode: texMode,
|
|
83
|
+
delimStyle: 'delimit'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
open: '\\(',
|
|
87
|
+
close: '\\)',
|
|
88
|
+
mode: texMode,
|
|
89
|
+
delimStyle: 'delimit'
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
open: '\\[',
|
|
93
|
+
close: '\\]',
|
|
94
|
+
mode: texMode,
|
|
95
|
+
delimStyle: 'delimit'
|
|
96
|
+
}
|
|
97
|
+
// .. more multiplexed styles can follow here
|
|
98
|
+
);
|
|
99
|
+
},
|
|
100
|
+
'gfm'
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
CodeMirror.defineMIME('text/x-ipythongfm', 'ipythongfm');
|
|
104
|
+
CodeMirror.modeInfo.push({
|
|
105
|
+
ext: [],
|
|
106
|
+
mime: 'text/x-ipythongfm',
|
|
107
|
+
mode: 'ipythongfm',
|
|
108
|
+
name: 'ipythongfm'
|
|
109
|
+
});*/
|
package/src/commands.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Jupyter Development Team.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { indentMore, insertTab } from '@codemirror/commands';
|
|
7
|
+
import { EditorState, Transaction } from '@codemirror/state';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* CodeMirror commands namespace
|
|
11
|
+
*/
|
|
12
|
+
export namespace StateCommands {
|
|
13
|
+
/**
|
|
14
|
+
* Indent or insert a tab as appropriate.
|
|
15
|
+
*/
|
|
16
|
+
export function indentMoreOrInsertTab(target: {
|
|
17
|
+
state: EditorState;
|
|
18
|
+
dispatch: (transaction: Transaction) => void;
|
|
19
|
+
}): boolean {
|
|
20
|
+
const arg = { state: target.state, dispatch: target.dispatch };
|
|
21
|
+
const from = target.state.selection.main.from;
|
|
22
|
+
const to = target.state.selection.main.to;
|
|
23
|
+
if (from != to) {
|
|
24
|
+
return indentMore(arg);
|
|
25
|
+
}
|
|
26
|
+
const line = target.state.doc.lineAt(from);
|
|
27
|
+
const before = target.state.doc.slice(line.from, from).toString();
|
|
28
|
+
if (/^\s*$/.test(before)) {
|
|
29
|
+
return indentMore(arg);
|
|
30
|
+
} else {
|
|
31
|
+
return insertTab(arg);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|