ChangeLog.
[erlware-mode.git] / test.erl
blobe666fec2f362de299e2020cbe9bb8c5c3264b407
1 %% This file contains Erlang code for testing the
2 %% Erlware emacs mode. It contains functions that
3 %% use different corner cases to make sure the mode
4 %% does the right thing.
5 %%
6 %% <<If comment-multi-line is on, Press Return to get another %% line>>
8 -module(test).
9 -compile(export_all).
11 func1() ->
12 % This line should stay here after a tab.
13 % If the comment-multi-line variable is non-nil, then pressing
14 % Return at end of this line shouldto get another % line.
15 ok.
17 func2() ->
18 % Pressing tabs on all lines should not change indents.
19 {0, $q},
20 {1, $(},
21 {2, $)},
22 {3, $>},
23 {4, $<},
24 {5, $,},
25 {6, ${},
26 [$% | ["should not be highlighted as a comment"]],
27 ok.
29 func3() ->
30 % If you edit the font lock mode to underline function names,
31 % there should not be an underline character after the '->'.
32 fun() -> ok end.
34 func4() ->
35 try
36 module:somefun(monkey, horse)
37 catch
38 % both these clauses should maintain their indents after tab presses
39 error:something ->
40 error;
41 error:function_clause ->
42 error
43 end.
45 func5(X)
46 when is_atom(X) ->
47 % `is_atom' should be highlighted as a guard above
49 % All functions below should be highlighted as functions, not
50 % as guards or bifs. So each entire function name should be
51 % highlighted in the same way.
52 f:is_atom(),
53 g:registered(),
54 h:my_registered(),
55 func6(),
56 deregistered(),
58 % atom_to_list and element should be highlighted as bifs
59 AppName = atom_to_list(element(1, AppSpec)),
61 % These should be highlighted as bifs.
62 erlang:registered(),
63 registered(),
64 hd(tl(tl(hd([a,b,c])))).
66 % `-spec' should be highlighted as an attribute, i.e. the same way as
67 % the `-define'
69 -define(foo,FOO).
70 -spec func6() -> any().
72 func6() ->
73 % These should be highlighted as atoms
74 'VaV',
75 'aVa',
76 '\'atom',
77 'atom\'',
78 'at\'om',
79 '#1',
80 % 3 lines below should be highlighted as literals
81 $a,
82 $A,
83 $1,
84 % in line below, V should be highlited as a var
85 V = fun() -> hello end,
86 V(),
87 Mo = yVy,
88 Vv = v,
89 % in line below, Mo and Vv should be highlited as vars
90 Mo:Vv(),
91 % in line below, Mo as var, bla as func call
92 Mo:bla(),
93 % the ':' should no be highlighted
94 ets:insert(bla,{'$1',{'$2','$3'}}).
96 func7() ->
97 % should keep indentation on tab
98 try func1()
99 after
100 func7()
101 end.
103 func8() ->
104 % anatom should be highlighted as an atom, not a string
106 "string\$", anatom,
108 % N.B. A '$' at the end of a string must be escaped, or the
109 % highlighting will not work. This is of course a bug, but I don't
110 % know how to fix it and the workaround is simple.
112 % this comment should be highlighted as a comment
113 % following should be highlighted as a string, should indent on tab
114 "some $a string".
116 func9(Term, [${|T]) ->
117 % above should be highlighted correctly
118 % all function body lines should not indent further on tab
121 deregistered() ->