Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect highlighting for certain RUN directives in nvim #51

Open
jason-ci opened this issue May 9, 2024 · 4 comments
Open

Incorrect highlighting for certain RUN directives in nvim #51

jason-ci opened this issue May 9, 2024 · 4 comments

Comments

@jason-ci
Copy link

jason-ci commented May 9, 2024

Hi, I'm seeing some incorrect highlighting for some of the RUN directives in this Dockerfile in Neovim;

FROM node:20-alpine AS builder

WORKDIR /staging

COPY . /staging/

RUN corepack enable
RUN pnpm install --frozen-lockfile
RUN pnpm build
RUN pnpm prune --prod

FROM node:20-alpine

WORKDIR /app

COPY --from=builder /staging/package.json /staging/pnpm-lock.yaml  /app/
COPY --from=builder /staging/node_modules /app/node_modules
COPY --from=builder /staging/build /app/build

EXPOSE 3000
CMD ["node", "/app/build"]

Output of :InspectTree;

(command) ; [7:5 - 10:21]
 name: (command_name) ; [7:5 - 12]
  (word) ; [7:5 - 12]
 argument: (word) ; [7:14 - 8:8]
 argument: (word) ; [8:10 - 16]
 argument: (word) ; [8:18 - 9:8]
 argument: (word) ; [9:10 - 10:8]
 argument: (word) ; [10:10 - 14]
 argument: (word) ; [10:16 - 21]
(from_instruction) ; [1:1 - 30]
 (image_spec) ; [1:6 - 19]
  name: (image_name) ; [1:6 - 9]
  tag: (image_tag) ; [1:10 - 19]
 as: (image_alias) ; [1:24 - 30]
(workdir_instruction) ; [3:1 - 16]
 (path) ; [3:9 - 16]
(copy_instruction) ; [5:1 - 16]
 (path) ; [5:6 - 6]
 (path) ; [5:8 - 16]
(run_instruction) ; [7:1 - 19]
 (shell_command) ; [7:5 - 19]
  (shell_fragment) ; [7:5 - 19]
(run_instruction) ; [8:1 - 34]
 (shell_command) ; [8:5 - 34]
  (shell_fragment) ; [8:5 - 34]
(run_instruction) ; [9:1 - 14]
 (shell_command) ; [9:5 - 14]
  (shell_fragment) ; [9:5 - 14]
(run_instruction) ; [10:1 - 21]
 (shell_command) ; [10:5 - 21]
  (shell_fragment) ; [10:5 - 21]
(from_instruction) ; [12:1 - 19]
 (image_spec) ; [12:6 - 19]
  name: (image_name) ; [12:6 - 9]
  tag: (image_tag) ; [12:10 - 19]
(workdir_instruction) ; [14:1 - 12]
 (path) ; [14:9 - 12]
(copy_instruction) ; [16:1 - 72]
 (param) ; [16:6 - 19]
 (path) ; [16:21 - 41]
 (path) ; [16:43 - 65]
 (path) ; [16:68 - 72]
(copy_instruction) ; [17:1 - 59]
 (param) ; [17:6 - 19]
 (path) ; [17:21 - 41]
 (path) ; [17:43 - 59]
(copy_instruction) ; [18:1 - 45]
 (param) ; [18:6 - 19]
 (path) ; [18:21 - 34]
 (path) ; [18:36 - 45]
(expose_instruction) ; [20:1 - 11]
 (expose_port) ; [20:8 - 11]
(cmd_instruction) ; [21:1 - 26]
 (json_string_array) ; [21:5 - 26]
  (json_string) ; [21:6 - 11]
  (json_string) ; [21:14 - 25]

Screenshot of highlighting I'm seeing;
highlighting

Build info;

  • Neovim version: 0.9.5
  • nvim-treesitter commit: 3ef8d25df2d8eca6f15a6889cb2bc9d4c6101096
  • dockerfile.so parser commit: 439c3e7b8a9bfdbf1f7d7c2beaae4173dc484cbf
@jason-ci
Copy link
Author

jason-ci commented May 9, 2024

It seems the top most command node in the treesitter output is incorrectly catching the corepack command onwards, until the end of the 4th and final RUN directive, with everything after being treated as an argument to corepack

@myapaulogy
Copy link

I think I'm experiencing the same problem going off your explanation. Its considering everything after python3 as an argument.

FROM alpine:edge

USER root
ENV PYTHONUNBUFFERED=1

RUN apk add python3
#RUN pip3 install --no-cache --upgrade pip setuptools


RUN apk add curl

WORKDIR /app

copy . .

CMD python3 main.py
(source_file ; [0, 0] - [16, 0]
  (program ; [5, 4] - [15, 19]
    (command ; [5, 4] - [15, 19]
      name: (command_name ; [5, 4] - [5, 7]
        (word)) ; [5, 4] - [5, 7]
      argument: (word) ; [5, 8] - [5, 11]
      argument: (concatenation ; [5, 12] - [9, 7]
        (word) ; [5, 12] - [5, 19]
        (word)) ; [9, 4] - [9, 7]
      argument: (word) ; [9, 8] - [9, 11]
      argument: (word) ; [9, 12] - [15, 11]
      argument: (word))) ; [15, 12] - [15, 19]
  (from_instruction ; [0, 0] - [0, 16]
    (image_spec ; [0, 5] - [0, 16]
      name: (image_name) ; [0, 5] - [0, 11]
      tag: (image_tag))) ; [0, 11] - [0, 16]
  (user_instruction ; [2, 0] - [2, 9]
    user: (unquoted_string)) ; [2, 5] - [2, 9]
  (env_instruction ; [3, 0] - [3, 22]
    (env_pair ; [3, 4] - [3, 22]
      name: (unquoted_string) ; [3, 4] - [3, 20]
      value: (unquoted_string))) ; [3, 21] - [3, 22]
  (run_instruction ; [5, 0] - [5, 19]
    (shell_command ; [5, 4] - [5, 19]
      (shell_fragment))) ; [5, 4] - [5, 19]
  (comment) ; [6, 0] - [6, 53]
  (run_instruction ; [9, 0] - [9, 16]
    (shell_command ; [9, 4] - [9, 16]
      (shell_fragment))) ; [9, 4] - [9, 16]
  (workdir_instruction ; [11, 0] - [11, 12]
    (path)) ; [11, 8] - [11, 12]
  (copy_instruction ; [13, 0] - [13, 8]
    (path) ; [13, 5] - [13, 6]
    (path)) ; [13, 7] - [13, 8]
  (cmd_instruction ; [15, 0] - [15, 19]
    (shell_command ; [15, 4] - [15, 19]
      (shell_fragment)))) ; [15, 4] - [15, 19]

highlighting
image

  • Neovim version: 0.10.0
  • I don't know where treesitter commit or docker.so parser commit is.

@tronikelis
Copy link

same here

image

  • nvim 0.10
  • i should be using everything at their latest versions

@camdencheek
Copy link
Owner

This appears to be an issue with the bash language injection. program is not a node created by the Dockerfile grammar, and disabling the bash injections gives me correct looking highlighting. I do not actually maintain the injections in nvim-treesitter, so I'm not exactly sure what's going on there, but it seem possible the issue is related to this.

maxisacson added a commit to maxisacson/nvim-config that referenced this issue Oct 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants