Hello Schemers

When I open a Scheme file (Neo)vim the file type is set to "scheme", but I 
would like to be able to detect that it is not just Scheme, but Guile Scheme. 
So far I have set up the editor to scan the first line for a shebang and if 
the word "guile" appears to set the file type to "scheme.guile":

        if getline(1) =~? '\v^#!.*[Gg]uile'
                let &filetype .= '.guile'
        endif

If you are not familiar with Vim, the important part is the regex 
'^#!.*[Gg]uile'. This works OK, but is there a better way than adding a 
shebang or some other manual hing to the head of every script? How does Emacs 
do it?

And while I'm at that topic, what is the proper way of writing a shebang when 
I don't know where Guile is installed to? For example, the Guile manual 
frequently uses

    #!/usr/local/bin/guile

but what if I have Guile installed via Guix and it is somewhere in my Guix 
store? A common solution is to abuse env:

        #!/usr/bin/env guile

But now I cannot pass arguments (like '-s') to Guile, because everything 
following the first space will be treated as one argument to 'env'. Is there a 
solution or am I just overthinking things?



Reply via email to