Subject: bug#23565: 24.5; tcl-end-of-defun and tcl-eval-defun doesn't work reliable

From: Rolf Ade <[email-masked]>
Date: Thu, 05 Jul 2018 00:10:22 +0200

Rolf Ade <[email-masked]> writes:

> Tom Tromey <[email-masked]> writes:
>> I've checked in a fix for the tcl-end-of-defun problem.
>> I think it should fix tcl-eval-defun as well, but I didn't test this.
>
> I've build current master and did a few tests. Yes, it seems, that
> tcl-end-of-defun as well as tcl-eval-defun now work for me as expected,
> even in the reported-as-broken cases.
>
> I'll copy masters tcl-mode.el over to my currently used 26.1
> installation (and bytecompile, of course) and give it a try in my daily
> Tcl coding, for a few days, to see, if I stumble over any unexpected
> side-effect of the changes.
>
> I'll report in a week or at most two (it varies a bit how much Tcl
> coding I have to do and this is driven by others).

Well, beside the improvement (tcl-end-of-defun and tcl-eval-defun does
work better), which I again confirm I see one more (unexpected and
unwanted) effect.

With emacs 26.1:

- emacs -Q

- M-x tcl-mode

- Insert

do {
foo            

Indent the second line ("foo") with <Tab> and you get

do {
    foo

Do the same with master and you get

do {
foo

the second line ("foo") does not get indented with <Tab>. 

Something is special with "proc". If there is a proc before such code as
above the indentation works even with master, e.g. with

proc do {script} {
    eval $script
}

do {
foo

the line "foo" will be indented by <Tab> with 26.1 and master.