47 lines
1.7 KiB
EmacsLisp
47 lines
1.7 KiB
EmacsLisp
|
|
(require 'slime-enclosing-context)
|
||
|
|
(require 'slime-tests)
|
||
|
|
(require 'cl-lib)
|
||
|
|
|
||
|
|
(def-slime-test enclosing-context.1
|
||
|
|
(buffer-sexpr wished-bound-names wished-bound-functions)
|
||
|
|
"Check that finding local definitions work."
|
||
|
|
'(("(flet ((,nil ()))
|
||
|
|
(let ((bar 13)
|
||
|
|
(,foo 42))
|
||
|
|
*HERE*))"
|
||
|
|
;; We used to return ,foo here, but we do not anymore. We
|
||
|
|
;; still return ,nil for the `slime-enclosing-bound-functions',
|
||
|
|
;; though. The first one is used for local M-., whereas the
|
||
|
|
;; latter is used for local autodoc. It does not seem too
|
||
|
|
;; important for local M-. to work on such names. \(The reason
|
||
|
|
;; that it does not work anymore, is that
|
||
|
|
;; `slime-symbol-at-point' now does TRT and does not return a
|
||
|
|
;; leading comma anymore.\)
|
||
|
|
("bar" nil nil)
|
||
|
|
((",nil" "()")))
|
||
|
|
("(flet ((foo ()))
|
||
|
|
(quux)
|
||
|
|
(bar *HERE*))"
|
||
|
|
("foo")
|
||
|
|
(("foo" "()"))))
|
||
|
|
(slime-check-top-level)
|
||
|
|
(with-temp-buffer
|
||
|
|
(let ((tmpbuf (current-buffer)))
|
||
|
|
(lisp-mode)
|
||
|
|
(insert buffer-sexpr)
|
||
|
|
(search-backward "*HERE*")
|
||
|
|
(cl-multiple-value-bind (bound-names points)
|
||
|
|
(slime-enclosing-bound-names)
|
||
|
|
(slime-check "Check enclosing bound names"
|
||
|
|
(cl-loop for name in wished-bound-names
|
||
|
|
always (member name bound-names))))
|
||
|
|
(cl-multiple-value-bind (fn-names fn-arglists points)
|
||
|
|
(slime-enclosing-bound-functions)
|
||
|
|
(slime-check "Check enclosing bound functions"
|
||
|
|
(cl-loop for (name arglist) in wished-bound-functions
|
||
|
|
always (and (member name fn-names)
|
||
|
|
(member arglist fn-arglists)))))
|
||
|
|
)))
|
||
|
|
|
||
|
|
(provide 'slime-enclosing-context-tests)
|