diff --git a/lib/gollum/frontend/public/javascript/editor/gollum.editor.js b/lib/gollum/frontend/public/javascript/editor/gollum.editor.js index fd6adabc..caf885a2 100755 --- a/lib/gollum/frontend/public/javascript/editor/gollum.editor.js +++ b/lib/gollum/frontend/public/javascript/editor/gollum.editor.js @@ -168,6 +168,9 @@ }, setActiveLanguage: function( name ) { + if(LanguageDefinition.getHookFunctionFor("deactivate")) { + LanguageDefinition.getHookFunctionFor("deactivate")(); + } if ( !LanguageDefinition.isLoadedFor(name) ) { LanguageDefinition._ACTIVE_LANG = null; LanguageDefinition.loadFor( name, function(x, t) { @@ -186,13 +189,33 @@ FormatSelector.updateSelected(); } + if(LanguageDefinition.getHookFunctionFor("activate")) { + LanguageDefinition.getHookFunctionFor("activate")(); + } } ); } else { LanguageDefinition._ACTIVE_LANG = name; FunctionBar.refresh(); + + if(LanguageDefinition.getHookFunctionFor("activate")) { + LanguageDefinition.getHookFunctionFor("activate")(); + } } }, + getHookFunctionFor: function(attr, specified_lang) { + if ( !specified_lang ) { + specified_lang = LanguageDefinition._ACTIVE_LANG; + } + + if ( LanguageDefinition.isLoadedFor(specified_lang) && + LanguageDefinition._LANG[specified_lang][attr] && + typeof LanguageDefinition._LANG[specified_lang][attr] == 'function' ) { + return LanguageDefinition._LANG[specified_lang][attr]; + } + + return null; + }, /** * gets a definition object for a specified attribute