[Feature request] support syntax highlighting in heredoc RUN instructions
The gist
When using the RUN instruction with the heredoc notation, that section should use the appropriate syntax highlighting for the language used.
An example of how it looks like now for a shell (Bash) script:
How the same code is highlighted in a shell file, and how I would like it to look in the Dockerfile:
Description
Basically, I’m asking for something similar to how Markdown files in VS Code are highlighted. Normally the file has Markdown highlighting, but for code blocks, those sections are highlighted for a different syntax (e.g. shell syntax if the code block starts with ```bash).
The extension should look at the SHELL instruction, the RUN instruction arguments, and the shebang for determining the correct highlighting for the RUN block. For example, the extension should properly highlight the Python code in all of the three examples below:
Example 1:
SHELL ["/usr/bin/python3", "-c"]
RUN <<EOF
def hello():
print("hello world")
EOF
Example 2:
RUN /usr/bin/python3 <<EOF
def hello():
print("hello world")
EOF
Example 3:
RUN <<EOF
#! /usr/bin/python3
def hello():
print("hello world")
EOF
hello world
It's not clear to me how this can be achieved. I do not believe the language server protocol supports this kind of use case. If someone knows how the LSP can enable this use case, please let me know.
It would definitely be nice to have support for this highly anticipated feature. We are using this syntax extensively now, and I am definitely missing syntax highlighting there.
Perhaps it is possible to get some inspiration from these links? https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide#embedded-languages https://code.visualstudio.com/api/language-extensions/embedded-languages https://github.com/neovim/neovim/issues/26783 https://github.com/camdencheek/tree-sitter-dockerfile/pull/45