Merge pull request #347 from JamesB7/master
[mono.git] / mcs / mcs / repl.txt
1 Things to do for the REPL support in MCS:
2
3 Documentation for the REPL mode for MCS can be found here:
4
5               http://mono-project.com/CsharpRepl
6
7 * Embedding API
8
9         * Booting the compiler without Main ()
10         * Expose LoadAssembly/LoadPackage
11         * Register fields?
12         * Register a lookup function for fields?
13         * Register classes to expose to REPL
14
15 * Embedded Library
16
17         * Run a REPL on a socket (from Joe Shaw)
18         * Host a REPL on XSP (from Nat).
19
20 * TODO
21
22         Clear struct fields inside the clearing code.
23
24 * Other ideas:
25
26         MD addin for "csharp"
27
28 * Supporting class-level declarations
29
30         Currently the evaluator has this feature disabled, to enable
31         it edit the eval.cs file and make this be the default:
32
33 -                               parser.Lexer.putback_char = Tokenizer.EvalUsingDeclarationsParserCharacter;
34 -                               //parser.Lexer.putback_char = Tokenizer.EvalCompilationUnitParserCharacter;
35 +                               //parser.Lexer.putback_char = Tokenizer.EvalUsingDeclarationsParserCharacter;
36 +                               parser.Lexer.putback_char = Tokenizer.EvalCompilationUnitParserCharacter;
37
38         
39         It currently has a few problems:
40
41         * The usability is not as useful, since the defaults
42           for C# are still to make members private, we should
43           change this default to be public in those cases.
44
45 * Clearing data
46
47         TODO: when clearing data for variables that have been overwritten
48         we need to check for structs and clear all the fields that contain
49         reference types.
50
51 * DEBATABLE: Implement auto-insert-semicolon
52
53         This is easy to implement, just retry the parse with a
54         semicolon, the question is whether this is a good idea to do
55         in the first place or not.
56
57 Completion support
58 ==================
59
60         Supported:
61         
62                 a.<TAB> to complete members of type `a'
63                 a<TAB> for types and namespaces
64                 a.W<TAB>
65                 a<TAB> for local variables
66
67         Unsupported:
68         
69                 delegate { FOO.<TAB>
70                 using statement autocompletion