@@ -12,19 +12,24 @@ class PersistentStateBase<T> {
1212 private key : string ;
1313 private defaultvalue : T ;
1414 private state : vscode . Memento ;
15+ private curvalue : T ;
1516
1617 constructor ( key : string , defaultValue : T , state : vscode . Memento ) {
1718 this . key = key ;
1819 this . defaultvalue = defaultValue ;
1920 this . state = state ;
21+ this . curvalue = defaultValue ;
2022 }
2123
2224 public get Value ( ) : T {
23- return this . state . get < T > ( this . key , this . defaultvalue ) ;
25+ return this . state ? this . state . get < T > ( this . key , this . defaultvalue ) : this . curvalue ;
2426 }
2527
2628 public set Value ( newValue : T ) {
27- this . state . update ( this . key , newValue ) ;
29+ if ( this . state ) {
30+ this . state . update ( this . key , newValue ) ;
31+ }
32+ this . curvalue = newValue ;
2833 }
2934
3035 public get DefaultValue ( ) : T {
@@ -35,13 +40,13 @@ class PersistentStateBase<T> {
3540// Abstraction for global state that persists across activations but is not present in a settings file
3641export class PersistentState < T > extends PersistentStateBase < T > {
3742 constructor ( key : string , defaultValue : T ) {
38- super ( key , defaultValue , util . extensionContext . globalState ) ;
43+ super ( key , defaultValue , util . extensionContext ? util . extensionContext . globalState : null ) ;
3944 }
4045}
4146
4247export class PersistentWorkspaceState < T > extends PersistentStateBase < T > {
4348 constructor ( key : string , defaultValue : T ) {
44- super ( key , defaultValue , util . extensionContext . workspaceState ) ;
49+ super ( key , defaultValue , util . extensionContext ? util . extensionContext . workspaceState : null ) ;
4550 }
4651}
4752
0 commit comments