"Tobias C. Rittweiler" tcr@freebits.de writes:
Matthias Koeppe mkoeppe+slime@mail.math.uni-magdeburg.de writes:
I noticed that slime-complete-form is broken in SLIME CVS.
The bogus behaviour should be fixed in CVS.
Now this: -------------------- (defun <C-c C-s>
(defun foo () 1) -------------------- causes this error:
Debugger entered--Lisp error: (cl-assertion-failed (<= (point) user-point)) signal(cl-assertion-failed ((<= (point) user-point))) (or (<= (point) user-point) (signal (quote cl-assertion-failed) (list ...))) (progn (or (<= ... user-point) (signal ... ...)) nil) (assert (<= (point) user-point)) (let ((full-sexps ...)) (forward-sexp arg-index) (slime-forward-blanks) (assert (<= ... user-point)) (let (...) (if ... full-sexps ...))) (save-excursion (goto-char op-start) (let (...) (forward-sexp arg-index) (slime-forward-blanks) (assert ...) (let ... ...))) (let ((user-point ...)) (save-excursion (goto-char op-start) (let ... ... ... ... ...))) (cond ((eql op-100273 ...) (destructuring-bind ... rand-100274 op)) ((eql op-100273 ...) (destructuring-bind ... rand-100274 op)) (t (let ... ...))) (case op-100273 (:declaration (destructuring-bind ... rand-100274 op)) (:type-specifier (destructuring-bind ... rand-100274 op)) (t (let ... ...))) (let* ((tmp-100275 ...) (op-100273 ...) (rand-100274 ...)) (case op-100273 (:declaration ...) (:type-specifier ...) (t ...))) (destructure-case (slime-ensure-list op) ((:declaration declspec) op) ((:type-specifier typespec) op) (t (let ... ...))) (let ((op ...) (op-start ...) (arg-index ...)) (destructure-case (slime-ensure-list op) (... op) (... op) (t ...))) (if (null operators) "" (let (... ... ...) (destructure-case ... ... ... ...))) (let* ((G100271 ...) (operators ...) (arg-indices ...) (points ...)) (if (null operators) "" (let ... ...))) (multiple-value-bind (operators arg-indices points) (slime-enclosing-form-specs) (if (null operators) "" (let ... ...))) slime-incomplete-form-at-point() (let ((form-string ...)) (let (...) (if ... ... ...))) slime-complete-form() * call-interactively(slime-complete-form)
I'd be interested in seeing a backtrace nontheless, though.
Using this (note: one space fewer): -------------------- (defun<C-c C-s>
(defun foo () 1) -------------------- I get the error that I mentioned:
Debugger entered--Lisp error: (wrong-type-argument stringp nil) substring-no-properties(nil) (let* ((deleted-region ...) (deleted-text ...) (prior-parens-count ...)) (when slime-close-parens-limit (let ... ...))) (progn (goto-char point) (dotimes (i sexp-level) (insert ")")) (setq point (point)) (skip-chars-forward " \n)") (skip-chars-backward " \n") (let* (... ... ...) (when slime-close-parens-limit ...))) (if (> sexp-level 0) (progn (goto-char point) (dotimes ... ...) (setq point ...) (skip-chars-forward " \n)") (skip-chars-backward " \n") (let* ... ...))) (when (> sexp-level 0) (goto-char point) (dotimes (i sexp-level) (insert ")")) (setq point (point)) (skip-chars-forward " \n)") (skip-chars-backward " \n") (let* (... ... ...) (when slime-close-parens-limit ...))) (let ((sexp-level 0) point) (save-excursion (save-restriction ... ... ... ... ...)) (when (> sexp-level 0) (goto-char point) (dotimes ... ...) (setq point ...) (skip-chars-forward " \n)") (skip-chars-backward " \n") (let* ... ...))) slime-close-all-parens-in-sexp() (let ((slime-close-parens-limit 1)) (slime-close-all-parens-in-sexp)) (save-excursion (insert (substring result 0 -1)) (let (...) (slime-close-all-parens-in-sexp))) (progn (just-one-space) (save-excursion (insert ...) (let ... ...)) (save-excursion (backward-up-list 1) (indent-sexp))) (if (eq result :not-available) (error "Could not generate completion for the form `%s'" form-string) (progn (just-one-space) (save-excursion ... ...) (save-excursion ... ...))) (let ((result ...)) (if (eq result :not-available) (error "Could not generate completion for the form `%s'" form-string) (progn ... ... ...))) (let ((form-string ...)) (let (...) (if ... ... ...))) slime-complete-form() * call-interactively(slime-complete-form)
(This one is on a strange old unreleased version of Emacs, though, 21.3.50)
Thanks, Matthias