@@ -594,101 +594,122 @@ public static string GetCurrentLanguage() // Code::Stats
594594 extension = Path . GetExtension ( currentFile ) . TrimStart ( '.' ) ;
595595
596596 bool found = false ;
597+ var foundDetectionMethod = Constants . DetectionType . EXTENSION_MAPPING ;
597598 string language = "" ;
598- if ( ! String . IsNullOrWhiteSpace ( extension ) )
599+
600+ foreach ( var detectionMethod in DetectionOrder )
599601 {
600- /*if (extensionMapping.TryGetValue(extension, out language))
601- {
602- // Found
603- found = true;
604- }
605- else
602+ switch ( detectionMethod )
606603 {
607- // Not found
608- found = false;
609- }*/ // - doesn't work for some reason
610- try
611- {
612- language = extensionMapping [ extension ] ;
613- found = true ;
604+ case Constants . DetectionType . EXTENSION_MAPPING :
605+ if ( ! String . IsNullOrWhiteSpace ( extension ) )
606+ {
607+ /*if (extensionMapping.TryGetValue(extension, out language))
608+ {
609+ // Found
610+ found = true;
611+ }
612+ else
613+ {
614+ // Not found
615+ found = false;
616+ }*/ // - doesn't work for some reason
617+ try
618+ {
619+ language = extensionMapping [ extension ] ;
620+ found = true ;
621+ }
622+ catch ( KeyNotFoundException )
623+ {
624+ Logger . Debug ( "Extension \" " + extension + "\" is not found in extension mappings file." ) ;
625+ found = false ;
626+ }
627+ }
628+ break ;
629+
630+ case Constants . DetectionType . LEXER_LANGUAGE :
631+ found = true ; // will set again to false if not
632+ switch ( langType )
633+ {
634+ case LangType . L_ADA : language = "Ada" ; break ;
635+ //case LangType.L_ASCII: language = "ASCII"; break; // maybe Plain text?
636+ case LangType . L_ASM : language = "Assembler" ; break ;
637+ case LangType . L_ASP : language = "ASP" ; break ;
638+ case LangType . L_AU3 : language = "AutoIt" ; break ;
639+ case LangType . L_BASH : language = "Shell Script" ; break ; // or Shell Script, probably called Shell in NPP (long desc: Unix script file)
640+ case LangType . L_BATCH : language = "Batch" ; break ;
641+ case LangType . L_C : language = "C" ; break ;
642+ case LangType . L_CAML : language = "Caml" ; break ;
643+ case LangType . L_CMAKE : language = "CMake" ; break ;
644+ case LangType . L_COBOL : language = "COBOL" ; break ;
645+ case LangType . L_COFFEESCRIPT : language = "CoffeeScript" ; break ;
646+ case LangType . L_CPP : language = "C++" ; break ;
647+ case LangType . L_CS : language = "C#" ; break ;
648+ case LangType . L_CSS : language = "CSS" ; break ;
649+ case LangType . L_D : language = "D" ; break ;
650+ case LangType . L_DIFF : language = "Diff" ; break ;
651+ //case LangType.L_EXTERNAL: language = ""; break;
652+ case LangType . L_FLASH : language = "Flash" ; break ;
653+ case LangType . L_FORTRAN : language = "Fortran" ; break ; // fixed?
654+ case LangType . L_FORTRAN_77 : language = "Fortran" ; break ; // free?
655+ case LangType . L_GUI4CLI : language = "Gui4Cli" ; break ;
656+ case LangType . L_HASKELL : language = "Haskell" ; break ;
657+ case LangType . L_HTML : language = "HTML" ; break ;
658+ case LangType . L_INI : language = "Ini" ; break ;
659+ case LangType . L_INNO : language = "INNO" ; break ;
660+ case LangType . L_JAVA : language = "Java" ; break ;
661+ case LangType . L_JAVASCRIPT : language = "JavaScript" ; break ;
662+ case LangType . L_JS : language = "JavaScript" ; break ;
663+ case LangType . L_JSON : language = "JSON" ; break ;
664+ case LangType . L_JSP : language = "JSP" ; break ;
665+ case LangType . L_KIX : language = "KIXtart" ; break ;
666+ case LangType . L_LISP : language = "LISP" ; break ;
667+ case LangType . L_LUA : language = "Lua" ; break ;
668+ case LangType . L_MAKEFILE : language = "Makefile" ; break ;
669+ case LangType . L_MATLAB : language = "Matlab" ; break ;
670+ case LangType . L_NSIS : language = "NSIS" ; break ;
671+ case LangType . L_OBJC : language = "Objective-C" ; break ;
672+ case LangType . L_PASCAL : language = "Pascal" ; break ;
673+ case LangType . L_PERL : language = "Perl" ; break ;
674+ case LangType . L_PHP : language = "PHP" ; break ;
675+ case LangType . L_POWERSHELL : language = "PowerShell" ; break ;
676+ case LangType . L_PROPS : language = "Properties" ; break ;
677+ case LangType . L_PS : language = "PostScript" ; break ;
678+ case LangType . L_PYTHON : language = "Python" ; break ;
679+ case LangType . L_R : language = "R" ; break ;
680+ case LangType . L_RC : language = "Resource" ; break ;
681+ case LangType . L_RUBY : language = "Ruby" ; break ;
682+ case LangType . L_SCHEME : language = "Scheme" ; break ;
683+ //case LangType.L_SEARCHRESULT: language = ""; break; // it should be fine as plaintext
684+ case LangType . L_SMALLTALK : language = "Smalltalk" ; break ;
685+ case LangType . L_SQL : language = "SQL" ; break ;
686+ case LangType . L_TCL : language = "TCL" ; break ;
687+ case LangType . L_TEX : language = "TeX" ; break ;
688+ case LangType . L_VB : language = "Visual Basic" ; break ;
689+ case LangType . L_VERILOG : language = "Verilog" ; break ;
690+ case LangType . L_VHDL : language = "VHDL" ; break ;
691+ case LangType . L_XML : language = "XML" ; break ;
692+ case LangType . L_YAML : language = "YAML" ; break ;
693+ case LangType . L_TEXT :
694+ case LangType . L_USER : // User defined language
695+ default :
696+ found = false ;
697+ break ;
698+ }
699+ break ;
614700 }
615- catch ( KeyNotFoundException )
701+ if ( found )
616702 {
617- Logger . Debug ( "Extension \" " + extension + " \" is not found in extension mappings file, using language type selected in Notepad++ instead." ) ;
618- found = false ;
703+ foundDetectionMethod = detectionMethod ;
704+ break ;
619705 }
620706 }
621707
708+ if ( found && Debug )
709+ Logger . Debug ( "[GetCurrentLanguage] Detected language \" " + language + "\" with detection type: " + foundDetectionMethod ) ;
710+
622711 if ( ! found )
623- {
624- switch ( langType )
625- {
626- case LangType . L_ADA : language = "Ada" ; break ;
627- //case LangType.L_ASCII: language = "ASCII"; break; // maybe Plain text?
628- case LangType . L_ASM : language = "Assembler" ; break ;
629- case LangType . L_ASP : language = "ASP" ; break ;
630- case LangType . L_AU3 : language = "AutoIt" ; break ;
631- case LangType . L_BASH : language = "Shell Script" ; break ; // or Shell Script, probably called Shell in NPP (long desc: Unix script file)
632- case LangType . L_BATCH : language = "Batch" ; break ;
633- case LangType . L_C : language = "C" ; break ;
634- case LangType . L_CAML : language = "Caml" ; break ;
635- case LangType . L_CMAKE : language = "CMake" ; break ;
636- case LangType . L_COBOL : language = "COBOL" ; break ;
637- case LangType . L_COFFEESCRIPT : language = "CoffeeScript" ; break ;
638- case LangType . L_CPP : language = "C++" ; break ;
639- case LangType . L_CS : language = "C#" ; break ;
640- case LangType . L_CSS : language = "CSS" ; break ;
641- case LangType . L_D : language = "D" ; break ;
642- case LangType . L_DIFF : language = "Diff" ; break ;
643- //case LangType.L_EXTERNAL: language = ""; break;
644- case LangType . L_FLASH : language = "Flash" ; break ;
645- case LangType . L_FORTRAN : language = "Fortran" ; break ; // fixed?
646- case LangType . L_FORTRAN_77 : language = "Fortran" ; break ; // free?
647- case LangType . L_GUI4CLI : language = "Gui4Cli" ; break ;
648- case LangType . L_HASKELL : language = "Haskell" ; break ;
649- case LangType . L_HTML : language = "HTML" ; break ;
650- case LangType . L_INI : language = "Ini" ; break ;
651- case LangType . L_INNO : language = "INNO" ; break ;
652- case LangType . L_JAVA : language = "Java" ; break ;
653- case LangType . L_JAVASCRIPT : language = "JavaScript" ; break ;
654- case LangType . L_JS : language = "JavaScript" ; break ;
655- case LangType . L_JSON : language = "JSON" ; break ;
656- case LangType . L_JSP : language = "JSP" ; break ;
657- case LangType . L_KIX : language = "KIXtart" ; break ;
658- case LangType . L_LISP : language = "LISP" ; break ;
659- case LangType . L_LUA : language = "Lua" ; break ;
660- case LangType . L_MAKEFILE : language = "Makefile" ; break ;
661- case LangType . L_MATLAB : language = "Matlab" ; break ;
662- case LangType . L_NSIS : language = "NSIS" ; break ;
663- case LangType . L_OBJC : language = "Objective-C" ; break ;
664- case LangType . L_PASCAL : language = "Pascal" ; break ;
665- case LangType . L_PERL : language = "Perl" ; break ;
666- case LangType . L_PHP : language = "PHP" ; break ;
667- case LangType . L_POWERSHELL : language = "PowerShell" ; break ;
668- case LangType . L_PROPS : language = "Properties" ; break ;
669- case LangType . L_PS : language = "PostScript" ; break ;
670- case LangType . L_PYTHON : language = "Python" ; break ;
671- case LangType . L_R : language = "R" ; break ;
672- case LangType . L_RC : language = "Resource" ; break ;
673- case LangType . L_RUBY : language = "Ruby" ; break ;
674- case LangType . L_SCHEME : language = "Scheme" ; break ;
675- //case LangType.L_SEARCHRESULT: language = ""; break; // it should be fine as plaintext
676- case LangType . L_SMALLTALK : language = "Smalltalk" ; break ;
677- case LangType . L_SQL : language = "SQL" ; break ;
678- case LangType . L_TCL : language = "TCL" ; break ;
679- case LangType . L_TEX : language = "TeX" ; break ;
680- case LangType . L_VB : language = "Visual Basic" ; break ;
681- case LangType . L_VERILOG : language = "Verilog" ; break ;
682- case LangType . L_VHDL : language = "VHDL" ; break ;
683- case LangType . L_XML : language = "XML" ; break ;
684- case LangType . L_YAML : language = "YAML" ; break ;
685- case LangType . L_TEXT :
686- case LangType . L_USER : // User defined language
687- default :
688- language = "Plain text" ;
689- break ;
690- }
691- }
712+ language = "Plain text" ;
692713
693714 return language ;
694715 }
0 commit comments