[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to map sh-mode to mean bash-mode

From: Andreas Röhler
Subject: Re: how to map sh-mode to mean bash-mode
Date: Sun, 17 Jul 2011 19:48:07 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; de; rv: Gecko/20110616 SUSE/3.1.11 Thunderbird/3.1.11

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 address@hidden:
$ touch a.bash
$ emacs -nw -Q a.bash
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.


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

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'>
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)


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?


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




reply via email to

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