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

C lexer treats #define as a comment #953

Open
1 task done
carlynorama opened this issue Apr 2, 2024 · 1 comment
Open
1 task done

C lexer treats #define as a comment #953

carlynorama opened this issue Apr 2, 2024 · 1 comment
Labels

Comments

@carlynorama
Copy link

carlynorama commented Apr 2, 2024

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

The C lexer treats #define as a comment in (Looks like C++ does as well), at least the style appears the same.

maybe adding it around line 14?

    <analyse first="true" >
      <regex pattern="(?m)^\s*#include &lt;" score="0.1" />
      <regex pattern="(?m)^\s*#ifn?def " score="0.1" />
    </analyse>

ETA - nope, those are comments, too!

It's fine if they don't get special treatment, but it's rough that they can fade into the comments.

Thank you!

To Reproduce

Reproduced Here

same for include and if

@carlynorama carlynorama added the bug label Apr 2, 2024
@carlynorama carlynorama changed the title C lexer treats #define as a macro/comment C lexer treats #define as a comment Apr 2, 2024
@walles
Copy link
Contributor

walles commented Aug 11, 2024

Shorter repro case, for what I believe is the same issue.

#define TEST "//test"

HTML:

<span class="cp">#define TEST &#34;</span><span class="c1">//test&#34;</span>

Expected:

<span class="cp">#define TEST &#34;//test&#34;</span>

Playground link:
https://swapoff.org/chroma/playground/#eyJsYW5ndWFnZSI6IkMiLCJzdHlsZSI6Im1vbm9rYWlsaWdodCIsInRleHQiOiIjZGVmaW5lIFRFU1QgXCIvL3Rlc3RcIiIsImNsYXNzZXMiOnRydWV9

Apologies if this is unrelated.

As a side note, this syntax is valid C, I was unsure and tried it. This program prints TEST: //gris.

#include <stdio.h>
#define TEST "//gris"

int main() {
    printf("TEST: %s\n", TEST);
    return 0;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants