@@ -8,19 +8,22 @@ import { Denops } from "../deps.ts";
88 * w - Window local variables
99 * t - Tab page local variables
1010 * v - Vim's variables
11- * env - Environment variables
1211 *
1312 */
14- export type VariableGroups = "g" | "b" | "w" | "t" | "v" | "env" ;
13+ export type VariableGroups = "g" | "b" | "w" | "t" | "v" ;
1514
1615export async function getVar < T = unknown > (
1716 denops : Denops ,
1817 group : VariableGroups ,
1918 prop : string ,
20- ) : Promise < T > {
21- const name = group === "env" ? `\$${ prop } ` : `${ group } :${ prop } ` ;
19+ defaultValue ?: T ,
20+ ) : Promise < T | null > {
21+ const result = await denops . eval ( `get(${ group } :, name, value)` , {
22+ name : prop ,
23+ value : defaultValue ?? null ,
24+ } ) ;
2225 // deno-lint-ignore no-explicit-any
23- return ( await denops . eval ( name ) ) as any ;
26+ return result as any ;
2427}
2528
2629export async function setVar < T = unknown > (
@@ -29,7 +32,7 @@ export async function setVar<T = unknown>(
2932 prop : string ,
3033 value : T ,
3134) : Promise < void > {
32- const name = group === "env" ? `\$ ${ prop } ` : `${ group } :${ prop } ` ;
35+ const name = `${ group } :${ prop } ` ;
3336 await denops . cmd ( `let ${ name } = value` , {
3437 value,
3538 } ) ;
@@ -40,7 +43,7 @@ export async function removeVar(
4043 group : VariableGroups ,
4144 prop : string ,
4245) : Promise < void > {
43- const name = group === "env" ? `\$ ${ prop } ` : `${ group } :${ prop } ` ;
46+ const name = `${ group } :${ prop } ` ;
4447 await denops . cmd ( `unlet ${ name } ` ) ;
4548}
4649
@@ -53,8 +56,8 @@ export class VariableHelper {
5356 this . #group = group ;
5457 }
5558
56- async get < T = unknown > ( prop : string ) : Promise < T > {
57- return await getVar ( this . #denops, this . #group, prop ) ;
59+ async get < T = unknown > ( prop : string , defaultValue ?: T ) : Promise < T | null > {
60+ return await getVar ( this . #denops, this . #group, prop , defaultValue ) ;
5861 }
5962
6063 async set < T = unknown > ( prop : string , value : T ) : Promise < void > {
0 commit comments