Students who are trying to learn Nim complain that Emacs modes for Nim do not
work flawlessly, and are huge. These students tried nimrod-mode and nim-mode.
Here are a small sample of the problems that they encountered:
1 -- nimrod-mode does not highlight multiline comments.
2 -- nim-mode often fails in performing indentation. For instance, in the
listing below, if I place the cursor in front of the for loop colon and press
<Enter>, the part of the text that is after the colon goes to the beginning of
the line:
proc fib(n: int): int =
var (r1, r2) = (1, 1)
for i in 2..n: (r1,r2) = (r1+r2, r1)
result= r1
Run
The result of pressing <Enter> after the for-loop colon is shown below:
proc fib(n: int): int =
var (r1, r2) = (1, 1)
for i in 2..n:
(r1,r2) = (r1+r2, r1)
result= r1
Run
Interesting enough, indentation works in the absence of parenthesis. In the
following list, if I press <Enter> after the colon, nim-mode indents correctly.
proc fb(n: int): int =
if n<2: result=1
elif n<3:
result=n
else:
result= fb(n-3)+fb(n-2)+fb(n-2)
Run
Here is the result:
proc fb(n: int): int =
if n<2:
result=1
elif n<3:
result=n
else:
result= fb(n-3)+fb(n-2)+fb(n-2)
Run
By the way, python-mode performs the indentation without a flinch:
def fib(n):
(r1, r2) = (1, 1)
for i in range(1,n+1):(r1,r2) = (r1+r2, r1)
return r1
Run
Here is the result of pressing <Enter> :
def fib(n):
(r1, r2) = (1, 1)
for i in range(1,n+1):
(r1,r2) = (r1+r2, r1)
return r1
Run
Since the nim-mode program is huge, the students were not able to fix the bugs
that they find now and then. Therefore, they switched to lem. If somebody
publishes a small program that performs highlighting and indentation correctly
in Emacs, it will be easy to make the transition from lem back to Emacs, since
the two editors are very similar.