1111import java .nio .file .Files ;
1212import java .util .ArrayList ;
1313import java .util .Arrays ;
14+ import java .util .HashMap ;
1415import java .util .HashSet ;
1516import java .util .List ;
17+ import java .util .Map ;
1618import java .util .Set ;
1719import java .util .logging .Logger ;
1820
19- public record VelocityConfigurationAdapter (YamlConfigurationLoader loader , CommentedConfigurationNode config ) implements ConfigurationAdapter <ConfigurationNode > {
21+ public record VelocityConfigurationAdapter (YamlConfigurationLoader loader , CommentedConfigurationNode config , DefaultVelocityConfig defaultVelocityConfig ) implements ConfigurationAdapter <ConfigurationNode > {
2022
2123 @ Override
2224 public void setValue (String key , Object value ) {
@@ -43,7 +45,9 @@ public Object getValue(String key) {
4345
4446 @ Override
4547 public String [] getComment (String key ) {
46- return new String [0 ];
48+ CommentedConfigOption <?> option = defaultVelocityConfig .getAllOptions ().get (key );
49+ CommentedSection section = defaultVelocityConfig .getAllSections ().get (key );
50+ return option != null ? option .comment () : section .comment ();
4751 }
4852
4953 @ Override
@@ -89,7 +93,7 @@ public ConfigurationAdapter<ConfigurationNode> complete() {
8993
9094 @ Override
9195 public ConfigurationAdapter <ConfigurationNode > createNew () {
92- return new VelocityConfigurationAdapter (loader , loader .createNode ());
96+ return new VelocityConfigurationAdapter (loader , loader .createNode (), DefaultVelocityConfig . createDefault () );
9397 }
9498
9599 @ Override
@@ -98,12 +102,13 @@ public void saveDefaultConfig(File directory, File configFile, Logger logger) {
98102 .nodeStyle (NodeStyle .BLOCK )
99103 .file (configFile )
100104 .build ();
101- ConfigGenerator configGenerator = ConfigGenerator .createNew (DefaultVelocityConfig .createDefault ());
105+ DefaultVelocityConfig defaultConfig = DefaultVelocityConfig .createDefault ();
106+ ConfigGenerator configGenerator = ConfigGenerator .createNew (defaultConfig );
102107 if (!directory .exists ()) {
103108 directory .mkdirs ();
104109
105110 try {
106- ConfigurationAdapter <ConfigurationNode > velocityConfigurationAdapter = new VelocityConfigurationAdapter (configLoader , configLoader .createNode ());
111+ ConfigurationAdapter <ConfigurationNode > velocityConfigurationAdapter = new VelocityConfigurationAdapter (configLoader , configLoader .createNode (), defaultConfig );
107112 configGenerator .populateDefaultConfig (velocityConfigurationAdapter );
108113 configLoader .save (velocityConfigurationAdapter .config ());
109114 } catch (IOException e ) {
@@ -113,7 +118,7 @@ public void saveDefaultConfig(File directory, File configFile, Logger logger) {
113118 try {
114119 // If the config does exist, update it if necessary
115120 CommentedConfigurationNode existingYamlConfig = configLoader .load ();
116- ConfigurationAdapter <ConfigurationNode > existingConfig = new VelocityConfigurationAdapter (configLoader , existingYamlConfig );
121+ ConfigurationAdapter <ConfigurationNode > existingConfig = new VelocityConfigurationAdapter (configLoader , existingYamlConfig , defaultConfig );
117122 ConfigurationAdapter <ConfigurationNode > updatedConfig = configGenerator .generateWithNewValues (existingConfig );
118123 if (updatedConfig != null ) {
119124 configLoader .save (updatedConfig .config ());
0 commit comments