jeff-hykin / better-cpp-syntax

💾 The source of VS Code's C++ syntax highlighting
GNU General Public License v3.0
155 stars 30 forks source link

include for `preprocessor_number_literal` has no matching pattern #653

Closed asottile closed 7 months ago

asottile commented 8 months ago

Checklist

If Disabling that^ makes the problem go away, then follow this to make an issue on the C++ extension: https://github.com/microsoft/vscode-cpptools/issues/new/choose

The code with a problem is:

#pragma once

It looks like:

n/a

Traceback (most recent call last):
  File "/home/asottile/workspace/babi-grammars/bin/test-grammars", line 73, in <module>
    raise SystemExit(main())
  File "/home/asottile/workspace/babi-grammars/bin/test-grammars", line 56, in main
    state, _ = highlight_line(
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 749, in highlight_line
    search_res = state.cur.rule.search(
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 363, in search
    return _do_regset(idx, match, self, compiler, state, pos)
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 332, in _do_regset
    target_rule = compiler.compile_rule(rule.u_rules[idx])
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 633, in compile_rule
    ret = self._c_rules[rule] = self._compile_rule(grammar, rule)
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 601, in _compile_rule
    regs, rules = self._patterns(grammar, rule.patterns)
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 565, in _patterns_
    tmp_regs, tmp_rules = self._include(
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/highlight.py", line 547, in _include_
    return self._patterns(grammar, (repository[s[1:]],))
  File "/home/asottile/workspace/babi-grammars/.tox/py310/lib/python3.10/site-packages/babi/fdict.py", line 45, in __getitem__
    raise KeyError(key)
KeyError: 'preprocessor_number_literal'

It should look like:

(not crash my editor)

this include goes nowhere: https://github.com/jeff-hykin/better-cpp-syntax/blob/9f87ed926789ca21f4800f286cf926dfee35baeb/syntaxes/cpp.tmLanguage.json#L7094

it looks like maybe it should go here but idk where that hash comes from: https://github.com/jeff-hykin/better-cpp-syntax/blob/9f87ed926789ca21f4800f286cf926dfee35baeb/syntaxes/cpp.tmLanguage.json#L2777

jeff-hykin commented 7 months ago

it looks like maybe it should go here but idk where that hash comes from:

Yep thats correct.

The library (ruby_grammar_builder) allows making isolated files, in theory it prevents namespace collisions. It looks like there's an issue with how those are getting replaced though.

I'll add a workaround, and just let me know if there's any more missing ones.

asottile commented 7 months ago

quick question as well -- what's the difference between ./syntaxes and ./autogenerated?