[go: nahoru, domu]

Use CodeMirror CSS parser for formatting CSS

crrev/c/3551896 reintroduced formatting styles
using CodeMirror parser. However, instead of using
`CSS` parser for `cssStreamParser` it used `SCSS`
parser[1] and somehow it was able to work
correctly for most of the cases albeit with an
incorrect logic (when we step through code
we expect `propertyStart` to be marked
correctly -- "border" is a property start but
it wasn't marking it as a `propertyStart`)

Also, `stringStream` from codemirror/language[2]
doesn't move `stream.start` when it eats tokens
so we need to move it ourselves so that
`stream.current` returns the last token which
is used on deciding whether the current part
is a keyword[3]. Otherwise the code stream
for `border` position becomes `*{border`
which doesn't match to the keyword

[1]: https://github.com/codemirror/legacy-modes/blob/31553acf171d1243ca7a6d8aadd63f392f7e1c12/mode/css.js#L746
[2]: https://github.com/codemirror/language/blob/main/src/stringstream.ts
[3]: https://github.com/codemirror/legacy-modes/blob/31553acf171d1243ca7a6d8aadd63f392f7e1c12/mode/css.js#L182

Fixed: 1334564
Change-Id: I4bd32989de78f172f5b825ae2c29c5d6646f3b25
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3789375
Reviewed-by: Changhao Han <changhaohan@chromium.org>
Commit-Queue: Ergün Erdoğmuş <ergunsh@chromium.org>
Reviewed-by: Michael Liao <michael.liao@microsoft.com>
14 files changed
tree: 6d37b2a9e37906a2a4f2516f17604465a7243dbe
  1. .vscode/
  2. build_overrides/
  3. config/
  4. docs/
  5. extension-api/
  6. front_end/
  7. inspector_overlay/
  8. node_modules/
  9. scripts/
  10. test/
  11. third_party/
  12. v8/
  13. .clang-format
  14. .editorconfig
  15. .eslintignore
  16. .eslintrc.js
  17. .gitattributes
  18. .gitignore
  19. .gn
  20. .mailmap
  21. .npmignore
  22. .npmrc
  23. .style.yapf
  24. .stylelintignore
  25. .stylelintrc.json
  26. ARCHITECTURE.md
  27. AUTHORS
  28. BUILD.gn
  29. codereview.settings
  30. DEPS
  31. LICENSE
  32. OWNERS
  33. package-lock.json
  34. package.json
  35. PRESUBMIT.py
  36. README.md
  37. tsconfig.json
  38. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all JS & CSS to run the DevTools webapp.

Source code

The frontend is available on chromium.googlesource.com.

Design guidelines

Please be aware that DevTools follows additional development guidelines.

Issue triage

The issue triage guidelines can be found in docs/triage_guidelines.md.

Workflows

Instructions to set up, use, and maintain a DevTools frontend checkout can be found in docs/workflows.md.

Additional references

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch