@@ -88,6 +88,15 @@ class Settings(errorFn: String => Unit) extends ScalacSettings {
8888 case _ => false
8989 }
9090
91+ /** Create a new Settings object, copying all user-set values.
92+ */
93+ def copy (): Settings = {
94+ val s = new Settings ()
95+ val xs = userSetSettings flatMap (_.unparse)
96+ s.processArguments(xs.toList, true )
97+ s
98+ }
99+
91100 def checkDependencies : Boolean = {
92101 def hasValue (s : Setting , value : String ): Boolean = s match {
93102 case bs : BooleanSetting => bs.value
@@ -253,7 +262,7 @@ class Settings(errorFn: String => Unit) extends ScalacSettings {
253262 lazy val OutputSetting = untupled((output _).tupled andThen add[OutputSetting ])
254263
255264 override def toString () =
256- " Settings(\n %s)" format (settingSet filter (s => ! s.isDefault) map (" " + _ + " \n " ) mkString)
265+ " Settings(\n %s)" format (userSetSettings map (" " + _ + " \n " ) mkString)
257266}
258267
259268object Settings {
@@ -777,10 +786,15 @@ trait ScalacSettings {
777786
778787 import PathResolver .{ Defaults , Environment }
779788
780- /** A list of all settings */
789+ /** Sorted set of settings */
781790 protected var allsettings : Set [Setting ] = TreeSet [Setting ]()
791+
792+ /** All settings */
782793 def settingSet : Set [Setting ] = allsettings
783794
795+ /** Set settings */
796+ def userSetSettings : Set [Setting ] = settingSet filterNot (_.isDefault)
797+
784798 /** Disable a setting */
785799 def disable (s : Setting ) = allsettings -= s
786800
0 commit comments