(defparameter *threads* '())
;; SWANK
-(load "~/.stumpwm.d/swank-init.lisp")
+;; (load "~/.stumpwm.d/swank-init.lisp")
+
+;; SLYNK
+(load "~/.stumpwm.d/slynk-init.lisp")
;; FUNCTIONS
(load "~/.stumpwm.d/functions.lisp")
(undefine-key *root-map* (kbd "C-m"))
(define-key *top-map* (kbd "s-l") "exec xscreensaver-command --activate")
-(define-key *top-map* (kbd "s-s") "toggle-swank")
+(define-key *top-map* (kbd "s-s") "toggle-slynk")
(define-key *root-map* (kbd "\-") "vsplit")
(define-key *root-map* (kbd "\\") "hsplit")
--- /dev/null
+(require :slynk)
+(slynk-loader:init)
+
+(defparameter *port-number* 4004)
+
+(defvar *slynk-server-p* nil)
+
+(defcommand start-slynk () ()
+ (if *slynk-server-p*
+ (message "Slynk server is already active on Port^5 ~a^n" *port-number*)
+ (progn
+ (slynk:create-server :port *port-number*
+ :dont-close t)
+ (setf *slynk-server-p* t)
+ (message "Slynk server is now active on Port^5 ~a^n.
+Use^4 M-x sly-connect^n in Emacs.
+Type^2 (in-package :stumpwm)^n in Sly REPL." *port-number*))))
+
+(defcommand stop-slynk () ()
+ "Stop Slynk"
+ (slynk:stop-server *port-number*)
+ (setf *slynk-server-p* nil)
+ (message "Stopping Slynk Server! Closing Port^5 ~a^n." *port-number*))
+
+(defcommand toggle-slynk () ()
+ (if *slynk-server-p*
+ (run-commands "stop-slynk")
+ (run-commands "start-slynk")))
+
+;;modeline status
+(defun get-slynk-status ()
+ (if *slynk-server-p*
+ (setf *slynk-ml-status* (format nil "Slynk:^2 ~a^n | " *port-number*))
+ (setf *slynk-ml-status* "Slynk: off | ")))
+
+(defun ml-fmt-slynk-status (ml)
+ (declare (ignore ml))
+ (get-slynk-status))
+
+(add-screen-mode-line-formatter #\S #'ml-fmt-slynk-status)