unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#3354: tcl-mode regression in Emacs 22
@ 2009-05-23 17:56 Will Parsons
  2009-06-04  0:28 ` Glenn Morris
  0 siblings, 1 reply; 7+ messages in thread
From: Will Parsons @ 2009-05-23 17:56 UTC (permalink / raw)
  To: bug-gnu-emacs


Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,
and to the gnu.emacs.bug news group.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

(This is a repeat of a bug report sent to gnu.emacs.bugs on 29 Mar 2008.)

The following valid Tcl script is recognized automatically as Tcl mode
under Emacs 21 but as shell mode under Emacs 22:

------
isis% cat test.tcl
#!/bin/sh
#\
exec tclsh "$0" ${1+"$@"}
puts test
------

i.e., the shebang overrides the .tcl extension in determining programming
mode.

The original bug report was closed out with the response:

> If the shebang specified /bin/tcl, it would be recognized as a Tcl file.
> In ambiguous situations like this, it's better to use a `-*-' line or
> local variables list (see the node "Choosing Modes" in the Emacs
> manual).

I responded:

  Using a shebang of "#!/bin/tclsh" is not portable, since tclsh may be
  installed elsewhere (typically /usr/local/bin).  The idiom cited in the
  original message is commonly used in Tcl scripts to allow for this.  I am
  aware that "-*-" can be used to force recognition of Tcl mode, but this
  should not be necessary if the script has a ".tcl" extension, and in fact
  it is not necessary in versions of Emacs prior to version 22, so the
  current behaviour is a regression.  If for some reason a decision was
  made to have the shebang override the extension to determine the mode,
  then there should be an easy way of getting back the previous behaviour,
  *without* having to add instructions to Emacs to the script files
  themselves.

This has continued to bite me.  Yes, I *know* that I can stick a -*-tcl-*-
string in the file to force recognition as a Tcl file, but if the order of
precedence was changed in going from Emacs 21 to Emacs 22, there should be
a way of getting back the former behaviour.  I tried adding to my .emacs
file the line:

  (add-to-list 'auto-mode-alist '("\\.tcl$" . tcl-mode))

but files ending in ".tcl" but have a shebang of "#!/bin/sh" are still
being treated as shell mode.  I would like to re-open this as being a
genuine bug.

---

In GNU Emacs 22.3.1 (i386-portbld-freebsd7.0, GTK+ Version 2.12.11)
 of 2008-12-06 on nephthys.thalatta.eme
Windowing system distributor `The X.Org Foundation', version 11.0.60900000
configured using `configure  '--with-gtk' '--x-libraries=/usr/local/lib' '--x-includes=/usr/local/include' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=i386-portbld-freebsd7.0' 'build_alias=i386-portbld-freebsd7.0' 'CC=cc' 'CFLAGS=-O2 -fno-strict-aliasing -pipe''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: nil
  locale-coding-system: nil
  default-enable-multibyte-characters: t

Major mode: Shell-script

Minor modes in effect:
  display-time-mode: t
  delete-selection-mode: t
  recentf-mode: t
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t







^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#3354: tcl-mode regression in Emacs 22
  2009-05-23 17:56 bug#3354: tcl-mode regression in Emacs 22 Will Parsons
@ 2009-06-04  0:28 ` Glenn Morris
  2009-06-04  0:35   ` Processed: " Emacs bug Tracking System
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Glenn Morris @ 2009-06-04  0:28 UTC (permalink / raw)
  To: Will Parsons; +Cc: 3354

unarchive 97
forcemerge 97 3354
stop

Will Parsons wrote:

> The following valid Tcl script is recognized automatically as Tcl mode
> under Emacs 21 but as shell mode under Emacs 22:
>
> ------
> isis% cat test.tcl
> #!/bin/sh
> #\
> exec tclsh "$0" ${1+"$@"}
> puts test
[...]
>   Using a shebang of "#!/bin/tclsh" is not portable, since tclsh may be
>   installed elsewhere (typically /usr/local/bin).

#!/usr/bin/env tclsh

(and give it whatever extension you like.)

But this has problems for argument passing.

> I am aware that "-*-" can be used to force recognition of Tcl mode,
> but this should not be necessary if the script has a ".tcl"
> extension, and in fact it is not necessary in versions of Emacs
> prior to version 22, so the current behaviour is a regression.

It's a change.

> If for some reason a decision was made to have the shebang override
> the extension to determine the mode, then there should be an easy
> way of getting back the previous behaviour, *without* having to add
> instructions to Emacs to the script files themselves.

(setq interpreter-mode-alist
      (delete (assoc "sh" interpreter-mode-alist)
            interpreter-mode-alist))

(but #!/bin/sh scripts without filename extensions, which are
numerous, will no longer be opened in sh-mode).


I don't know what the reason is for giving interpreter-mode-alist the
highest priority (above magic-mode-alist as well). The only reference
I can find is:

http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-10/msg00215.html

which just says "I feel this [the old behaviour] to be wrong", with no
examples.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Processed: Re: bug#3354: tcl-mode regression in Emacs 22
  2009-06-04  0:28 ` Glenn Morris
@ 2009-06-04  0:35   ` Emacs bug Tracking System
  2009-06-04  0:56   ` Glenn Morris
  2009-06-04  2:41   ` Jason Rumney
  2 siblings, 0 replies; 7+ messages in thread
From: Emacs bug Tracking System @ 2009-06-04  0:35 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Emacs Bugs

Processing commands for control@emacsbugs.donarmstrong.com:

> unarchive 97
Bug 97 [emacs] regression in Emacs 22 recognizing Tcl mode
Unarchived bug 97
> forcemerge 97 3354
bug#97: regression in Emacs 22 recognizing Tcl mode
bug#3354: tcl-mode regression in Emacs 22
Forcibly Merged 97 3354.

> stop
Stopping processing here.

Please contact me if you need assistance.

Don Armstrong
(administrator, Emacs bugs database)




^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#3354: tcl-mode regression in Emacs 22
  2009-06-04  0:28 ` Glenn Morris
  2009-06-04  0:35   ` Processed: " Emacs bug Tracking System
@ 2009-06-04  0:56   ` Glenn Morris
  2009-06-04  2:41   ` Jason Rumney
  2 siblings, 0 replies; 7+ messages in thread
From: Glenn Morris @ 2009-06-04  0:56 UTC (permalink / raw)
  To: 3354; +Cc: Will Parsons

Glenn Morris wrote:

> #!/usr/bin/env tclsh
>
> (and give it whatever extension you like.)
>
> But this has problems for argument passing.

Actually, no it doesn't.

http://wiki.tcl.tk/812





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#3354: tcl-mode regression in Emacs 22
  2009-06-04  0:28 ` Glenn Morris
  2009-06-04  0:35   ` Processed: " Emacs bug Tracking System
  2009-06-04  0:56   ` Glenn Morris
@ 2009-06-04  2:41   ` Jason Rumney
  2009-06-04  4:04     ` Glenn Morris
  2 siblings, 1 reply; 7+ messages in thread
From: Jason Rumney @ 2009-06-04  2:41 UTC (permalink / raw)
  To: Glenn Morris, 3354; +Cc: Will Parsons

Glenn Morris wrote:
> I don't know what the reason is for giving interpreter-mode-alist the
> highest priority (above magic-mode-alist as well). The only reference
> I can find is:
>
> http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-10/msg00215.html
>
> which just says "I feel this [the old behaviour] to be wrong", with no
> examples.
>   

The examples were given further down in that same thread. The file 
extension .conf is commonly used for configuration files. On Debian at 
least, these files are often shell scripts or XML files rather than 
simple name:value pairs that can be parsed by conf-mode. So the reporter 
wanted shell script detection and XML file detection to take priority 
over auto-mode-alist.






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#3354: tcl-mode regression in Emacs 22
  2009-06-04  2:41   ` Jason Rumney
@ 2009-06-04  4:04     ` Glenn Morris
  2009-06-04  5:14       ` Jason Rumney
  0 siblings, 1 reply; 7+ messages in thread
From: Glenn Morris @ 2009-06-04  4:04 UTC (permalink / raw)
  To: Jason Rumney; +Cc: 3354, Will Parsons

Jason Rumney wrote:

> The examples were given further down in that same thread. The file 
> extension .conf is commonly used for configuration files. On Debian at 
> least, these files are often shell scripts or XML files rather than 
> simple name:value pairs that can be parsed by conf-mode.

Of the 80+ /etc/*.conf files on my Debian system, none start with a
'#!', so what does this have to do with interpreter-mode-alist needing
to take priority over auto-mode-alist?





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#3354: tcl-mode regression in Emacs 22
  2009-06-04  4:04     ` Glenn Morris
@ 2009-06-04  5:14       ` Jason Rumney
  0 siblings, 0 replies; 7+ messages in thread
From: Jason Rumney @ 2009-06-04  5:14 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 3354, Will Parsons

Glenn Morris wrote:
> Of the 80+ /etc/*.conf files on my Debian system, none start with a
> '#!', so what does this have to do with interpreter-mode-alist needing
> to take priority over auto-mode-alist?
>   

In Debian testing/unstable, they seem to be going through adding .conf 
to the end of all files in /etc subdirectories that have the behavior of 
loading all files in the directory, presumably to solve the problem of 
backup files being evaluated in those directories.  Quite a few of these 
are shell scripts, but having looked properly now, I can only find one 
out of around 300 .conf files under /etc that starts with #!.







^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-06-04  5:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-23 17:56 bug#3354: tcl-mode regression in Emacs 22 Will Parsons
2009-06-04  0:28 ` Glenn Morris
2009-06-04  0:35   ` Processed: " Emacs bug Tracking System
2009-06-04  0:56   ` Glenn Morris
2009-06-04  2:41   ` Jason Rumney
2009-06-04  4:04     ` Glenn Morris
2009-06-04  5:14       ` Jason Rumney

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).