71 'BrokenRedirects' => \BrokenRedirectsPage::class,
72 'Deadendpages' => \DeadendPagesPage::class,
73 'DoubleRedirects' => \DoubleRedirectsPage::class,
74 'Longpages' => \LongPagesPage::class,
75 'Ancientpages' => \AncientPagesPage::class,
76 'Lonelypages' => \LonelyPagesPage::class,
77 'Fewestrevisions' => \FewestrevisionsPage::class,
78 'Withoutinterwiki' => \WithoutInterwikiPage::class,
79 'Protectedpages' => \SpecialProtectedpages::class,
80 'Protectedtitles' => \SpecialProtectedtitles::class,
81 'Shortpages' => \ShortPagesPage::class,
82 'Uncategorizedcategories' => \UncategorizedCategoriesPage::class,
83 'Uncategorizedimages' => \UncategorizedImagesPage::class,
84 'Uncategorizedpages' => \UncategorizedPagesPage::class,
85 'Uncategorizedtemplates' => \UncategorizedTemplatesPage::class,
86 'Unusedcategories' => \UnusedCategoriesPage::class,
87 'Unusedimages' => \UnusedimagesPage::class,
88 'Unusedtemplates' => \UnusedtemplatesPage::class,
89 'Unwatchedpages' => \UnwatchedpagesPage::class,
90 'Wantedcategories' => \WantedCategoriesPage::class,
91 'Wantedfiles' => \WantedFilesPage::class,
92 'Wantedpages' => \WantedPagesPage::class,
93 'Wantedtemplates' => \WantedTemplatesPage::class,
96 'Allpages' => \SpecialAllPages::class,
97 'Prefixindex' => \SpecialPrefixindex::class,
98 'Categories' => \SpecialCategories::class,
99 'Listredirects' => \ListredirectsPage::class,
100 'PagesWithProp' => \SpecialPagesWithProp::class,
101 'TrackingCategories' => \SpecialTrackingCategories::class,
104 'Userlogin' => \SpecialUserLogin::class,
105 'Userlogout' => \SpecialUserLogout::class,
106 'CreateAccount' => \SpecialCreateAccount::class,
107 'LinkAccounts' => \SpecialLinkAccounts::class,
108 'UnlinkAccounts' => \SpecialUnlinkAccounts::class,
109 'ChangeCredentials' => \SpecialChangeCredentials::class,
110 'RemoveCredentials' => \SpecialRemoveCredentials::class,
113 'Activeusers' => \SpecialActiveUsers::class,
114 'Block' => \SpecialBlock::class,
115 'Unblock' => \SpecialUnblock::class,
116 'BlockList' => \SpecialBlockList::class,
117 'AutoblockList' => \SpecialAutoblockList::class,
118 'ChangePassword' => \SpecialChangePassword::class,
119 'BotPasswords' => \SpecialBotPasswords::class,
120 'PasswordReset' => \SpecialPasswordReset::class,
121 'DeletedContributions' => \DeletedContributionsPage::class,
122 'Preferences' => \SpecialPreferences::class,
123 'ResetTokens' => \SpecialResetTokens::class,
124 'Contributions' => \SpecialContributions::class,
125 'Listgrouprights' => \SpecialListGroupRights::class,
126 'Listgrants' => \SpecialListGrants::class,
127 'Listusers' => \SpecialListUsers::class,
128 'Listadmins' => \SpecialListAdmins::class,
129 'Listbots' => \SpecialListBots::class,
130 'Userrights' => \UserrightsPage::class,
131 'EditWatchlist' => \SpecialEditWatchlist::class,
132 'PasswordPolicies' => \SpecialPasswordPolicies::class,
135 'Newimages' => \SpecialNewFiles::class,
136 'Log' => \SpecialLog::class,
137 'Watchlist' => \SpecialWatchlist::class,
138 'Newpages' => \SpecialNewpages::class,
139 'Recentchanges' => \SpecialRecentChanges::class,
140 'Recentchangeslinked' => \SpecialRecentChangesLinked::class,
141 'Tags' => \SpecialTags::class,
144 'Listfiles' => \SpecialListFiles::class,
145 'Filepath' => \SpecialFilepath::class,
146 'MediaStatistics' => \MediaStatisticsPage::class,
147 'MIMEsearch' => \MIMEsearchPage::class,
148 'FileDuplicateSearch' => \FileDuplicateSearchPage::class,
149 'Upload' => \SpecialUpload::class,
150 'UploadStash' => \SpecialUploadStash::class,
151 'ListDuplicatedFiles' => \ListDuplicatedFilesPage::class,
154 'ApiSandbox' => \SpecialApiSandbox::class,
155 'Statistics' => \SpecialStatistics::class,
156 'Allmessages' => \SpecialAllMessages::class,
157 'Version' => \SpecialVersion::class,
158 'Lockdb' => \SpecialLockdb::class,
159 'Unlockdb' => \SpecialUnlockdb::class,
162 'LinkSearch' => \LinkSearchPage::class,
163 'Randompage' => \RandomPage::class,
164 'RandomInCategory' => \SpecialRandomInCategory::class,
165 'Randomredirect' => \SpecialRandomredirect::class,
166 'Randomrootpage' => \SpecialRandomrootpage::class,
167 'GoToInterwiki' => \SpecialGoToInterwiki::class,
170 'Mostlinkedcategories' => \MostlinkedCategoriesPage::class,
171 'Mostimages' => \MostimagesPage::class,
172 'Mostinterwikis' => \MostinterwikisPage::class,
173 'Mostlinked' => \MostlinkedPage::class,
174 'Mostlinkedtemplates' => \MostlinkedTemplatesPage::class,
175 'Mostcategories' => \MostcategoriesPage::class,
176 'Mostrevisions' => \MostrevisionsPage::class,
179 'ComparePages' => \SpecialComparePages::class,
180 'Export' => \SpecialExport::class,
181 'Import' => \SpecialImport::class,
182 'Undelete' => \SpecialUndelete::class,
183 'Whatlinkshere' => \SpecialWhatLinksHere::class,
184 'MergeHistory' => \SpecialMergeHistory::class,
185 'ExpandTemplates' => \SpecialExpandTemplates::class,
188 'Booksources' => \SpecialBookSources::class,
191 'ApiHelp' => \SpecialApiHelp::class,
192 'Blankpage' => \SpecialBlankpage::class,
193 'Diff' => \SpecialDiff::class,
194 'EditTags' => \SpecialEditTags::class,
195 'Emailuser' => \SpecialEmailUser::class,
196 'Movepage' => \MovePageForm::class,
197 'Mycontributions' => \SpecialMycontributions::class,
198 'MyLanguage' => \SpecialMyLanguage::class,
199 'Mypage' => \SpecialMypage::class,
200 'Mytalk' => \SpecialMytalk::class,
201 'Myuploads' => \SpecialMyuploads::class,
202 'AllMyUploads' => \SpecialAllMyUploads::class,
203 'PermanentLink' => \SpecialPermanentLink::class,
204 'Redirect' => \SpecialRedirect::class,
205 'Revisiondelete' => \SpecialRevisionDelete::class,
206 'RunJobs' => \SpecialRunJobs::class,
207 'Specialpages' => \SpecialSpecialpages::class,
208 'PageData' => \SpecialPageData::class,
248 if ( !is_array( $this->
list ) ) {
249 $this->
list = self::$coreList;
251 if ( !$this->config->get(
'DisableInternalSearch' ) ) {
252 $this->
list[
'Search'] = \SpecialSearch::class;
255 if ( $this->config->get(
'EmailAuthentication' ) ) {
256 $this->
list[
'Confirmemail'] = \EmailConfirmation::class;
257 $this->
list[
'Invalidateemail'] = \EmailInvalidation::class;
260 if ( $this->config->get(
'EnableEmail' ) ) {
261 $this->
list[
'ChangeEmail'] = \SpecialChangeEmail::class;
264 if ( $this->config->get(
'EnableJavaScriptTest' ) ) {
265 $this->
list[
'JavaScriptTest'] = \SpecialJavaScriptTest::class;
268 if ( $this->config->get(
'PageLanguageUseDB' ) ) {
269 $this->
list[
'PageLanguage'] = \SpecialPageLanguage::class;
271 if ( $this->config->get(
'ContentHandlerUseDB' ) ) {
272 $this->
list[
'ChangeContentModel'] = \SpecialChangeContentModel::class;
280 Hooks::run(
'SpecialPage_initList', [ &$this->
list ] );
294 if ( is_null( $this->aliases ) ) {
295 $aliases = $this->contLang->getSpecialPageAliases();
296 $pageList = $this->getPageList();
302 foreach ( $pageList as $name => $stuff ) {
303 $caseFoldedAlias = $this->contLang->caseFold( $name );
310 foreach ( $aliases as $realName => $aliasList ) {
312 foreach ( $aliasList as $i => $alias ) {
313 $caseFoldedAlias = $this->contLang->caseFold( $alias );
315 if (
isset( $this->aliases[$caseFoldedAlias] ) &&
316 $realName === $this->aliases[$caseFoldedAlias]
322 if ( !
isset( $keepAlias[$caseFoldedAlias] ) ) {
328 wfWarn(
"First alias '$alias' for $realName conflicts with " .
329 "{$keepAlias[$caseFoldedAlias]} alias for " .
330 $this->aliases[$caseFoldedAlias]
338 return $this->aliases;
350 $bits = explode(
'/', $alias, 2 );
352 $caseFoldedAlias = $this->contLang->caseFold( $bits[0] );
353 $caseFoldedAlias =
str_replace(
' ',
'_', $caseFoldedAlias );
354 $aliases = $this->getAliasList();
355 if ( !
isset( $aliases[$caseFoldedAlias] ) ) {
356 return [
null,
null ];
359 $par = $bits[1] ??
null;
361 return [
$name, $par ];
371 list( $title, ) = $this->resolveAlias( $name );
373 $specialPageList = $this->getPageList();
374 return isset( $specialPageList[$title] );
384 list( $realName, ) = $this->resolveAlias( $name );
386 $specialPageList = $this->getPageList();
388 if (
isset( $specialPageList[$realName] ) ) {
389 $rec = $specialPageList[$realName];
409 wfLogWarning(
"Cannot instantiate special page $realName: bad spec!" );
425 foreach ( $this->getPageList() as $name => $rec ) {
426 $page = $this->getPage( $name );
428 $page->setContext( RequestContext::getMain() );
429 if ( $page->isListed()
430 && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
432 $pages[
$name] = $page;
447 foreach ( $this->getPageList() as $name => $rec ) {
448 $page = $this->getPage( $name );
449 if ( $page && $page->isListed() && !$page->isRestricted() ) {
450 $pages[
$name] = $page;
466 foreach ( $this->getPageList() as $name => $rec ) {
467 $page = $this->getPage( $name );
470 && $page->isRestricted()
471 && $page->userCanExecute( $user )
473 $pages[
$name] = $page;
499 $bits = explode(
'/', $title->getDBkey(), 2 );
501 $par = $bits[1] ??
null;
503 $page = $this->getPage( $name );
505 $context->getOutput()->setArticleRelated(
false );
506 $context->getOutput()->setRobotPolicy(
'noindex,nofollow' );
510 $context->getOutput()->setStatusCode( 404 );
513 $context->getOutput()->showErrorPage(
'nosuchspecialpage',
'nospecialpagetext' );
520 $trxLimits =
$context->getConfig()->get(
'TrxProfilerLimits' );
521 $trxProfiler = Profiler::instance()->getTransactionProfiler();
522 if (
$context->getRequest()->wasPosted() && !$page->doesWrites() ) {
523 $trxProfiler->setExpectations( $trxLimits[
'POST-nonwrite'], __METHOD__ );
524 $context->getRequest()->markAsSafeRequest();
537 if ( $name != $page->getLocalName() && !
$context->getRequest()->wasPosted() ) {
540 $title = $page->getPageTitle( $par );
541 $url = $title->getFullURL(
$query );
542 $context->getOutput()->redirect( $url );
547 $context->setTitle( $page->getPageTitle( $par ) );
548 }
elseif ( !$page->isIncludable() ) {
552 $page->including( $including );
582 $main = RequestContext::getMain();
593 'title' => $main->getTitle(),
594 'output' => $main->getOutput(),
595 'request' => $main->getRequest(),
596 'user' => $main->getUser(),
597 'language' => $main->getLanguage(),
599 if ( $main->canUseWikiPage() ) {
600 $ctx[
'wikipage'] = $main->getWikiPage();
609 $main->setTitle( $title );
610 $main->setOutput(
$context->getOutput() );
611 $main->setRequest(
$context->getRequest() );
612 $main->setUser(
$context->getUser() );
613 $main->setLanguage(
$context->getLanguage() );
622 $wgUser = $glob[
'user'];
624 $main->setTitle( $ctx[
'title'] );
625 $main->setOutput( $ctx[
'output'] );
626 $main->setRequest( $ctx[
'request'] );
627 $main->setUser( $ctx[
'user'] );
628 $main->setLanguage( $ctx[
'language'] );
629 if (
isset( $ctx[
'wikipage'] ) ) {
630 $main->setWikiPage( $ctx[
'wikipage'] );
644 $aliases = $this->contLang->getSpecialPageAliases();
645 $aliasList = $this->getAliasList();
648 if (
isset( $aliases[$name] ) ) {
650 foreach ( $aliases[$name] as $alias ) {
651 $caseFoldedAlias = $this->contLang->caseFold( $alias );
652 $caseFoldedAlias =
str_replace(
' ',
'_', $caseFoldedAlias );
653 if (
isset( $aliasList[$caseFoldedAlias] ) &&
654 $aliasList[$caseFoldedAlias] === $name
662 wfWarn(
"Did not find a usable alias for special page '$name'. " .
663 "It seems all defined aliases conflict?" );
668 foreach ( $aliases as $n => $values ) {
670 wfWarn(
"Found alias defined for $n when searching for " .
671 "special page aliases for $name. Case mismatch?" );
672 return $this->getLocalNameFor( $n, $subpage );
677 wfWarn(
"Did not find alias for special page '$name'. " .
678 "Perhaps no aliases are defined for it?" );
681 if ( $subpage !==
false && !
is_null( $subpage ) ) {
684 $name =
"$name/$subpage";
687 return $this->contLang->ucfirst( $name );
697 list( $name, $subpage ) = $this->resolveAlias( $alias );
698 if ( $name !=
null ) {
699 return SpecialPage::getTitleFor( $name, $subpage );
return[ 'abap'=> true, 'abl'=> true, 'abnf'=> true, 'aconf'=> true, 'actionscript'=> true, 'actionscript3'=> true, 'ada'=> true, 'ada2005'=> true, 'ada95'=> true, 'adl'=> true, 'agda'=> true, 'aheui'=> true, 'ahk'=> true, 'alloy'=> true, 'ambienttalk'=> true, 'ambienttalk/2'=> true, 'ampl'=> true, 'antlr'=> true, 'antlr-actionscript'=> true, 'antlr-as'=> true, 'antlr-c#'=> true, 'antlr-cpp'=> true, 'antlr-csharp'=> true, 'antlr-java'=> true, 'antlr-objc'=> true, 'antlr-perl'=> true, 'antlr-python'=> true, 'antlr-rb'=> true, 'antlr-ruby'=> true, 'apache'=> true, 'apacheconf'=> true, 'apl'=> true, 'applescript'=> true, 'arduino'=> true, 'arexx'=> true, 'as'=> true, 'as3'=> true, 'asm'=> true, 'aspectj'=> true, 'aspx-cs'=> true, 'aspx-vb'=> true, 'asy'=> true, 'asymptote'=> true, 'at'=> true, 'autohotkey'=> true, 'autoit'=> true, 'awk'=> true, 'b3d'=> true, 'basemake'=> true, 'bash'=> true, 'basic'=> true, 'bat'=> true, 'batch'=> true, 'bbcode'=> true, 'bc'=> true, 'befunge'=> true, 'bf'=> true, 'bib'=> true, 'bibtex'=> true, 'blitzbasic'=> true, 'blitzmax'=> true, 'bmax'=> true, 'bnf'=> true, 'boo'=> true, 'boogie'=> true, 'bplus'=> true, 'brainfuck'=> true, 'bro'=> true, 'bsdmake'=> true, 'bst'=> true, 'bst-pybtex'=> true, 'bugs'=> true, 'c'=> true, 'c#'=> true, 'c++'=> true, 'c++-objdumb'=> true, 'c-objdump'=> true, 'ca65'=> true, 'cadl'=> true, 'camkes'=> true, 'capdl'=> true, 'capnp'=> true, 'cbmbas'=> true, 'ceylon'=> true, 'cf3'=> true, 'cfc'=> true, 'cfengine3'=> true, 'cfg'=> true, 'cfm'=> true, 'cfs'=> true, 'chai'=> true, 'chaiscript'=> true, 'chapel'=> true, 'cheetah'=> true, 'chpl'=> true, 'cirru'=> true, 'cl'=> true, 'clay'=> true, 'clean'=> true, 'clipper'=> true, 'clj'=> true, 'cljs'=> true, 'clojure'=> true, 'clojurescript'=> true, 'cmake'=> true, 'cobol'=> true, 'cobolfree'=> true, 'coffee'=> true, 'coffee-script'=> true, 'coffeescript'=> true, 'common-lisp'=> true, 'componentpascal'=> true, 'console'=> true, 'control'=> true, 'coq'=> true, 'cp'=> true, 'cpp'=> true, 'cpp-objdump'=> true, 'cpsa'=> true, 'cr'=> true, 'crmsh'=> true, 'croc'=> true, 'cry'=> true, 'cryptol'=> true, 'crystal'=> true, 'csh'=> true, 'csharp'=> true, 'csound'=> true, 'csound-csd'=> true, 'csound-document'=> true, 'csound-orc'=> true, 'csound-sco'=> true, 'csound-score'=> true, 'css'=> true, 'css+django'=> true, 'css+erb'=> true, 'css+genshi'=> true, 'css+genshitext'=> true, 'css+jinja'=> true, 'css+lasso'=> true, 'css+mako'=> true, 'css+mozpreproc'=> true, 'css+myghty'=> true, 'css+php'=> true, 'css+ruby'=> true, 'css+smarty'=> true, 'cu'=> true, 'cucumber'=> true, 'cuda'=> true, 'cxx-objdump'=> true, 'cypher'=> true, 'cython'=> true, 'd'=> true, 'd-objdump'=> true, 'dart'=> true, 'debcontrol'=> true, 'debsources'=> true, 'delphi'=> true, 'dg'=> true, 'diff'=> true, 'django'=> true, 'do'=> true, 'docker'=> true, 'dockerfile'=> true, 'dosbatch'=> true, 'doscon'=> true, 'dosini'=> true, 'dpatch'=> true, 'dtd'=> true, 'duby'=> true, 'duel'=> true, 'dylan'=> true, 'dylan-console'=> true, 'dylan-lid'=> true, 'dylan-repl'=> true, 'earl-grey'=> true, 'earlgrey'=> true, 'easytrieve'=> true, 'ebnf'=> true, 'ec'=> true, 'ecl'=> true, 'eg'=> true, 'eiffel'=> true, 'elisp'=> true, 'elixir'=> true, 'elm'=> true, 'emacs'=> true, 'emacs-lisp'=> true, 'erb'=> true, 'erl'=> true, 'erlang'=> true, 'evoque'=> true, 'ex'=> true, 'exs'=> true, 'extempore'=> true, 'ezhil'=> true, 'factor'=> true, 'fan'=> true, 'fancy'=> true, 'felix'=> true, 'fish'=> true, 'fishshell'=> true, 'flatline'=> true, 'flx'=> true, 'forth'=> true, 'fortran'=> true, 'fortranfixed'=> true, 'foxpro'=> true, 'fsharp'=> true, 'fy'=> true, 'gap'=> true, 'gas'=> true, 'gawk'=> true, 'genshi'=> true, 'genshitext'=> true, 'gherkin'=> true, 'glsl'=> true, 'gnuplot'=> true, 'go'=> true, 'golo'=> true, 'gooddata-cl'=> true, 'gosu'=> true, 'groff'=> true, 'groovy'=> true, 'gst'=> true, 'haml'=> true, 'handlebars'=> true, 'haskell'=> true, 'haxe'=> true, 'haxeml'=> true, 'hexdump'=> true, 'hs'=> true, 'hsa'=> true, 'hsail'=> true, 'html'=> true, 'html+cheetah'=> true, 'html+django'=> true, 'html+erb'=> true, 'html+evoque'=> true, 'html+genshi'=> true, 'html+handlebars'=> true, 'html+jinja'=> true, 'html+kid'=> true, 'html+lasso'=> true, 'html+mako'=> true, 'html+myghty'=> true, 'html+ng2'=> true, 'html+php'=> true, 'html+ruby'=> true, 'html+smarty'=> true, 'html+spitfire'=> true, 'html+twig'=> true, 'html+velocity'=> true, 'htmlcheetah'=> true, 'htmldjango'=> true, 'http'=> true, 'hx'=> true, 'hxml'=> true, 'hxsl'=> true, 'hy'=> true, 'hybris'=> true, 'hylang'=> true, 'i6'=> true, 'i6t'=> true, 'i7'=> true, 'idl'=> true, 'idl4'=> true, 'idr'=> true, 'idris'=> true, 'iex'=> true, 'igor'=> true, 'igorpro'=> true, 'ik'=> true, 'inform6'=> true, 'inform7'=> true, 'ini'=> true, 'io'=> true, 'ioke'=> true, 'irb'=> true, 'irc'=> true, 'isabelle'=> true, 'j'=> true, 'jade'=> true, 'jags'=> true, 'jasmin'=> true, 'jasminxt'=> true, 'java'=> true, 'javascript'=> true, 'javascript+cheetah'=> true, 'javascript+django'=> true, 'javascript+erb'=> true, 'javascript+genshi'=> true, 'javascript+genshitext'=> true, 'javascript+jinja'=> true, 'javascript+lasso'=> true, 'javascript+mako'=> true, 'javascript+mozpreproc'=> true, 'javascript+myghty'=> true, 'javascript+php'=> true, 'javascript+ruby'=> true, 'javascript+smarty'=> true, 'javascript+spitfire'=> true, 'jbst'=> true, 'jcl'=> true, 'jinja'=> true, 'jl'=> true, 'jlcon'=> true, 'jproperties'=> true, 'js'=> true, 'js+cheetah'=> true, 'js+django'=> true, 'js+erb'=> true, 'js+genshi'=> true, 'js+genshitext'=> true, 'js+jinja'=> true, 'js+lasso'=> true, 'js+mako'=> true, 'js+myghty'=> true, 'js+php'=> true, 'js+ruby'=> true, 'js+smarty'=> true, 'js+spitfire'=> true, 'jsgf'=> true, 'json'=> true, 'json-ld'=> true, 'json-object'=> true, 'jsonld'=> true, 'jsonml+bst'=> true, 'jsp'=> true, 'julia'=> true, 'juttle'=> true, 'kal'=> true, 'kconfig'=> true, 'kernel-config'=> true, 'kid'=> true, 'koka'=> true, 'kotlin'=> true, 'ksh'=> true, 'lagda'=> true, 'lasso'=> true, 'lassoscript'=> true, 'latex'=> true, 'lcry'=> true, 'lcryptol'=> true, 'lean'=> true, 'less'=> true, 'lhaskell'=> true, 'lhs'=> true, 'lid'=> true, 'lidr'=> true, 'lidris'=> true, 'lighttpd'=> true, 'lighty'=> true, 'limbo'=> true, 'linux-config'=> true, 'liquid'=> true, 'lisp'=> true, 'literate-agda'=> true, 'literate-cryptol'=> true, 'literate-haskell'=> true, 'literate-idris'=> true, 'live-script'=> true, 'livescript'=> true, 'llvm'=> true, 'logos'=> true, 'logtalk'=> true, 'lsl'=> true, 'lua'=> true, 'm2'=> true, 'make'=> true, 'makefile'=> true, 'mako'=> true, 'man'=> true, 'maql'=> true, 'mask'=> true, 'mason'=> true, 'mathematica'=> true, 'matlab'=> true, 'matlabsession'=> true, 'mawk'=> true, 'md'=> true, 'menuconfig'=> true, 'mf'=> true, 'minid'=> true, 'mma'=> true, 'modelica'=> true, 'modula2'=> true, 'moin'=> true, 'monkey'=> true, 'monte'=> true, 'moo'=> true, 'moocode'=> true, 'moon'=> true, 'moonscript'=> true, 'mozhashpreproc'=> true, 'mozpercentpreproc'=> true, 'mq4'=> true, 'mq5'=> true, 'mql'=> true, 'mql4'=> true, 'mql5'=> true, 'msc'=> true, 'mscgen'=> true, 'mupad'=> true, 'mxml'=> true, 'myghty'=> true, 'mysql'=> true, 'nasm'=> true, 'nawk'=> true, 'nb'=> true, 'ncl'=> true, 'nemerle'=> true, 'nesc'=> true, 'newlisp'=> true, 'newspeak'=> true, 'ng2'=> true, 'nginx'=> true, 'nim'=> true, 'nimrod'=> true, 'nit'=> true, 'nix'=> true, 'nixos'=> true, 'nroff'=> true, 'nsh'=> true, 'nsi'=> true, 'nsis'=> true, 'numpy'=> true, 'nusmv'=> true, 'obj-c'=> true, 'obj-c++'=> true, 'obj-j'=> true, 'objc'=> true, 'objc++'=> true, 'objdump'=> true, 'objdump-nasm'=> true, 'objective-c'=> true, 'objective-c++'=> true, 'objective-j'=> true, 'objectivec'=> true, 'objectivec++'=> true, 'objectivej'=> true, 'objectpascal'=> true, 'objj'=> true, 'ocaml'=> true, 'octave'=> true, 'odin'=> true, 'ooc'=> true, 'opa'=> true, 'openbugs'=> true, 'openedge'=> true, 'pacmanconf'=> true, 'pan'=> true, 'parasail'=> true, 'pas'=> true, 'pascal'=> true, 'pawn'=> true, 'pcmk'=> true, 'perl'=> true, 'perl6'=> true, 'php'=> true, 'php3'=> true, 'php4'=> true, 'php5'=> true, 'pig'=> true, 'pike'=> true, 'pkgconfig'=> true, 'pl'=> true, 'pl6'=> true, 'plpgsql'=> true, 'po'=> true, 'posh'=> true, 'postgres'=> true, 'postgres-console'=> true, 'postgresql'=> true, 'postgresql-console'=> true, 'postscr'=> true, 'postscript'=> true, 'pot'=> true, 'pov'=> true, 'powershell'=> true, 'praat'=> true, 'progress'=> true, 'prolog'=> true, 'properties'=> true, 'proto'=> true, 'protobuf'=> true, 'ps1'=> true, 'ps1con'=> true, 'psm1'=> true, 'psql'=> true, 'pug'=> true, 'puppet'=> true, 'py'=> true, 'py3'=> true, 'py3tb'=> true, 'pycon'=> true, 'pypy'=> true, 'pypylog'=> true, 'pyrex'=> true, 'pytb'=> true, 'python'=> true, 'python3'=> true, 'pyx'=> true, 'qbasic'=> true, 'qbs'=> true, 'qml'=> true, 'qvt'=> true, 'qvto'=> true, 'r'=> true, 'racket'=> true, 'ragel'=> true, 'ragel-c'=> true, 'ragel-cpp'=> true, 'ragel-d'=> true, 'ragel-em'=> true, 'ragel-java'=> true, 'ragel-objc'=> true, 'ragel-rb'=> true, 'ragel-ruby'=> true, 'raw'=> true, 'rb'=> true, 'rbcon'=> true, 'rconsole'=> true, 'rd'=> true, 'rebol'=> true, 'red'=> true, 'red/system'=> true, 'redcode'=> true, 'registry'=> true, 'resource'=> true, 'resourcebundle'=> true, 'rest'=> true, 'restructuredtext'=> true, 'rexx'=> true, 'rhtml'=> true, 'rkt'=> true, 'rnc'=> true, 'rng-compact'=> true, 'roboconf-graph'=> true, 'roboconf-instances'=> true, 'robotframework'=> true, 'rout'=> true, 'rql'=> true, 'rsl'=> true, 'rst'=> true, 'rts'=> true, 'ruby'=> true, 'rust'=> true, 's'=> true, 'sage'=> true, 'salt'=> true, 'sas'=> true, 'sass'=> true, 'sc'=> true, 'scala'=> true, 'scaml'=> true, 'scheme'=> true, 'scilab'=> true, 'scm'=> true, 'scss'=> true, 'sh'=> true, 'shell'=> true, 'shell-session'=> true, 'shen'=> true, 'silver'=> true, 'slim'=> true, 'sls'=> true, 'smali'=> true, 'smalltalk'=> true, 'smarty'=> true, 'sml'=> true, 'snobol'=> true, 'snowball'=> true, 'sources.list'=> true, 'sourceslist'=> true, 'sp'=> true, 'sparql'=> true, 'spec'=> true, 'spitfire'=> true, 'splus'=> true, 'sql'=> true, 'sqlite3'=> true, 'squeak'=> true, 'squid'=> true, 'squid.conf'=> true, 'squidconf'=> true, 'ssp'=> true, 'st'=> true, 'stan'=> true, 'stata'=> true, 'supercollider'=> true, 'sv'=> true, 'swift'=> true, 'swig'=> true, 'systemverilog'=> true, 't-sql'=> true, 'tads3'=> true, 'tap'=> true, 'tasm'=> true, 'tcl'=> true, 'tcsh'=> true, 'tcshcon'=> true, 'tea'=> true, 'termcap'=> true, 'terminfo'=> true, 'terraform'=> true, 'tex'=> true, 'text'=> true, 'tf'=> true, 'thrift'=> true, 'todotxt'=> true, 'trac-wiki'=> true, 'trafficscript'=> true, 'treetop'=> true, 'ts'=> true, 'tsql'=> true, 'turtle'=> true, 'twig'=> true, 'typescript'=> true, 'typoscript'=> true, 'typoscriptcssdata'=> true, 'typoscripthtmldata'=> true, 'udiff'=> true, 'urbiscript'=> true, 'v'=> true, 'vala'=> true, 'vapi'=> true, 'vb.net'=> true, 'vbnet'=> true, 'vcl'=> true, 'vclsnippet'=> true, 'vclsnippets'=> true, 'vctreestatus'=> true, 'velocity'=> true, 'verilog'=> true, 'vfp'=> true, 'vgl'=> true, 'vhdl'=> true, 'vim'=> true, 'wdiff'=> true, 'whiley'=> true, 'winbatch'=> true, 'winbugs'=> true, 'x10'=> true, 'xbase'=> true, 'xml'=> true, 'xml+cheetah'=> true, 'xml+django'=> true, 'xml+erb'=> true, 'xml+evoque'=> true, 'xml+genshi'=> true, 'xml+jinja'=> true, 'xml+kid'=> true, 'xml+lasso'=> true, 'xml+mako'=> true, 'xml+myghty'=> true, 'xml+php'=> true, 'xml+ruby'=> true, 'xml+smarty'=> true, 'xml+spitfire'=> true, 'xml+velocity'=> true, 'xq'=> true, 'xql'=> true, 'xqm'=> true, 'xquery'=> true, 'xqy'=> true, 'xslt'=> true, 'xten'=> true, 'xtend'=> true, 'xul+mozpreproc'=> true, 'yaml'=> true, 'yaml+jinja'=> true, 'zephir'=> true, 'zsh'=> true,]