Initial commit
This commit is contained in:
31
elpa/slime-20171102.1213/contrib/slime-mdot-fu.el
Normal file
31
elpa/slime-20171102.1213/contrib/slime-mdot-fu.el
Normal file
@@ -0,0 +1,31 @@
|
||||
(require 'slime)
|
||||
(require 'cl-lib)
|
||||
|
||||
(define-slime-contrib slime-mdot-fu
|
||||
"Making M-. work on local functions."
|
||||
(:authors "Tobias C. Rittweiler <tcr@freebits.de>")
|
||||
(:license "GPL")
|
||||
(:slime-dependencies slime-enclosing-context)
|
||||
(:on-load
|
||||
(add-hook 'slime-edit-definition-hooks 'slime-edit-local-definition))
|
||||
(:on-unload
|
||||
(remove-hook 'slime-edit-definition-hooks 'slime-edit-local-definition)))
|
||||
|
||||
|
||||
(defun slime-edit-local-definition (name &optional where)
|
||||
"Like `slime-edit-definition', but tries to find the definition
|
||||
in a local function binding near point."
|
||||
(interactive (list (slime-read-symbol-name "Name: ")))
|
||||
(cl-multiple-value-bind (binding-name point)
|
||||
(cl-multiple-value-call #'cl-some #'(lambda (binding-name point)
|
||||
(when (cl-equalp binding-name name)
|
||||
(cl-values binding-name point)))
|
||||
(slime-enclosing-bound-names))
|
||||
(when (and binding-name point)
|
||||
(slime-edit-definition-cont
|
||||
`((,binding-name
|
||||
,(make-slime-buffer-location (buffer-name (current-buffer)) point)))
|
||||
name
|
||||
where))))
|
||||
|
||||
(provide 'slime-mdot-fu)
|
||||
Reference in New Issue
Block a user