зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-04 15:46:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			102 строки
		
	
	
		
			2.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			102 строки
		
	
	
		
			2.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
;;; basic load-path setup
 | 
						|
;;; ------------------------------------------------------------------
 | 
						|
 | 
						|
;(defun add-subdirs-to-load-path (dir)
 | 
						|
;  (let ((default-directory (concat dir "/"))) ; bind var locally
 | 
						|
;    (normal-top-level-add-subdirs-to-load-path)))
 | 
						|
 | 
						|
;(add-to-list 'load-path "~/.emacs.d/site-lisp")
 | 
						|
;(add-subdirs-to-load-path "~/.emacs.d/site-lisp")
 | 
						|
 | 
						|
;; slime
 | 
						|
(add-to-list 'load-path "~/.emacs.d/site-lisp/slime") ; slime | technomancy-slime ; contrib added automatically
 | 
						|
 | 
						|
(require 'slime)
 | 
						|
;(require 'slime-autoloads)
 | 
						|
 | 
						|
 | 
						|
(setq slime-protocol-version 'ignore) ; omit version missmatch warning
 | 
						|
 | 
						|
 | 
						|
(setq slime-lisp-implementations `(
 | 
						|
	(sbcl ("sbcl" "--sbcl-nolineedit"))
 | 
						|
))
 | 
						|
 | 
						|
(slime-setup
 | 
						|
	'(
 | 
						|
		slime-repl	; TODO: customize :bold face, but need to find another face for non-repl cfg
 | 
						|
		slime-fuzzy	; for fuzzy completions (including C-c M-i)
 | 
						|
		;slime-autodoc	; requires obsolete technomancy slime for compatibility
 | 
						|
	)
 | 
						|
	;'(slime-fancy) ; almost everything
 | 
						|
)
 | 
						|
 | 
						|
;(defface slime-repl-input-face
 | 
						|
;  '((t (:bold t)))
 | 
						|
;  "Face for previous input in the SLIME REPL."
 | 
						|
;  :group 'slime-repl)
 | 
						|
 | 
						|
;	`(defun ,name ()
 | 
						|
 | 
						|
;		(let ((slime-default-lisp ,mapping))
 | 
						|
 | 
						|
;(defmacro defslime-start (name mapping)
 | 
						|
;	`(defun, name ()
 | 
						|
;		(interactive)
 | 
						|
;		(let ((slime-default-lisp, mapping))
 | 
						|
;			(slime)
 | 
						|
;		)
 | 
						|
;	)
 | 
						|
;)
 | 
						|
 | 
						|
;(defslime-start sbcl 'sbcl)
 | 
						|
 | 
						|
(defun sbcl ()
 | 
						|
	(interactive)
 | 
						|
	(let ((slime-default-lisp, 'sbcl))
 | 
						|
		(slime)
 | 
						|
	)
 | 
						|
)
 | 
						|
 | 
						|
(add-hook 'slime-mode-hook
 | 
						|
	(lambda ()
 | 
						|
		(setq slime-truncate-lines nil)
 | 
						|
;		(slime-redirect-inferior-output) ; patched version with error changed by message
 | 
						|
	)
 | 
						|
)
 | 
						|
 | 
						|
;(add-hook 'slime-repl-mode-hook 'split-window-vertically)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
(defun slime-jump-to-trace (&optional on)
 | 
						|
	"Jump to the file/line that the current stack trace line references. Only works with files in your project root's src/, not in dependencies."
 | 
						|
	(interactive)
 | 
						|
 | 
						|
	(message "!!! slime-jump-to-trace called")
 | 
						|
 | 
						|
	(save-excursion
 | 
						|
		(beginning-of-line)
 | 
						|
		(search-forward-regexp "[0-9]: \\([^$(]+\\).*?\\([0-9]*\\))")
 | 
						|
		(let (
 | 
						|
			(line (string-to-number (match-string 2)))
 | 
						|
			(ns-path (split-string (match-string 1) "\\."))
 | 
						|
			(project-root (locate-dominating-file default-directory "src/"))
 | 
						|
		)
 | 
						|
			(find-file (format "%s/src/%s.clj" project-root
 | 
						|
				(mapconcat 'identity ns-path "/"))
 | 
						|
			)
 | 
						|
			(goto-line line)
 | 
						|
		)
 | 
						|
	)
 | 
						|
)
 | 
						|
 | 
						|
;(eval-after-load 'slime
 | 
						|
;	'(progn
 | 
						|
;		(defalias 'sldb-toggle-details 'slime-jump-to-trace)
 | 
						|
;		(defun sldb-prune-initial-frames (frames)
 | 
						|
;			"Show all stack trace lines by default."
 | 
						|
;			frames)
 | 
						|
;	)
 | 
						|
;)
 |