53 |
|
|
54 |
(require 'lisp-mode) |
(require 'lisp-mode) |
55 |
|
|
56 |
(defvar scheme-mode-syntax-table nil) |
(defvar scheme-mode-syntax-table |
57 |
(if (not scheme-mode-syntax-table) |
(let ((st (make-syntax-table)) |
58 |
(let ((i 0)) |
(i 0)) |
59 |
(setq scheme-mode-syntax-table (make-syntax-table)) |
|
60 |
(set-syntax-table scheme-mode-syntax-table) |
;; Default is atom-constituent. |
61 |
|
(while (< i 256) |
62 |
;; Default is atom-constituent. |
(modify-syntax-entry i "_ " st) |
63 |
(while (< i 256) |
(setq i (1+ i))) |
64 |
(modify-syntax-entry i "_ ") |
|
65 |
(setq i (1+ i))) |
;; Word components. |
66 |
|
(setq i ?0) |
67 |
;; Word components. |
(while (<= i ?9) |
68 |
(setq i ?0) |
(modify-syntax-entry i "w " st) |
69 |
(while (<= i ?9) |
(setq i (1+ i))) |
70 |
(modify-syntax-entry i "w ") |
(setq i ?A) |
71 |
(setq i (1+ i))) |
(while (<= i ?Z) |
72 |
(setq i ?A) |
(modify-syntax-entry i "w " st) |
73 |
(while (<= i ?Z) |
(setq i (1+ i))) |
74 |
(modify-syntax-entry i "w ") |
(setq i ?a) |
75 |
(setq i (1+ i))) |
(while (<= i ?z) |
76 |
(setq i ?a) |
(modify-syntax-entry i "w " st) |
77 |
(while (<= i ?z) |
(setq i (1+ i))) |
78 |
(modify-syntax-entry i "w ") |
|
79 |
(setq i (1+ i))) |
;; Whitespace |
80 |
|
(modify-syntax-entry ?\t " " st) |
81 |
;; Whitespace |
(modify-syntax-entry ?\n "> " st) |
82 |
(modify-syntax-entry ?\t " ") |
(modify-syntax-entry ?\f " " st) |
83 |
(modify-syntax-entry ?\n "> ") |
(modify-syntax-entry ?\r " " st) |
84 |
(modify-syntax-entry ?\f " ") |
(modify-syntax-entry ? " " st) |
85 |
(modify-syntax-entry ?\r " ") |
|
86 |
(modify-syntax-entry ? " ") |
;; These characters are delimiters but otherwise undefined. |
87 |
|
;; Brackets and braces balance for editing convenience. |
88 |
;; These characters are delimiters but otherwise undefined. |
(modify-syntax-entry ?\[ "(] " st) |
89 |
;; Brackets and braces balance for editing convenience. |
(modify-syntax-entry ?\] ")[ " st) |
90 |
(modify-syntax-entry ?\[ "(] ") |
(modify-syntax-entry ?{ "(} " st) |
91 |
(modify-syntax-entry ?\] ")[ ") |
(modify-syntax-entry ?} "){ " st) |
92 |
(modify-syntax-entry ?{ "(} ") |
(modify-syntax-entry ?\| " 23" st) |
93 |
(modify-syntax-entry ?} "){ ") |
|
94 |
(modify-syntax-entry ?\| " 23") |
;; Other atom delimiters |
95 |
|
(modify-syntax-entry ?\( "() " st) |
96 |
;; Other atom delimiters |
(modify-syntax-entry ?\) ")( " st) |
97 |
(modify-syntax-entry ?\( "() ") |
(modify-syntax-entry ?\; "< " st) |
98 |
(modify-syntax-entry ?\) ")( ") |
(modify-syntax-entry ?\" "\" " st) |
99 |
(modify-syntax-entry ?\; "< ") |
(modify-syntax-entry ?' " p" st) |
100 |
(modify-syntax-entry ?\" "\" ") |
(modify-syntax-entry ?` " p" st) |
101 |
(modify-syntax-entry ?' " p") |
|
102 |
(modify-syntax-entry ?` " p") |
;; Special characters |
103 |
|
(modify-syntax-entry ?, "_ p" st) |
104 |
;; Special characters |
(modify-syntax-entry ?@ "_ p" st) |
105 |
(modify-syntax-entry ?, "_ p") |
(modify-syntax-entry ?# "_ p14" st) |
106 |
(modify-syntax-entry ?@ "_ p") |
(modify-syntax-entry ?\\ "\\ " st) |
107 |
(modify-syntax-entry ?# "_ p14") |
st)) |
|
(modify-syntax-entry ?\\ "\\ "))) |
|
108 |
|
|
109 |
(defvar scheme-mode-abbrev-table nil) |
(defvar scheme-mode-abbrev-table nil) |
110 |
(define-abbrev-table 'scheme-mode-abbrev-table ()) |
(define-abbrev-table 'scheme-mode-abbrev-table ()) |
166 |
'((scheme-font-lock-keywords |
'((scheme-font-lock-keywords |
167 |
scheme-font-lock-keywords-1 scheme-font-lock-keywords-2) |
scheme-font-lock-keywords-1 scheme-font-lock-keywords-2) |
168 |
nil t (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun |
nil t (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun |
169 |
(font-lock-mark-block-function . mark-defun)))) |
(font-lock-mark-block-function . mark-defun) |
170 |
|
(font-lock-syntactic-face-function . lisp-font-lock-syntactic-face-function)))) |
171 |
|
|
172 |
(defvar scheme-mode-line-process "") |
(defvar scheme-mode-line-process "") |
173 |
|
|
430 |
(parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) |
(parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) |
431 |
(if (and (elt state 2) |
(if (and (elt state 2) |
432 |
(not (looking-at "\\sw\\|\\s_"))) |
(not (looking-at "\\sw\\|\\s_"))) |
433 |
;; car of form doesn't seem to be a a symbol |
;; car of form doesn't seem to be a symbol |
434 |
(progn |
(progn |
435 |
(if (not (> (save-excursion (forward-line 1) (point)) |
(if (not (> (save-excursion (forward-line 1) (point)) |
436 |
calculate-lisp-indent-last-sexp)) |
calculate-lisp-indent-last-sexp)) |
502 |
(put 'let-syntax 'scheme-indent-function 1) |
(put 'let-syntax 'scheme-indent-function 1) |
503 |
(put 'letrec-syntax 'scheme-indent-function 1) |
(put 'letrec-syntax 'scheme-indent-function 1) |
504 |
(put 'syntax-rules 'scheme-indent-function 1) |
(put 'syntax-rules 'scheme-indent-function 1) |
505 |
|
(put 'syntax-case 'scheme-indent-function 2) ; not r5rs |
506 |
|
|
507 |
(put 'call-with-input-file 'scheme-indent-function 1) |
(put 'call-with-input-file 'scheme-indent-function 1) |
508 |
(put 'with-input-from-file 'scheme-indent-function 1) |
(put 'with-input-from-file 'scheme-indent-function 1) |