2023-09-19 17:59:29 +00:00
|
|
|
# mediawiki/extensions/CodeMirror
|
|
|
|
|
|
|
|
Homepage: https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:CodeMirror
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
|
|
As part of the [upgrade to CodeMirror 6](https://phabricator.wikimedia.org/T259059),
|
|
|
|
CodeMirror now uses an asset bundler, so during development you'll need to run a script
|
|
|
|
to assemble the frontend assets.
|
|
|
|
|
|
|
|
Use of CodeMirror 6 is controlled by the `wgCodeMirrorV6` configuration setting, or by
|
|
|
|
passing in `cm6enable=1` in the URL query string.
|
|
|
|
|
|
|
|
You can find the v6 frontend source files in `src/`, the compiled sources in
|
|
|
|
`resources/dist/`, and other frontend assets managed by ResourceLoader in
|
|
|
|
`resources/*`.
|
|
|
|
|
|
|
|
### Commands
|
|
|
|
|
|
|
|
_NOTE: Consider using [Fresh](https://gerrit.wikimedia.org/g/fresh/) to run these tasks._
|
|
|
|
|
|
|
|
* `npm install` to install dependencies.
|
|
|
|
* `npm start` to run the bundler in watch mode, reassembling the files on file change.
|
|
|
|
You'll want to keep this running in a separate terminal during development.
|
|
|
|
* `npm run build` to compile the production assets. You *must* run this step before
|
|
|
|
sending the patch or CI will fail (so that sources and built assets are in sync).
|
|
|
|
* `npm test` to run the linting tools, JavaScript unit tests, and build checks.
|
|
|
|
* `npm run test:lint` for linting of JS/LESS/CSS.
|
|
|
|
* `npm run test:lint:js` for linting of just JavaScript.
|
|
|
|
* `npm run test:lint:styles` for linting of just Less/CSS.
|
|
|
|
* `npm run test:i18n` for linting of i18n messages with banana-checker.
|
|
|
|
* `npm run test:unit` for the new Jest unit tests.
|
|
|
|
* `npm run selenium-test` for the Selenium tests.
|
|
|
|
* `npm run test:bundlesize` to test if the gzip'd entrypoint is of acceptable size.
|
|
|
|
|
|
|
|
Older QUnit tests are in `resources/mode/mediawiki/tests/qunit/`. These will
|
|
|
|
eventually be moved over to `tests/qunit` and rewritten for CodeMirror 6.
|
2023-12-06 05:52:51 +00:00
|
|
|
|
|
|
|
## CodeMirror 6 change log
|
|
|
|
|
2023-12-13 07:11:24 +00:00
|
|
|
This is a list of changes that either come by default with the CodeMirror 6 upgrade,
|
|
|
|
or changes of our that we deem as reasonable improvements.
|
2023-12-06 05:52:51 +00:00
|
|
|
Some may be removed pending user feedback:
|
|
|
|
|
2023-12-13 07:11:24 +00:00
|
|
|
### Upstream changes
|
|
|
|
|
2023-12-06 05:52:51 +00:00
|
|
|
* Bracket matching now highlights unmatched brackets in red
|
2023-12-06 18:49:40 +00:00
|
|
|
|
|
|
|
### New MediaWiki mode features
|
|
|
|
|
|
|
|
* Closing HTML tags that highlighted as an error now also highlight the closing '>'
|
2023-12-13 07:11:24 +00:00
|
|
|
* Allow link titles to be both emboldened and italicized.
|
2024-01-10 00:02:44 +00:00
|
|
|
* Wikitext syntax highlighting is shown on protected pages
|
|
|
|
([T301615](https://phabricator.wikimedia.org/T301615))
|
2024-01-03 06:05:35 +00:00
|
|
|
|
2024-01-04 04:01:27 +00:00
|
|
|
### Deprecations and other changes
|
2024-01-03 06:05:35 +00:00
|
|
|
|
|
|
|
* The `.cm-mw-mnemonic` CSS class has been renamed to `.cm-mw-html-entity`
|
|
|
|
* The `.cm-mw-template-name-mnemonic` class has been removed.
|
|
|
|
Use `.cm-mw-template-ground.cm-html-entity` instead.
|
2024-01-04 04:01:27 +00:00
|
|
|
* Line-level styling for `<nowiki>`, `<pre>`, and any tag without an associated
|
|
|
|
TagMode has been removed.
|
2024-01-13 03:21:12 +00:00
|
|
|
* The browser's native search functionality (ala Ctrl+F) has been replaced with
|
|
|
|
search functionality built into CodeMirror. This is necessary to maintain
|
|
|
|
performance (see [T303664](https://phabricator.wikimedia.org/T303664)).
|