Go to file
MusikAnimal c0155b0755 Hooks: restore respect of $wgCodeMirrorLineNumberingNamespaces in CM5
Restore the ResourceLoaderGetConfigVars hook which CodeMirror 5 still
relies on when it checks $wgCodeMirrorLineNumberingNamespaces.
In CM6, this is set in the config provided by DataScript.php.

Partially reverts I67518c0968

Bug: T347211
Follow-Up: I67518c0968f64c79e290f57b4884d30a161212d3
Change-Id: Id34858da68f7e08d16f8d1312bbbd355ccf8d140
2024-03-28 03:38:24 +00:00
.phan Add phan 2019-04-09 20:35:56 +02:00
i18n Localisation updates from https://translatewiki.net. 2024-03-25 08:35:35 +01:00
includes Hooks: restore respect of $wgCodeMirrorLineNumberingNamespaces in CM5 2024-03-28 03:38:24 +00:00
resources CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
src CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
tests CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
.babelrc Implement core MediaWiki stream parser for CodeMirror 6 2024-01-02 23:18:32 -05:00
.eslintignore build: add /vendor to .eslintignore 2024-02-07 11:10:17 +02:00
.eslintrc.json eslint: Lint Gruntile.js using server rules 2022-02-07 16:25:32 +00:00
.gitignore CodeMirror6: add new modules, feature flag, and URL query parameter 2023-10-09 19:51:24 -04:00
.gitreview Whoops, track not trace 2016-10-24 17:02:17 -07:00
.nvmrc .nvmrc: Update now we're using Node 18 2024-01-11 11:05:51 -05:00
.phpcs.xml build: Updating eslint-config-wikimedia to 0.18.2 2021-03-06 09:27:20 +00:00
.stylelintrc.json CodeMirror6: add new modules, feature flag, and URL query parameter 2023-10-09 19:51:24 -04:00
CODE_OF_CONDUCT.md build: Updating mediawiki/phan-taint-check-plugin to 1.3.0 2018-08-19 10:46:12 +00:00
composer.json build: Updating mediawiki/mediawiki-codesniffer to 43.0.0 2024-03-17 16:17:35 +00:00
COPYING CodeMirror: Add COPYING file and credit for CodeMirror authors 2020-03-02 21:34:06 +00:00
extension.json Hooks: restore respect of $wgCodeMirrorLineNumberingNamespaces in CM5 2024-03-28 03:38:24 +00:00
jest.config.js CodeMirror6: add new modules, feature flag, and URL query parameter 2023-10-09 19:51:24 -04:00
package-lock.json CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
package.json CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
README.md CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00
rollup.config.js CM6: Switch to using Rollup instead of Webpack; make RL-compatible 2024-03-19 22:48:52 -04:00

mediawiki/extensions/CodeMirror

Homepage: https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:CodeMirror

Development

As part of the upgrade to CodeMirror 6, 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 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.

Older QUnit tests are in resources/mode/mediawiki/tests/qunit/. These will eventually be moved over to tests/qunit and rewritten for CodeMirror 6.

CodeMirror 6 change log

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. Some may be removed pending user feedback:

Upstream changes

  • Bracket matching now highlights unmatched brackets in red

New MediaWiki mode features

  • Closing HTML tags that highlighted as an error now also highlight the closing '>'
  • Allow link titles to be both emboldened and italicized.
  • Wikitext syntax highlighting is shown on protected pages (T301615)

Deprecations and other changes

  • 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.
  • Line-level styling for <nowiki>, <pre>, and any tag without an associated TagMode has been removed.
  • 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).