jenkins-bot has submitted this change and it was merged.

Change subject: Enable conditional loading of ACE language modes
......................................................................


Enable conditional loading of ACE language modes

require bypasses Ace's internal loadModule() logic which is capable of
on demand loading of Ace modules. Because unloaded modules are not
defined, they cannot be required, and because we don't use RL to preload
all modes (because it's a lot of bytes), currently only very few of the
available language modes were currently available.

Also validate language mode names passed to Ace.

Bug: T148518
Change-Id: I82d278920695be12aa80a79548abf8b8ce5445fd
---
M modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js
1 file changed, 8 insertions(+), 5 deletions(-)

Approvals:
  Alex Monk: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js
index 187c9d2..8cf0d44 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js
@@ -70,8 +70,8 @@
  */
 ve.ui.MWAceEditorWidget.prototype.setup = function () {
        if ( !this.loadingPromise ) {
-               this.loadingPromise = mw.loader.getState( 
'ext.codeEditor.ace.modes' ) ?
-                       mw.loader.using( 'ext.codeEditor.ace.modes' ) :
+               this.loadingPromise = mw.loader.getState( 'ext.codeEditor.ace' 
) ?
+                       mw.loader.using( 'ext.codeEditor.ace' ) :
                        $.Deferred().reject().promise();
                // Resolved promises will run synchronously, so ensure 
#setupEditor
                // runs after this.loadingPromise is stored.
@@ -327,9 +327,12 @@
 ve.ui.MWAceEditorWidget.prototype.setLanguage = function ( lang ) {
        var widget = this;
        this.loadingPromise.done( function () {
-               // TODO: Just use ace.require once T127643 is resolved
-               var require = ace.require || require;
-               widget.editor.getSession().setMode( 'ace/mode/' + ( require( 
'ace/mode/' + lang ) ? lang : 'text' ) );
+               ace.config.loadModule( 'ace/ext/modelist', function ( modelist 
) {
+                       if ( !modelist || !modelist.modesByName[ lang ] ) {
+                               lang = 'text';
+                       }
+                       widget.editor.getSession().setMode( 'ace/mode/' + lang 
);
+               } );
        } );
        return this;
 };

-- 
To view, visit https://gerrit.wikimedia.org/r/316572
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I82d278920695be12aa80a79548abf8b8ce5445fd
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: TheDJ <hartman.w...@gmail.com>
Gerrit-Reviewer: Alex Monk <a...@wikimedia.org>
Gerrit-Reviewer: Esanders <esand...@wikimedia.org>
Gerrit-Reviewer: TheDJ <hartman.w...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to