help-smalltalk
[Top][All Lists]
Advanced

[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
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]