nendo 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/emacs/nendo-mode.el +84 -0
- data/lib/init.nnd +339 -228
- data/lib/init.nndc +8676 -0
- data/lib/nendo.rb +372 -110
- data/sample/exit.nnd +2 -0
- data/sample/fact.nnd +15 -0
- data/sample/fizzbuzz1.nnd +23 -0
- data/sample/scratch.nnd +11 -0
- data/sample/tak.nnd +13 -0
- metadata +11 -6
data/emacs/nendo-mode.el
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
;;
|
2
|
+
;; Nendo-mode for Emacs
|
3
|
+
;;
|
4
|
+
;; Copyright (c) 2010 Kiyoka Nishiyama
|
5
|
+
;;
|
6
|
+
;;
|
7
|
+
|
8
|
+
(require 'comint)
|
9
|
+
(require 'cmuscheme)
|
10
|
+
|
11
|
+
;; Custom Variables:
|
12
|
+
(defgroup nendo nil
|
13
|
+
"*Support for editing and evaluation nendo s-exparession."
|
14
|
+
:group 'scheme
|
15
|
+
:prefix "nendo-"
|
16
|
+
:link '(url-link "http://oldtype.sumibi.org/show-page/Nendo"))
|
17
|
+
|
18
|
+
|
19
|
+
(defvar nendo-result-buffer '())
|
20
|
+
|
21
|
+
(defun nendo-watch-for-eval-result (string)
|
22
|
+
(let ((lines
|
23
|
+
(split-string string "[\r\n]")))
|
24
|
+
(mapcar
|
25
|
+
(lambda (x)
|
26
|
+
(cond
|
27
|
+
((string= "nendo> " x)
|
28
|
+
(when (not (get-buffer-window-list "*scheme*" t t))
|
29
|
+
(message "%s" (mapconcat
|
30
|
+
(lambda (e) e)
|
31
|
+
(reverse nendo-result-buffer)
|
32
|
+
"\n"))
|
33
|
+
(setq nendo-result-buffer '())))
|
34
|
+
((< 0 (length x))
|
35
|
+
(push x nendo-result-buffer))
|
36
|
+
(t
|
37
|
+
nil)))
|
38
|
+
lines)))
|
39
|
+
|
40
|
+
|
41
|
+
(define-derived-mode nendo-mode scheme-mode "Nendo mode"
|
42
|
+
"Major mode for editing nendo code.
|
43
|
+
Editing commands are similar to those of 'scheme-mode'."
|
44
|
+
(make-local-variable 'scheme-buffer)
|
45
|
+
(local-set-key "\C-c\C-e" 'nendo-send-definition)
|
46
|
+
(local-set-key "\C-x\C-e" 'nendo-send-last-sexp))
|
47
|
+
|
48
|
+
(defun nendo-add-hooks ()
|
49
|
+
(when (get-buffer "*scheme*")
|
50
|
+
(with-current-buffer (get-buffer "*scheme*")
|
51
|
+
(add-hook 'comint-output-filter-functions 'nendo-watch-for-eval-result t t))))
|
52
|
+
|
53
|
+
(defun nendo-send-definition ()
|
54
|
+
"Send the current definition to the inferior Scheme process."
|
55
|
+
(interactive)
|
56
|
+
(nendo-add-hooks)
|
57
|
+
(scheme-send-definition))
|
58
|
+
|
59
|
+
(defun nendo-send-last-sexp ()
|
60
|
+
"Send the previous sexp to the inferior Scheme process."
|
61
|
+
(interactive)
|
62
|
+
(nendo-add-hooks)
|
63
|
+
(scheme-send-last-sexp))
|
64
|
+
|
65
|
+
;; for compatibility with Emacs 21
|
66
|
+
(unless (functionp 'read-directory-name)
|
67
|
+
(defun read-directory-name (prompt &optional dir default match init)
|
68
|
+
(let ((dir (cond (dir dir)
|
69
|
+
((not init) "")
|
70
|
+
(t default-directory))))
|
71
|
+
(read-file-name prompt dir
|
72
|
+
(or default (if (and init (not (string= init "")))
|
73
|
+
(expand-file-name init dir)
|
74
|
+
""))
|
75
|
+
match init))))
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
(provide 'nendo-mode)
|
80
|
+
|
81
|
+
;; Local variables:
|
82
|
+
;; mode: emacs-lisp
|
83
|
+
;; end:
|
84
|
+
|