[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re : [Help-smalltalk] Debugging smalltalk-mode.el
From: |
Mathieu Suen |
Subject: |
Re : [Help-smalltalk] Debugging smalltalk-mode.el |
Date: |
Fri, 23 Jul 2010 05:24:08 -0700 (PDT) |
> De : Mathieu Suen <address@hidden>
>
> Hi All,
>
> In emacs the smalltalk-mode have a bug with the new syntax when writing a
> keyword method signature.
>
> foo: a [
> ...
> ]
>
> When writing the colon you end up in a parse error:
>
> Debugger entered--Lisp error: (scan-error "Unbalanced parentheses" 2479 2446)
> apply(debug error (scan-error "Unbalanced parentheses" 2479 2446))
> edebug(error (scan-error "Unbalanced parentheses" 2479 2446))
> signal(scan-error ("Unbalanced parentheses" 2479 2446))
> edebug-signal(scan-error ("Unbalanced parentheses" 2479 2446))
> scan-sexps(2480 -1)
> forward-sexp(-1)
> backward-sexp(1)
> smalltalk-backward-sexp(1)
> smalltalk-find-statement-begin()
> smalltalk-indent-for-colon()
> (edebug-after (edebug-before 37) 38 (smalltalk-indent-for-colon))
> (and (edebug-after 0 36 needs-indent) (edebug-after (edebug-before 37) 38
> (smalltalk-indent-for-colon)))
> (edebug-after (edebug-before 35) 39 (and (edebug-after 0 36 needs-indent)
> (edebug-after ... 38 ...)))
> (progn (edebug-after (edebug-before 16) 34 (save-excursion ... ...))
> (edebug-after (edebug-before 35) 39 (and ... ...)))
> (edebug-after (edebug-before 15) 40 (progn (edebug-after ... 34 ...)
> (edebug-after ... 39 ...)))
> (if (edebug-after (edebug-before 10) 14 (null ...)) (edebug-after
> (edebug-before 15) 40 (progn ... ...)))
> (edebug-after (edebug-before 9) 41 (if (edebug-after ... 14 ...)
>(edebug-after
>
> ... 40 ...)))
> (let (needs-indent state (parse-sexp-ignore-comments t)) (edebug-after
> (edebug-before 1) 8 (setq state ...)) (edebug-after (edebug-before 9) 41 (if
>...
>
> ...)) (edebug-after (edebug-before 42) 43 (self-insert-command 1)))
> (edebug-after (edebug-before 0) 44 (let (needs-indent state ...)
>(edebug-after
>
> ... 8 ...) (edebug-after ... 41 ...) (edebug-after ... 43 ...)))
> (lambda nil (edebug-after (edebug-before 0) 44 (let ... ... ... ...)))()
> edebug-enter(smalltalk-colon nil (lambda nil (edebug-after (edebug-before
> 0)
>
> 44 (let ... ... ... ...))))
> edebug-enter(smalltalk-colon nil (lambda nil (edebug-after (edebug-before
> 0)
>
> 44 (let ... ... ... ...))))
> smalltalk-colon()
>
>
> I think the issue is in #'smalltalk-indent-for-colon who should check if you
>are
>
> being writing a method pattern or just sending a message.
In fact to reproduce the bug you need to have a method before.
For example :
----Test.st-----
Object subclass: A [
foo: f [
]
bar: e [
]
]
-----Test.st-----
Only the colon of the bar method will throw the error.
This is because the #'smalltalk-narrow-to-method will narrow to:
-----------------
]
bar
-----------------
So we need to check before if we are in a message pattern for the new syntax.
>
> I am trying to fix it but since I am not an emacs expert tell me if you have
>an
>
> idea of how to fix it.
>
> Thanks
>
> Mathieu
>
>
>
>
>
> _______________________________________________
> help-smalltalk mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/help-smalltalk
>