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?