vscode-docker icon indicating copy to clipboard operation
vscode-docker copied to clipboard

[Feature request] support syntax highlighting in heredoc RUN instructions

Open Igetin opened this issue 2 years ago • 3 comments

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

Igetin avatar Dec 01 '23 13:12 Igetin

hello world

JewelsBee avatar Jan 21 '24 03:01 JewelsBee

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.

rcjsuen avatar Mar 26 '24 00:03 rcjsuen

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

thnee avatar Jun 14 '24 13:06 thnee