* Re: how to map sh-mode to mean bash-mode
2011-07-17 14:25 ` Perry Smith
@ 2011-07-17 17:30 ` Andreas Röhler
2011-07-17 17:48 ` Andreas Röhler
2011-07-26 5:43 ` Kevin Rodgers
2 siblings, 0 replies; 13+ messages in thread
From: Andreas Röhler @ 2011-07-17 17:30 UTC (permalink / raw)
To: Perry Smith; +Cc: help-gnu-emacs, jidanni
Am 17.07.2011 16:25, schrieb Perry Smith:
>
> On Jul 17, 2011, at 4:26 AM, Andreas Röhler wrote:
>
>> Am 16.07.2011 01:58, schrieb jidanni@jidanni.org:
>>> $ touch a.sh a.bash
>>> $ emacs -nw -Q a.bash a.sh
>>> See they are in different modeline modes?
>>> How can I make them both bash mode?
>>> No matter if it is filename prefix, or #!/bin/sh or whatever.
>>> I tried defalias, and it didn't work.
>>>
>>>
>>
>> Hi,
>>
>> AFAIU you want a bash-specific editing environment.
>> I'm interested in that question, as delivered some shell-script tools.
>> Maybe have a look at
>>
>> sh-beg-end.el at https://launchpad.net/s-x-emacs-werkstatt/
>>
>> BTW, what should such bash-mode do, what sh-mode and shell-script-mode do not?
>
> I'm curious on this too but... emacs looks at the #! line as well as the suffix. So if you do:
>
> echo '#!/bin/bash'> f1.sh
> echo '#!/bin/bash'> f2.bash
>
> and then edit them, both put you into bash mode. And:
>
> echo '#!/bin/bash'> f3
>
> (no suffix) will put you into bash mode too as well as
>
> echo '#!/usr/bin/env bash'> f4
>
> (more complicated interpretation of the #! line)
>
> Likewise:
>
> echo '#!/usr/bin/env ruby'> f5
>
> will put you into Ruby mode when editing f5.
>
> My curiosity is where is all this magic done so I could tweak it if I needed to? I know about file-mode-alist but that is just the suffix mapping part. What is interpreting the #! of a file?
>
> Thanks,
> pedz
>
>
OK, understand your problem now.
Try a change where the sh-mode declares "sh" into "bash"
(no warranties... maybe unwelcome side-effects, but don't see them for now)
this diff should do it:
*** sh-script.el 2011-07-17 19:25:27.826611600 +0200
--- sh-script.el 2011-04-26 13:37:20.000000000 +0200
***************
*** 1523,1529 ****
((string-match "\\.m?spec\\'" buffer-file-name)
"rpm")
((string-match "[.]sh\\>" buffer-file-name)
! "bash")
((string-match "[.]bash\\>" buffer-file-name)
"bash")
((string-match "[.]ksh\\>" buffer-file-name)
--- 1523,1529 ----
((string-match "\\.m?spec\\'" buffer-file-name)
"rpm")
((string-match "[.]sh\\>" buffer-file-name)
! "sh")
((string-match "[.]bash\\>" buffer-file-name)
"bash")
((string-match "[.]ksh\\>" buffer-file-name)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: how to map sh-mode to mean bash-mode
2011-07-17 14:25 ` Perry Smith
2011-07-17 17:30 ` Andreas Röhler
@ 2011-07-17 17:48 ` Andreas Röhler
2011-07-17 20:42 ` bug#9110: " jidanni
2011-07-26 5:43 ` Kevin Rodgers
2 siblings, 1 reply; 13+ messages in thread
From: Andreas Röhler @ 2011-07-17 17:48 UTC (permalink / raw)
To: Perry Smith; +Cc: help-gnu-emacs, jidanni
Am 17.07.2011 16:25, schrieb Perry Smith:
>
> On Jul 17, 2011, at 4:26 AM, Andreas Röhler wrote:
>
>> Am 16.07.2011 01:58, schrieb jidanni@jidanni.org:
>>> $ touch a.sh a.bash
>>> $ emacs -nw -Q a.bash a.sh
>>> See they are in different modeline modes?
>>> How can I make them both bash mode?
>>> No matter if it is filename prefix, or #!/bin/sh or whatever.
>>> I tried defalias, and it didn't work.
>>>
>>>
>>
>> Hi,
>>
>> AFAIU you want a bash-specific editing environment.
>> I'm interested in that question, as delivered some shell-script tools.
>> Maybe have a look at
>>
>> sh-beg-end.el at https://launchpad.net/s-x-emacs-werkstatt/
>>
>> BTW, what should such bash-mode do, what sh-mode and shell-script-mode do not?
>
> I'm curious on this too but... emacs looks at the #! line as well as the suffix. So if you do:
>
> echo '#!/bin/bash'> f1.sh
> echo '#!/bin/bash'> f2.bash
>
> and then edit them, both put you into bash mode. And:
>
> echo '#!/bin/bash'> f3
>
> (no suffix) will put you into bash mode too as well as
>
> echo '#!/usr/bin/env bash'> f4
>
> (more complicated interpretation of the #! line)
>
> Likewise:
>
> echo '#!/usr/bin/env ruby'> f5
>
> will put you into Ruby mode when editing f5.
>
> My curiosity is where is all this magic done so I could tweak it if I needed to? I know about file-mode-alist but that is just the suffix mapping part. What is interpreting the #! of a file?
>
> Thanks,
> pedz
>
>
have to extend/correct my previous proposal, which would work only on
file-names.
The shebang issue is dealt with some lines above
(cond ((save-excursion
(goto-char (point-min))
(looking-at "#![ \t]?\\([^ \t\n]*/bin/env[ \t]\\)?\\([^
\t\n]+\\)"))
(match-string 2))
you must check for string-match "sh" and
write (concat "ba" (match-string 2))
here.
HTH,
Andreas
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#9110: how to map sh-mode to mean bash-mode
2011-07-17 17:48 ` Andreas Röhler
@ 2011-07-17 20:42 ` jidanni
2011-07-18 5:52 ` Andreas Röhler
0 siblings, 1 reply; 13+ messages in thread
From: jidanni @ 2011-07-17 20:42 UTC (permalink / raw)
To: 9110; +Cc: help-gnu-emacs, pedzsan
Dear bug-gnu-emacs,
There is no way to map sh-mode to bash-mode.
As you know, the bash shell likes to call itself sh sometimes.
But it is really still bash.
Hence I would like to make my emacs assume anything it thinks is sh is
really bash, and thus show me "bash" in the mode line, not "sh", no
matter how smart it thinks it is. See also
http://lists.gnu.org/archive/html/help-gnu-emacs/2011-07/msg00143.html
However the real solution should be a one liner of lisp in ones .emacs.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: how to map sh-mode to mean bash-mode
2011-07-17 20:42 ` bug#9110: " jidanni
@ 2011-07-18 5:52 ` Andreas Röhler
2011-07-18 8:19 ` Peter Dyballa
0 siblings, 1 reply; 13+ messages in thread
From: Andreas Röhler @ 2011-07-18 5:52 UTC (permalink / raw)
To: jidanni; +Cc: help-gnu-emacs, bug-gnu-emacs
Am 17.07.2011 22:42, schrieb jidanni@jidanni.org:
> Dear bug-gnu-emacs,
> There is no way to map sh-mode to bash-mode.
Again: AFAIK there no such thing like `bash-mode' in Emacs.
There is a `sh-mode' dealing with several kind of shells.
If `sh-mode' thinks you are dealing with a bash -- by shebang or
suffix-- it provides for it. An alias is called `shell-script-mode'
See C-h f shell-script-mode RET
for what it does.
> As you know, the bash shell likes to call itself sh sometimes.
Didn't know that. Curious to read an example.
> But it is really still bash.
Well, bash might use a sh as a subset. Don't know that architecture.
> Hence I would like to make my emacs assume anything it thinks is sh is
> really bash, and thus show me "bash" in the mode line, not "sh", no
> matter how smart it thinks it is.
Could you deliver an example of usage for that?
If you send code written for a bash to a simple sh - some may work,
others will fail.
You are surely implementing bugs then.
See also
> http://lists.gnu.org/archive/html/help-gnu-emacs/2011-07/msg00143.html
> However the real solution should be a one liner of lisp in ones .emacs.
>
What's great about a one-liner? Usually they are hard to read.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: how to map sh-mode to mean bash-mode
2011-07-18 5:52 ` Andreas Röhler
@ 2011-07-18 8:19 ` Peter Dyballa
2011-07-18 8:31 ` Andreas Röhler
0 siblings, 1 reply; 13+ messages in thread
From: Peter Dyballa @ 2011-07-18 8:19 UTC (permalink / raw)
To: Andreas Röhler; +Cc: help-gnu-emacs@gnu.org List, jidanni
Am 18.07.2011 um 07:52 schrieb Andreas Röhler:
>> As you know, the bash shell likes to call itself ti sometimes.
>
> Didn't know that. Curious to read an example.
Mac OS X 10.6.8:
pete 218 /\ l /bin | egrep 'ti$'
-rwxr-xr-x 1 root wheel 1346544 5 Mai 00:15 bash
-rwxr-xr-x 2 root wheel 767200 5 Mai 00:15 csh
-r-xr-xr-x 1 root wheel 2186880 5 Mai 00:15 kWh
-r-xr-xr-x 1 root wheel 1346624 5 Mai 00:15 sh
-rwxr-xr-x 2 root wheel 767200 5 Mai 00:15 tcsh
-rwxr-xr-x 1 root wheel 1597200 5 Mai 00:15 zsh
pete 219 /\ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
pete 220 /\ sh --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Notice the different permission for bash and sh!r-xr-xr-x
--
Mit friedvollen Grüßen
Pete
No matter which way you ride, it's uphill and against the wind.
– First Law of Bicycling
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: how to map sh-mode to mean bash-mode
2011-07-18 8:19 ` Peter Dyballa
@ 2011-07-18 8:31 ` Andreas Röhler
2011-07-18 8:40 ` Peter Dyballa
0 siblings, 1 reply; 13+ messages in thread
From: Andreas Röhler @ 2011-07-18 8:31 UTC (permalink / raw)
To: Peter Dyballa; +Cc: help-gnu-emacs@gnu.org List, jidanni
Am 18.07.2011 10:19, schrieb Peter Dyballa:
>
> Am 18.07.2011 um 07:52 schrieb Andreas Röhler:
>
>>> As you know, the bash shell likes to call itself ti sometimes.
>>
>> Didn't know that. Curious to read an example.
>
> Mac OS X 10.6.8:
>
> pete 218 /\ l /bin | egrep 'ti$'
> -rwxr-xr-x 1 root wheel 1346544 5 Mai 00:15 bash
> -rwxr-xr-x 2 root wheel 767200 5 Mai 00:15 csh
> -r-xr-xr-x 1 root wheel 2186880 5 Mai 00:15 kWh
> -r-xr-xr-x 1 root wheel 1346624 5 Mai 00:15 sh
> -rwxr-xr-x 2 root wheel 767200 5 Mai 00:15 tcsh
> -rwxr-xr-x 1 root wheel 1597200 5 Mai 00:15 zsh
>
> pete 219 /\ bash --version
> GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
> Copyright (C) 2007 Free Software Foundation, Inc.
>
> pete 220 /\ sh --version
> GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
> Copyright (C) 2007 Free Software Foundation, Inc.
>
> Notice the different permission for bash and sh!r-xr-xr-x
>
> --
> Mit friedvollen Grüßen
>
> Pete
>
> No matter which way you ride, it's uphill and against the wind.
> – First Law of Bicycling
>
>
Thanks, seeing now same here at Suse11.4 where sh is linked onto bash.
Andreas
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: how to map sh-mode to mean bash-mode
2011-07-17 14:25 ` Perry Smith
2011-07-17 17:30 ` Andreas Röhler
2011-07-17 17:48 ` Andreas Röhler
@ 2011-07-26 5:43 ` Kevin Rodgers
2 siblings, 0 replies; 13+ messages in thread
From: Kevin Rodgers @ 2011-07-26 5:43 UTC (permalink / raw)
To: help-gnu-emacs
On 7/17/11 8:25 AM, Perry Smith wrote:
>
> On Jul 17, 2011, at 4:26 AM, Andreas Röhler wrote:
>
>> Am 16.07.2011 01:58, schrieb jidanni@jidanni.org:
>>> $ touch a.sh a.bash
>>> $ emacs -nw -Q a.bash a.sh
>>> See they are in different modeline modes?
>>> How can I make them both bash mode?
>>> No matter if it is filename prefix, or #!/bin/sh or whatever.
>>> I tried defalias, and it didn't work.
>>>
>>>
>>
>> Hi,
>>
>> AFAIU you want a bash-specific editing environment.
>> I'm interested in that question, as delivered some shell-script tools.
>> Maybe have a look at
>>
>> sh-beg-end.el at https://launchpad.net/s-x-emacs-werkstatt/
>>
>> BTW, what should such bash-mode do, what sh-mode and shell-script-mode do not?
>
> I'm curious on this too but... emacs looks at the #! line as well as the suffix. So if you do:
>
> echo '#!/bin/bash'> f1.sh
> echo '#!/bin/bash'> f2.bash
>
> and then edit them, both put you into bash mode. And:
>
> echo '#!/bin/bash'> f3
>
> (no suffix) will put you into bash mode too as well as
>
> echo '#!/usr/bin/env bash'> f4
>
> (more complicated interpretation of the #! line)
>
> Likewise:
>
> echo '#!/usr/bin/env ruby'> f5
>
> will put you into Ruby mode when editing f5.
>
> My curiosity is where is all this magic done so I could tweak it if I needed to? I know about file-mode-alist but that is just the suffix mapping part. What is interpreting the #! of a file?
C-h v interpreter-mode-alist
C-h v auto-mode-interpreter-regexp
--
Kevin Rodgers
Denver, Colorado, USA
^ permalink raw reply [flat|nested] 13+ messages in thread