Extension:CodeMirror
- A ne pas confondre avec CodeEditor.
État de la version : stable |
|
|---|---|
| Implémentation | Interface utilisateur |
| Description | Fournit la mise en évidence de la syntaxe dans les éditeurs |
| Auteur(s) | |
| Maintenance | Community Tech |
| Dernière version | 6.0.0 |
| Politique de compatibilité | Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière. |
| PHP | 8.2+ |
|
|
| Licence | Licence publique générale GNU v2.0 ou ultérieur |
| Téléchargement | README |
| Aide | Help:Extension:CodeMirror/fr |
| Traduire l’extension CodeMirror sur translatewiki.net si elle y est disponible | |
| Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension CodeMirror fournit un éditeur indépendant avec la mise en valeur de la syntaxe pour un nombre donné de langages de programmation et de balises, y compris le wikicode, en utilisant la bibliothèque CodeMirror. Peut être utilisé avec d'autres éditeurs tels que WikiEditor, l'Éditeur de wikicode 2017, Proofread Page, et autres. Pour l'utilisation et la liste des fonctionnalités, voir Aide:Extension:CodeMirror.
En 2024–2025, l'extension a été mise à jour vers la nouvelle version majeure CodeMirror 6 et avec elle, beaucoup de nouvelles fonctionnalités ont été ajoutées.
- Pour la documentation concernant la version plus ancienne, voir Extension:CodeMirror/5.
- Pour la documentation d'aide, voir Aide:Extension:CodeMirror.
- Pour la documentation JavaScript, voir wmdoc:CodeMirror.
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
CodeMirrordans votre dossierextensions/.
Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror
- Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'CodeMirror' );
- Configurer si nécessaire.
Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Configuration
Pour activer par défaut CodeMirror sur tous les utilisateurs, ajouter ceci à votre LocalSettings.php :
# Active l’utilisation de CodeMirror par défaut dans le wikicode, mais permet encore aux utilisateurs de le désactiver
$wgDefaultUserOptions[ 'usecodemirror' ] = true;
Si CodeMirror est utilisé à la place de CodeEditor pour la modification du code, une deuxième option, usecodemirror-code a un effet, qui par défaut est mis à true.
$wgCodeMirrorEnabledModes- Drapeau temporaire de fonctionnalité pour contrôler les conflits avec Extension:CodeEditor. Voir la section ci-dessous concernant l'utilisation de CodeMirror à la place de CodeEditor pour plus d'informations.
$wgCodeMirrorConflictingGadgets- Tableau de noms de gadgets qui, s'ils sont activés, empêcheront CodeMirror de se charger. wikEd par défaut,
$wgCodeMirrorPrimaryPreferences- Préférences pour montrer le panneau des préférences de l'éditeur interne. Celles-ci doivent avoir un effet visuel clair ou être communément utilisées pour garantir un accès plus facile à la sélection de la fonctionnalité. Les préférences qui ne figurent pas ici restent disponibles dans le dialogue complet des préférences.
$wgCodeMirrorDefaultPreferences- Vérifier quelles fonctionnalités sont activées par défaut pour tous les utilisateurs. Voir ci-dessous pour d'autres informations.
$wgCodeMirrorDefaultPreferencesCode- Même chose que $wgCodeMirrorDefaultPreferences appliqué au code; c'est à dire tout mode CodeMirror différent de mediawiki (wikicode).
Préférences par défaut
Les préférences par défaut sont définies soit pour le wikicode ($wgCodeMirrorDefaultPreferences) ou pour tous les autres modes tels que JavaScript, CSS et JSON ($wgCodeMirrorDefaultPreferencesCode). Pour chaque fonctionnalité utiliser true or false pour l'activer (ou la désactiver) complètement, ou fournir un tableau contenant les Id (entiers) des espaces de noms indiquant où la fonctionnalité doit être activée par défaut.
Notez que ce paramètre de configuration ne s'applique qu'à la valeur par défaut. Les utilisateurs peuvent redéfinir les valeurs par défaut dans leurs propres préférences CodeMirror.
Lors du changement de préférence, il s'appliquera uniquement soit au wikicode (le mode mediawiki) ou hors wikicode (tous les autres modes).
Par exemple :
# Limiter la mise en valeur de l'espace blanc aux parties non wikicode.
$wgCodeMirrorDefaultPreferences[ 'whitespace' ] = false;
$wgCodeMirrorDefaultPreferencesCode[ 'whitespace' ] = true;
# restreindre l'autocomplétion de CodeMirror aux modèles et au code
$wgCodeMirrorDefaultPreferences[ 'autocomplete' ] = [ NS_TEMPLATE ];
$wgCodeMirrorDefaultPreferencesCode[ 'autocomplete' ] = true;
| Fonctionnalité | Compatibilité avec l'éditeur 2017 |
Valeur par défaut | Valeur par défaut (code)[1] |
|---|---|---|---|
activeLine |
|
| |
autocomplete |
|
| |
autofocus |
|
| |
bidiIsolation[3] |
|
| |
bracketMatching |
|
| |
closeBrackets |
|
| |
closeTags[4] |
|
| |
codeFolding |
|
| |
foldAllRefs[5] |
|
N/A | |
highlightRefs[6] |
|
N/A | |
lineNumbering |
|
| |
lineWrapping |
|
| |
lint |
|
| |
openLinks |
|
| |
specialChars |
|
| |
trailingWhitespace |
|
| |
whitespace |
|
|
Différences avec CodeMirror 5
Nouvelles fonctionnalités
- Ne nécessite plus l'utilisation de WikiEditor.
- Support pour Scribunto, JavaScript, CSS, JSON, et Vue en tant qu'alternative à CodeEditor.
- Améliorations sugnificatives des performances.
- Prise en charge de l'écriture de la droite vers la gauche (T170001) avec isolation bidirectionnelle. (T358804)
- Repli du code. (T30684)
- Autocomplétion. (T95100)
- Passage du Lint. (T381577)
- Ouverture rapide des liens avec la touche Modifier + clic. (T303392)
- Amélioration du panneau de recherche. (T371436)
- Préférences de CodeMirror. (T359498)
- Mise en valeur de la syntaxe dans DiscussionTools. (T407918)
- Mise en valeur de la syntaxe sur les pages en lecture seule. (T301615)
- Mise en valeur de la syntaxe dans Special:Upload. (T170246)
- Mise en valeur de la syntaxe dans Special:ExpandTemplates. (T384148)
- Mise en valeur de la syntaxe dans Special:AbuseFilter. (T399673)
- Mise en valeur de la syntaxe dans
Special:SecurePoll/translate. (T397871) - API JavaScript robuste pour l'intégration avec les extensions, les gadgets et les scripts utilisateur.
Obsolescence et autres modifications
- Les modules du ResourceLoader ont changé. Voir le guide de migration.
- L'accroche
ext.CodeMirror.switchest obsolète. Utiliserext.CodeMirror.toggleà la place. - La classe CSS
.cm-mw-mnemonica été renommée en.cm-mw-html-entity. - La classe CSS
.cm-mw-doubleUnderscorea été renommée en.cm-mw-double-underscore. - La classe
.cm-mw-template-name-mnemonica été supprimée. Utiliser.cm-mw-template-ground.cm-html-entityà la place. - Les classes CSS
.cm-mw-apostrophes-boldet.cm-mw-apostrophes-italicont été supprimées. Utiliser.cm-mw-apostrophesà la place. - Le style du niveau de la ligne pour
<nowiki>,<pre>, ou toute balise sans TagMode associé, a été supprimé (T351686). - Avoir différentes langues présentes dans le wikicode n'est pas encore pris en charge (T357480).
- La fonctionnalité de recherche native du navigateur (utilisant Ctrl+F) a été remplacée par la fonctionnalité de recherche intégrée à CodeMirror. Ceci est nécessaire pour maintenir les performances (T303664).
Guide de migration
| Version de MediaWiki : | ≥ 1.45 |
Ce guide s'applique à MediaWiki 1.45+. Depuis MediaWiki 1.46, CodeMirror 5 n'est plus pris en charge..
Configuration MediaWiki
$wgCodeMirrorLineNumberingNamespacesest obsolète. Configurer$wgCodeMirrorDefaultPreferencesà la place.
Modules du ResourceLoader
Vérifiez que vous utilisez les modules ResourceLoader corrects. Parce que CodeMirror 6 ne dépend plus de WikiEditor, il y a quelques changements de noms et de comportement par rapport à l'équivalent de CodeMirror 5 :
Certains noms de module sont affichés sans le préfixe ext.CodeMirror par facilité; remplacer '…' lors de l'utilisation.
| Ancien module | Ancien module (MW 1.45) | Nouveau module (MW 1.46+) | Description |
|---|---|---|---|
ext.CodeMirror
|
….v6.init
|
….init
|
Intégration de CodeMirror pour WikiEditor sur #wpTextbox1 (zone textuelle normale d'édition).
|
| N/A | ….v6.WikiEditor
|
….WikiEditor
|
Exporte la classe CodeMirrorWikiEditor |
| N/A | ….v6.init
|
….init
|
CodeMirror pour #wpTextbox1 et autres pages prises en charge.
|
….lib
|
….v6.lib
|
….lib
|
Exporte les symboles internes de CodeMirror. |
….addons
|
N/A | N/A | Ceci inclut la fonction de correspondance des crochets dans CodeMirror 5. La détection des crochets est le comportement par défaut de CodeMirror 6. |
….mode.mediawiki
|
….v6.mode.mediawiki
|
….mode.mediawiki
|
Mode de la langue de MediaWiki. |
| N/A | ext.CodeMirror.v6
|
ext.CodeMirror
|
Export la classe CodeMirror. |
….visualEditor
|
….visualEditor.init
|
….visualEditor.init
|
Intégration avec Éditeur de wikicode 2017. |
….lib.mode.php
|
N/A | CodeMirror 6 fournira éventuellement certains ou l'ensemble de ces modes, mais ils ne seront pas disponibles séparément en tant que modules. | |
….lib.mode.clike
|
|||
….lib.mode.htmlmixed
|
|||
….lib.mode.xml
|
|||
….lib.mode.javascript
|
….v6.modes
|
….modes
|
Ces langues sont prises en charge dans CodeMirror 6. |
….lib.mode.css
| |||
| N/A | |||
| N/A | |||
| N/A |
Avec la sortie de MediaWiki 1.46, les anciens modules sont remplacés par les nouveaux, et les modules .v6 sont complètement supprimés.
Gadgets et scripts utilisateur
La variable globale CodeMirror a été supprimée entièrement.
Par exemple CodeMirror.fromTextArea( myTextarea ) ne va plus fonctionner.
A la place, chargez d'abord les modules du ResourceLoader désirés, instanciez un objet CodeMirror, et appelez la méthode initialize() .
Si votre script s'appuie sur l'accroche ext.CodeMirror.switch pour modifier la manière dont il interagit avec l'éditeur, vous devrez utiliser l'accroche ext.CodeMirror.toggle à la place, ou alternativement écouter un événement.
Voir la section sur l'intégration de JavaScript pour plus d'informations.
CSS
L'élément .CodeMirror n'existe plus.
Utilisez à la place .cm-editor pour l'ensemble du DOM codeMirror, ou .cm-content pour le contenu interne (n'inclut pas le panneau de recherche, par exemple).
Voir l'obsolescence et les autres modifications des autres classes CSS.
Intégration
Extensions MediaWiki
Utiliser CodeMirror au lieu de CodeEditor
| Version de MediaWiki : | ≥ 1.44 |
À partir de MediaWiki 1.44, CodeMirror prend en charge la mise en valeur des langages Lua, JavaScript, CSS, JSON et Vue. Il peut être utilisé comme une alternative à Extension:CodeEditor.
Notez cependant que pas toutes les extensions qui s'intègrent avec CodeEditor ont été mises à jour pour prendre en charge CodeMirror. Si vous utilisez l'une de ces extensions, vous voudrez peut-être garder CodeEditor installé sur votre wiki :
- Extension:VisualEditor – utilise les modules CodeEditor pour propulser la mise en valeur de la syntaxe pour d'autres extensions intégrant VisualEditor (T400014) :
- Extension:WikiLambda – le module
ext.wikilambda.apps'appuie sur CodeEditor (T400015).
À partir de MediaWiki 1.45, pour que cela fonctionne, vous devrez ajuster $wgCodeMirrorEnabledModes en conséquence, ainsi que *UseCodeEditor et *UseCodeMirror pour toutes les extensions applicables que vous avez également installées :
// modes souhaités devant utiliser CodeMirror (Mediawiki, par ex. wikitext, est activé par défaut)
$wgCodeMirrorEnabledModes['javascript'] = true;
$wgCodeMirrorEnabledModes['json'] = true;
$wgCodeMirrorEnabledModes['css'] = true;
$wgCodeMirrorEnabledModes['lua'] = true;
$wgCodeMirrorEnabledModes['vue'] = true;
// si vous utilisez également CodeEditor désactivez-y les mêmes modes
$wgCodeEditorEnabledModes['javascript'] = false;
$wgCodeEditorEnabledModes['json'] = false;
$wgCodeEditorEnabledModes['css'] = false;
$wgCodeEditorEnabledModes['lua'] = false;
$wgCodeEditorEnabledModes['vue'] = false;
// AbuseFilter (notez qu'il n'y a pas de ''mode'' correspondant à définir ci-dessus)
$wgAbuseFilterUseCodeEditor = false;
$wgAbuseFilterUseCodeMirror = true;
// gadgets (pour modifier les pages JSON de définition des gadgets)
$wgGadgetsDefinitionsUseCodeEditor = false;
$wgGadgetsDefinitionsUseCodeMirror = true;
// JsonConfig
$wgJsonConfigUseCodeEditor = false;
$wgJsonConfigUseCodeMirror = true;
// Scribunto (pour la modification des pages de Modules qui utilisent le mode "lua")
$wgScribuntoUseCodeEditor = false;
$wgScribuntoUseCodeMirror = true;
// TemplateStyles
$wgTemplateStylesUseCodeEditor = false;
$wgTemplateStylesUseCodeMirror = true;
// UploadWizard (pour éditer les pages JSON de Campaign)
$wgUploadWizardUseCodeEditor = false;
$wgUploadWizardUseCodeMirror = true;
Enregistrer une nouvelle balise pour MediaWiki
Si vous voulez simplement que CodeMirror reconnaisse une balise ajoutée par une extension, vous pouvez faire ainsi en utilisant l'attribut de l'extension CodeMirrorTagModes.
Par exemple, pour enregistrer la balise <foo> comme quelque chose contenant du wikicode, vous ajouterez ceci à extension.json :
{
"attributes": {
"CodeMirror": {
"TagModes": [
"foo": "mediawiki"
]
}
}
}
CodeMirror mettra alors en valeur le contenu à l'intérieur de <foo>...</foo> comme du wikicode.
Enregistrer une balise afin que CodeMirror traite le contenu comme autre chose que du wikicode n'est pas actuellement pris en charge (T357480).
Si une balise n'est pas enregistrée, CodeMirror mettra en évidence le contenu comme étant autre chose que du wikicode, de la même manière qu'il met en évidence le contenu de la balise <nowiki>...</nowiki>.
Accroche PHP
| Version de MediaWiki : | ≥ 1.44 |
Depuis MediaWiki 1.44, le moyen préféré d'intégrer CodeMirror en PHP est l'implémentation de l'interface CodeMirrorGetModeHook :
class CodeMirrorHooks implements CodeMirrorGetModeHook {
public function onCodeMirrorGetMode(Title $title, ?string &$mode, string $model ): bool {
// Logique pour déterminer si CodeMirror doit être utilisé
if ( $title->hasContentModel( 'JsonLikeContentModel' ) ) {
$mode = 'json';
return false;
}
return true;
}
}
Enregistrer l'accroche dans extension.json :
"Hooks": {
"CodeMirrorGetMode": "codemirror"
},
"HookHandlers": {
"codemirror": {
"class": "MediaWiki\\Extension\\MyExtension\\CodeMirrorHooks"
}
}
Modules greffons
CodeMirrorPluginModules est un attribut d'extension qui permet de charger en parallèle un module avec CodeMirror.
Ceci charge systématiquement le module à chaque fois que le module ext.CodeMirror est chargé.
extension.json:
{
"attributes": {
"CodeMirror": {
"PluginModules": [
"ext.MyExtension.CodeMirror"
]
}
}
}
JavaScript
L'éditeur CodeMirror n'est pas une zone de texte actuelle, mais un contenu éditable. Habituellement les développeurs doivent vérifier que leur coe fonctionne avec les deux état donné que CodeMirror peut être désactivé.
Pour détecter la modification du document, la manière la plus simple est d'utiliser un événement ou une accroche. Pour la lecture et les modifications, jQuery.textSelection peut s'avérer pratique.
Pour des intégrations plus complexes ou celles qui nécessitent de meilleures performances, vous pouvez ajouter votre propre exetension à une nouvelle instance (ou une instance existante) de CodeMirror.
Utiliser jQuery.textSelection
Si vous souhaitez simplement récupérer ou faire des modifications dans le texte du document, jQuery.textSelection est la manière la plus facile et la plus fiable pour le faire. L'utilisation de jQuery.textSelection sur la zone de texte est liée à CodeMirror, vous n'avez donc pas besoin de savoir si CodeMirror est activé ou pas :
const $textarea = $( '#wpTextbox1' )
const content = $textarea.textSelection( 'getContents' );
// Append "Foobar" to the content.
$textarea.textSelection( 'setContents', content + '\nFoobar' );
jQuery's .val() sur #wpTextbox1 ne peut pas être utilisé,[8] mais cela n'est pas recommandé et peut ne pas fonctionner avec tous les éditeurs, tels que Éditeur de wikicode 2017.
Utiliser le ResourceLoader
L'extension CodeMirror fournit un nombre de modules ResourceLoader à utiliser par les scripts utilisateurs, les gadgets, et les extensions.
Pour utiliser CodeMirror, vous aurez besoin au minimum du module ext.CodeMirror avec le mode souhaité.
Les modes peuvent être extraits à partir des modules ResourceLoader, en utilisant une méthode exportée portant le même nom que le mode.
Pour MediaWiki, utiliser ext.CodeMirror.mode.mediawiki, et pour JavaScript, JSON, CSS, Vue et Lua, utiliser ext.CodeMirror.modes :
const require = await mw.loader.using( [ 'ext.CodeMirror', 'ext.CodeMirror.mode.mediawiki' ] );
const CodeMirror = require( 'ext.CodeMirror' );
const { mediawiki } = require( 'ext.CodeMirror.mode.mediawiki' );
const cm = new CodeMirror( myTextarea, mediawiki() );
cm.initialize();
Et si vous souhaitez aussi WikiEditor :
const require = await mw.loader.using( [
'ext.wikiEditor',
'ext.CodeMirror.WikiEditor',
'ext.CodeMirror.mode.mediawiki'
] );
const textarea = document.getElementById( 'wpTextbox1' );
mw.addWikiEditor( $( textarea ) );
const CodeMirrorWikiEditor = require( 'ext.CodeMirror.WikiEditor' );
const { mediawiki } = require( 'ext.CodeMirror.mode.mediawiki' );
const cmWe = new CodeMirrorWikiEditor( textarea, mediawiki() );
cmWe.mode = 'mediawiki';
cmWe.initialize();
Créer une nouvelle instance JavaScript :
const require = await mw.loader.using( [ 'ext.CodeMirror', 'ext.CodeMirror.modes' ] );
const CodeMirror = require( 'ext.CodeMirror' );
const { javascript } = require( 'ext.CodeMirror.modes' );
const cm = new CodeMirror( myTextarea, javascript() );
cm.initialize();
| Module | Description |
|---|---|
ext.CodeMirror.lib
|
Bibliothèque du noyau CodeMirror. A initialiser que si vous souhaitez utiliser une API CodeMirror de l'amont. |
ext.CodeMirror
|
Intégration de base de CodeMirror pour les éditeurs de MediaWiki. Ce module exporte la classe CodeMirror. |
ext.CodeMirror.WikiEditor
|
Intégration de CodeMirror pour WikiEditor. Ce module exporte la classe CodeMirrorWikiEditor. |
ext.CodeMirror.mode.mediawiki
|
Exporte le mode mediawiki pour mettre en valeur le wikicode MediaWiki.
|
ext.CodeMirror.modes
|
Comprend les modes suivants : javascript, json, css, vue, lua.
|
ext.CodeMirror.init(interne) |
Point d'entrée principal pour les requêtes action=edit. Non destiné à une utilisation externe. |
ext.CodeMirror.visualEditor.init(interne) |
Intégration de CodeMirror avec Éditeur de wikicode 2017, et seulement pour wikitext. |
Utiliser les accroches
Vous pouvez aussi intégrer CodeMirror en utilisant les accroches de l'interface utilisateur. Celles-ci vous permettent d'exécuter du code juste avant ou après que CodeMirror se soit chargé, ou ait réagi à la modification du document.
| Accroche | Description |
|---|---|
ext.CodeMirror.initialize
|
Appelé juste avant l'initialisation de CodeMirror. Cela peut être utilisé pour manipuler le DOM pour qu'il corresponde à CodeMirror (par exemple, si vous manipulez le DOM de WikiEditor, vous en aurez peut-être besoin).
Paramètres
|
ext.CodeMirror.ready
|
Appelé juste après que CodeMirror ait été initialisé.
Paramètres
|
ext.CodeMirror.toggle
|
Appelé lorsque CodeMirror est activé ou désactivé.
Paramètres
|
ext.CodeMirror.destroy
|
Appelé juste après que CodeMirror soit détruit et que la zone de texte originale soit restituée.
Paramètres
|
ext.CodeMirror.input
|
Appelé lorsque des modifications du document sont faites dans CodeMirror. Notez que la zone de texte peut ne pas encore être à jour.
Paramètres
|
ext.CodeMirror.preferences.ready
|
Lancé juste avant que CodeMirrorPreferences soit instancié.
Paramètres
|
ext.CodeMirror.preferences.apply
|
Lancé quand une préférence de CodeMirror est activée ou appliquée initialement.
Paramètres
|
ext.CodeMirror.preferences.apply
|
Déclenché lorsqu'une préférence CodeMirror est modifiée ou appliquée initialement dans une session d'édition.
Paramètres
|
ext.CodeMirror.preferences.display(interne) |
Déclenché lorsque le panneau des préférences est construit, juste avant son affichage.
Paramètres
|
ext.CodeMirror.gotoLine(interne) |
Déclenché lorsque le panneau de passage à la ligne est ouvert ou fermé. |
ext.CodeMirror.keymap(interne) |
Déclenché lorsque le dialogue d'aide du raccourci clavier est ouvert. |
ext.CodeMirror.search(interne) |
Déclenché lorsque le panneau de recherche est ouvert ou fermé. |
Utiliser les événements
Les événements suivants sont liés à la zone de texte par facilité pour les développeurs :
En utilisant ces événements, vous pouvez intégrer CodeMirror en utilisant le même code que la zone de texte originale :
myTextarea.addEventListener( 'keyup', ( event ) => {
console.log( event.key );
} );
Etendre CodeMirror
Vous pouvez importer le module ext.CodeMirror.lib pour accéder à l'API CodeMirror amont.
Avec ceci, vous pouvez fournir votre propre extension lorsque vous instanciez un objet CodeMirror ou CodeMirrorWikiEditor.
Par exemple, pour fournir votre propre extension qui réagit aux modifications faites dans CodeMirror :
const require = await mw.loader.using( [ 'ext.CodeMirror', 'ext.CodeMirror.mode.mediawiki' ] );
const CodeMirror = require( 'ext.CodeMirror' );
const { mediawiki } = require( 'ext.CodeMirror.mode.mediawiki' );
// ext.CodeMirror.lib est une dépendance de ext.CodeMirror, donc à cette étape il est déjà chargé
const { EditorView } = require( 'ext.CodeMirror.lib' );
const myExtension = EditorView.updateListener.of( ( /** @type {ViewUpdate} */ update ) => {
if ( update.docChanged ) {
// instructions...
console.log( update.changes );
}
} );
const cm = new CodeMirror( myTextarea, mediawiki() );
cm.initialize( [ cm.defaultExtensions, myExtension ] );
Ou si vous voulez interagir avec une instance existante de CodeMirror :
// Vérifier d'abord que CodeMirror est initialisé
mw.hook( 'ext.CodeMirror.ready' ).add( ( cm ) => {
const { EditorView } = require( 'ext.CodeMirror.lib' );
const myExtension = EditorView.updateListener.of( ( /** @type {ViewUpdate} */ update ) => {
if ( update.docChanged ) {
// faire quelque chose
console.log( update.changes );
}
} );
cm.applyExtension( myExtension );
} );
D'autres manières de suivre les modifications est d'utiliser l'accroche ext.CodeMirror.input :
mw.hook( 'ext.CodeMirror.input' ).add( ( update ) => {
// Imprime le ChangeSet à la console
console.log( update.changes.toJSON() );
} );
Historique des versions
- novembre 2024 – La version CodeMirror 6 de l'extension a été introduite en version bêta.
- – Après deux ans de développement et de test, l'"Amélioration de la mise en valeur de la syntaxe" (CodeMirror 6) a été officiellement promue hors de la version bêta. Cette mise à jour a apporté des fonctionnalités avancées telles que le repli du code, l'autocomplétion et le lint à tous les utilisateurs de l'outil de mise en valeur de la syntaxe standard, tout en améliorant considérablement la lisibilité du wikicode.[10]
Voir aussi
- User:Remember the dot/Syntax highlighter
- Extension:VisualEditor
- Extension:WikiEditor
- Extension:CodeEditor
- c:Category:MediaWiki extension CodeMirror
Notes
- ↑
$wgCodeMirrorDefaultPreferencesCode - ↑ Le focus est toujours mis sur l'éditeur dans l'éditeur 2017.
- ↑ Cette fonctionnalité n'est pas encore stable.
- ↑ N'a d'effet que dans du wikicode.
- ↑ Uniquement applicable au wikicode.
- ↑ Uniquement applicable au wikicode.
- ↑ Le repli des lignes ne peut pas être désactivé dans l'éditeur 2017.
- ↑ phab:T384556
- ↑ Cet événement n'est pas déclenché pour le wikicode (T401271)
- ↑ Tech News 2026 – Issue 17, Wikimedia Diff. Published April 20, 2026.
| Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
| Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : |
- Stable extensions/fr
- User interface extensions/fr
- EditPage::showEditForm:initial extensions/fr
- EditPage::showReadOnlyForm:initial extensions/fr
- GetBetaFeaturePreferences extensions/fr
- GetPreferences extensions/fr
- PreferencesFormPreSave extensions/fr
- SpecialPageBeforeExecute extensions/fr
- UploadForm:initial extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Extensions used on Wikimedia/fr
- Extensions included in Canasta/fr
- Extensions included in Fandom/fr
- Extensions included in Miraheze/fr
- Extensions included in MyWikis/fr
- Extensions included in ProWiki/fr
- Extensions included in Telepedia/fr
- Extensions included in Weird Gloop/fr
- Extensions included in wiki.gg/fr
- Syntax highlighting extensions/fr
