@@ -2306,6 +2306,107 @@ static void processListSubparsersOption (const char *const option CTAGS_ATTR_UNU
23062306 exit (0 );
23072307}
23082308
2309+ static void proecssDescribeLanguage (const char * const option ,
2310+ const char * const parameter )
2311+ {
2312+ /* Version, enable */
2313+ if (parameter == NULL || parameter [0 ] == '\0' )
2314+ error (FATAL , "No language given in \"--%s\" option" , option );
2315+
2316+
2317+ langType language = getNamedLanguage (parameter , 0 );
2318+ if (language == LANG_IGNORE )
2319+ error (FATAL , "Unknown language \"--%s\" in \"%s\"" , parameter , option );
2320+
2321+ initializeParser (language );
2322+
2323+ printf ("About %s language\n" , parameter );
2324+ puts ("=======================================================" );
2325+
2326+ printf ("enabled: %s\n" , isLanguageEnabled (language )? "yes" : "no" );
2327+ printf ("version: %u.%u\n" ,
2328+ getLanguageVersionCurrent (language ),
2329+ getLanguageVersionAge (language ));
2330+
2331+ puts ("" );
2332+ puts ("Mappings/patterns" );
2333+ puts ("-------------------------------------------------------" );
2334+ printLanguageMaps (language , LMAP_PATTERN |LMAP_NO_LANG_PREFIX ,
2335+ localOption .withListHeader , localOption .machinable ,
2336+ stdout );
2337+
2338+ puts ("" );
2339+ puts ("Mappings/extensions" );
2340+ puts ("-------------------------------------------------------" );
2341+ printLanguageMaps (language , LMAP_EXTENSION |LMAP_NO_LANG_PREFIX ,
2342+ localOption .withListHeader , localOption .machinable ,
2343+ stdout );
2344+
2345+ puts ("" );
2346+ puts ("Aliases" );
2347+ puts ("-------------------------------------------------------" );
2348+ printLanguageAliases (language ,
2349+ localOption .withListHeader , localOption .machinable , stdout );
2350+
2351+ puts ("" );
2352+ puts ("Kinds" );
2353+ puts ("-------------------------------------------------------" );
2354+
2355+ printLanguageKinds (language , true,
2356+ localOption .withListHeader , localOption .machinable , stdout );
2357+
2358+ puts ("" );
2359+ puts ("Roles" );
2360+ puts ("-------------------------------------------------------" );
2361+ printLanguageRoles (language , "*" ,
2362+ localOption .withListHeader ,
2363+ localOption .machinable ,
2364+ stdout );
2365+
2366+ puts ("" );
2367+ puts ("Fields" );
2368+ puts ("-------------------------------------------------------" );
2369+ {
2370+ writerCheckOptions (Option .fieldsReset );
2371+ struct colprintTable * table = fieldColprintTableNew ();
2372+ fieldColprintAddLanguageLines (table , language );
2373+ fieldColprintTablePrint (table , localOption .withListHeader , localOption .machinable , stdout );
2374+ colprintTableDelete (table );
2375+ }
2376+
2377+ puts ("" );
2378+ puts ("Extras" );
2379+ puts ("-------------------------------------------------------" );
2380+ {
2381+ struct colprintTable * table = xtagColprintTableNew ();
2382+ xtagColprintAddLanguageLines (table , language );
2383+ xtagColprintTablePrint (table , localOption .withListHeader , localOption .machinable , stdout );
2384+ colprintTableDelete (table );
2385+ }
2386+
2387+ puts ("" );
2388+ puts ("Parameters" );
2389+ puts ("-------------------------------------------------------" );
2390+ printLanguageParams (language ,
2391+ localOption .withListHeader , localOption .machinable ,
2392+ stdout );
2393+
2394+ puts ("" );
2395+ puts ("Sub parsers stacked on this parser" );
2396+ puts ("-------------------------------------------------------" );
2397+ printLanguageSubparsers (language ,
2398+ localOption .withListHeader , localOption .machinable ,
2399+ stdout );
2400+
2401+ puts ("" );
2402+ puts ("Implementation specific status" );
2403+ puts ("-------------------------------------------------------" );
2404+ printf ("allow null tags: %s\n" , doesLanguageAllowNullTag (language )? "yes" : "no" );
2405+
2406+ exit (0 );
2407+
2408+ }
2409+
23092410static void processListOperators (const char * const option CTAGS_ATTR_UNUSED ,
23102411 const char * const parameter )
23112412{
@@ -2864,6 +2965,7 @@ static void processDumpOptionsOption (const char *const option, const char *cons
28642965static void processDumpPreludeOption (const char * const option , const char * const parameter );
28652966
28662967static parametricOption ParametricOptions [] = {
2968+ { "describe-language" , proecssDescribeLanguage , true, STAGE_ANY },
28672969 { "etags-include" , processEtagsInclude , false, STAGE_ANY },
28682970 { "exclude" , processExcludeOption , false, STAGE_ANY },
28692971 { "exclude-exception" , processExcludeExceptionOption , false, STAGE_ANY },
0 commit comments