@@ -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