;; Easymacs sets some common Windows key bindings like ctrl-c to copy, ctrl-s to save, etc.
(load "c:/Otech/programs/easymacs/easymacs.el")

(defun init-streamfocus ()
(interactive)

;; Slime is for starting or connecting to SBCL
;; To start: C-x slime RET
(add-to-list 'load-path "c:/Otech/sf/lib/slime")

;;(setq inferior-lisp-program "C:/Otech/programs/sbcl-1.0.9/sbcl")

;(setq inferior-lisp-program "C:/Program Files/LispWorks/lispworks-4450")

(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
;; (defun lw-start ()
;; (interactive)
;; (shell-command (concat "C:/Program Files/LispWorks/lispworks-4450.exe -multiprocessing "
;;	"-init c:/Otech/swank.lisp&")))

;;;For SBCL on Windows
;(setq inferior-lisp-program "sbcl")
;(add-to-list 'load-path "C:/Program Files/Steel Bank Common Lisp/1.0.22/sbcl.exe")

;;For Allegro on Windows
(setq inferior-lisp-program "allegro")
(add-to-list 'load-path "C:/Program Files/acl81/allegro.exe")

(require 'slime)
(slime-setup '(slime-fancy slime-banner))

;;allegro
(global-set-key "\C-cs" 'slime-selector)
(setq slime-complete-symbol-fancy t)
(setq slime-complete-symbol-function 'slime-fuzzy-complete-symbol)

(setq slime-multiprocessing t)
;; choose one of the below based on Express or non-Express usage
;(setq slime-lisp* "alisp.exe")
(setq slime-lisp "allegro.exe")

;;(setq *slime-lisp* "allegro-express.exe")
(setq *slime-port* 4005)

(global-set-key
[(f5)]
'(lambda ()
(interactive)
(shell-command
(format "%s +B +cm -L c:/.slime.lisp -- -p %s --ef %s &"
*slime-lisp* *slime-port*
slime-net-coding-system))
(delete-other-windows)
(while (not (ignore-errors (slime-connect "localhost" *slime-port*)))
(sleep-for 0.2))))

(let* ((cygwin-root "c:/cygwin")
(cygwin-bin (concat cygwin-root "/bin")))
;(setenv "HOME" (concat cygwin-root "/home/frederick"))
(setenv "PATH" (concat cygwin-bin ";" (getenv "PATH")))
(setq exec-path (cons cygwin-bin exec-path)))
(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")

(push ".fasl" completion-ignored-extensions)
(push ".git" completion-ignored-extensions)

;;--------------------------------------

;;;; For remote slime
;; see http://a1k0n.net/blah/archives/2005/11/04/T18_00_44/index.ht...
(require 'tramp)
(defvar cayenne-path "/sshx:streamfocus@cayenne:")
(defvar current-tramp-path nil)

(defun slime-connect-to-host (path port)
(setq *current-tramp-path* path)
(setq slime-translate-from-lisp-filename-function
(lambda (f)
(if *current-tramp-path*
(concat *current-tramp-path* f)
f)))
(setq slime-translate-to-lisp-filename-function
(lambda (f)
(if *current-tramp-path*
(substring f (length *current-tramp-path*))
f)))
(slime-connect "localhost" port))

(defun cayenne-slime ()
(interactive)
(slime-connect-to-host *cayenne-path* 4006))

(defun cayenne-find-file ()
(interactive)
(find-file (concat *cayenne-path* "/home/streamfocus/sf/")))

;;;; TRAMP remote editing. See notes for NTEmacs on http://www.emacswiki.org/cgi-bin/wiki/TrampMode
(setq tramp-default-method "sshx")
;;;; SLIME settings to edit remote files on rembrandt
;(push (list "^cayenne$"
; (lambda (emacs-filename)
; (subseq emacs-filename (length "/cayenne:")))
; (lambda (lisp-filename)
; (concat "/cayenne:" lisp-filename)))
; slime-filename-translations)

;; http://www.emacswiki.org/cgi-bin/wiki/NTEmacsWithCygwin
(let* ((cygwin-root "c:/cygwin")
(cygwin-bin (concat cygwin-root "/bin")))
;(setenv "HOME" (concat cygwin-root "/home/fred"))
(setenv "PATH" (concat cygwin-bin ";" (getenv "PATH")))
(setq exec-path (cons cygwin-bin exec-path)))
(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")
)

(defun init-clojure ()
"Inits slime for streamfocus"
(interactive)
;; clojure-mode
(add-to-list 'load-path "C:/Otech/programs/clojure/clojure-mode")
(require 'clojure-mode)

;; swank-clojure
(add-to-list 'load-path "C:/Otech/programs/clojure/swank-clojure")
(require 'swank-clojure-autoload)
;(swank-clojure-config
(setq swank-clojure-jar-path "C:/Otech/programs/clojure/clojure/clojure.jar")

(setq swank-clojure-extra-classpaths
(list "C:/Otech/programs/clojure/clojure-contrib/clojure-contrib.jar"))
;)

;; slime
(eval-after-load "slime"
'(progn (slime-setup '(slime-repl))))

(add-to-list 'load-path "C:/Otech/programs/clojure/slime")
(require 'slime)
(slime-setup) ;;;type alt-x and slime to start repl
)