about summary refs log tree commit diff stats
path: root/chicken/csirc
blob: 0d222356623f58f740fa4defa8bff0a70b25507d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
;;; csirc --- initialization file for chicken scheme interpreter -*- scheme -*-
;; import ease-of-life stuff
(set! ##sys#notices-enabled #f)
(import (chicken load))
(load-verbose #f)

;;; Libraries for interactive development
;; see also https://www.upyum.com/en/post/7.xhtml
(import (live-define)
        (srfi 18))

;; chicken-doc
(require-library chicken-doc)

;; set up breadline
(let ()
  (import (chicken format))
  (import (chicken process-context))
  (import (chicken process signal))
  (unless (get-environment-variable "INSIDE_EMACS")
    (import breadline)
    (import breadline-scheme-completion)
    (history-file (format "~a/chicken/csi_history"
                          (or (get-environment-variable "XDG_DATA_HOME")
                              (format "~a/~a" (get-environment-variable "HOME")
                                      (".local/share")))))
    (stifle-history! 10000)
    (completer-word-break-characters-set! "\"'`;|(")
    (completer-set! scheme-completer)
    (basic-quote-characters-set! "\"|")
    (variable-bind! "blink-matching-paren" "on")
    (paren-blink-timeout-set! 200000)
    (let ((handler (signal-handler signal/int)))
      (set-signal-handler!
        signal/int
        (lambda (s)
          (cleanup-after-signal!)
          (reset-after-signal!)
          (handler s))))
    (on-exit reset-terminal!)
    (current-input-port (make-readline-port))))
(set! ##sys#notices-enabled #t)