(add-to-list 'load-path (cke-site-lisp-file "slime"))

(require 'paredit)
(require 'slime)
(require 'info-look)
(require 'hyperclim)

(setq slime-fancy 'slime-fancy)
(slime-setup '(slime-fancy slime-tramp))

;; Make lambda look nicer
(defun pretty-lambdas ()
    (font-lock-add-keywords
     nil `(("\\<lambda\\>"
            (0 (progn (compose-region (match-beginning 0) (match-end 0)
                                      (make-char 'greek-iso8859-7 107))
                      nil))))))

(add-hook 'emacs-lisp-mode-hook 'pretty-lambdas)
(add-hook 'scheme-mode-hook 'pretty-lambdas)
(add-hook 'lisp-mode-hook 'pretty-lambdas)

(add-hook 'emacs-lisp-mode-hook #'eldoc-mode)

;;; Keybindings
;; M-\ was delete-horizontal-space
(define-key lisp-mode-shared-map [?\M-\\ ] #'(lambda () (interactive) (insert "lambda")))
(define-key lisp-mode-shared-map (kbd "C-c ;") #'comment-region)
(define-key paredit-mode-map (kbd "RET") nil)
(define-key lisp-mode-shared-map (kbd "RET") 'paredit-newline)

(define-key slime-repl-mode-map (kbd "M-RET") #'paredit-newline)

;; (define-key paredit-mode-map (kbd ")") #'paredit-close-parenthesis)
;; (define-key paredit-mode-map (kbd "M-)") #'paredit-close-parenthesis-and-newline)

(add-hook 'emacs-lisp-mode-hook #'paredit-mode)
(add-hook 'lisp-mode-hook #'paredit-mode)
(add-hook 'scheme-mode-hook #'paredit-mode)
(add-hook 'slime-repl-mode-hook #'paredit-mode)

(add-to-list 'auto-mode-alist '("\\.asd$" . lisp-mode))

(setq slime-net-coding-system 'utf-8-unix)

(info-lookup-add-help
 :mode 'lisp-mode
 :regexp "[^][()'\" \t\n]+"
 :ignore-case t
 :doc-spec '(("(ansicl)Symbol Index" nil nil nil)))

(info-lookup-add-help
 :mode 'slime-repl-mode
 :regexp "[^][()'\" \t\n]+"
 :ignore-case t
 :doc-spec '(("(ansicl)Symbol Index" nil nil nil)))