Skip to content

Commit 2d56d22

Browse files
committed
Use new keyword highlighting rules
Closes #224
1 parent 4baadd7 commit 2d56d22

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

ui/frontend/AdvancedEditor.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class AdvancedEditor extends React.PureComponent<AdvancedEditorProps> {
5555
return (
5656
<AceEditor
5757
ref={this.trackEditor}
58-
mode="rust"
58+
mode="rust-playground"
5959
keyboardHandler={keybinding}
6060
theme={theme}
6161
value={code}
@@ -194,7 +194,7 @@ class AdvancedEditorAsync extends React.Component<AdvancedEditorProps, AdvancedE
194194
this.setState({ AceEditor: AceEditor.default, ace });
195195

196196
this.load(props);
197-
const loadRustMode = import('brace/mode/rust');
197+
const loadRustMode = import('./rust-playground-mode');
198198
const loadLanguageTools = import('brace/ext/language_tools');
199199
Promise.all([loadRustMode, loadLanguageTools])
200200
.then(() => this.setState({ modeLoading: false }));

ui/frontend/rust-playground-mode.ts

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import ace from 'brace';
2+
import 'brace/mode/rust';
3+
4+
ace.define('ace/mode/rust-playground', function(require, exports, module) {
5+
const oop = require("ace/lib/oop");
6+
const { Mode: RustMode } = require("ace/mode/rust");
7+
const { RustPlaygroundHighlightRules } = require("ace/mode/rust_playground_highlight_rules");
8+
9+
const Mode = function() {
10+
this.HighlightRules = RustPlaygroundHighlightRules;
11+
};
12+
oop.inherits(Mode, RustMode);
13+
14+
(function() {
15+
// Extra logic goes here.
16+
}).call(Mode.prototype);
17+
18+
exports.Mode = Mode;
19+
});
20+
21+
ace.define('ace/mode/rust_playground_highlight_rules', function(require, exports, module) {
22+
const oop = require("ace/lib/oop");
23+
const { RustHighlightRules } = require('ace/mode/rust_highlight_rules');
24+
25+
const RustPlaygroundHighlightRules = function() {
26+
this.$rules = new RustHighlightRules().getRules();
27+
28+
// Overriding until the next release that adds the `dyn` token
29+
const rule = this.$rules.start.find(r => r.token === "keyword.source.rust");
30+
rule.regex = '\\b(?:abstract|alignof|as|become|box|break|catch|continue|const|crate|default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b';
31+
}
32+
33+
oop.inherits(RustPlaygroundHighlightRules, RustHighlightRules);
34+
35+
exports.RustPlaygroundHighlightRules = RustPlaygroundHighlightRules;
36+
});

0 commit comments

Comments
 (0)