1
1
import type { Denops } from "@denops/core" ;
2
2
import { isArray } from "@core/unknownutil/is/array" ;
3
3
import { isString } from "@core/unknownutil/is/string" ;
4
- import {
5
- exprQuote as q ,
6
- type ExprString ,
7
- isExprString ,
8
- useExprString ,
9
- } from "./expr_string.ts" ;
10
4
import { batch } from "../batch/mod.ts" ;
11
- import { register } from "../lambda/mod.ts" ;
5
+ import { isRawString , type RawString , rawString } from "../eval/string.ts" ;
6
+ import { useEval } from "../eval/use_eval.ts" ;
12
7
import { feedkeys } from "../function/mod.ts" ;
8
+ import { type ExprString , isExprString } from "../helper/expr_string.ts" ;
9
+ import { add } from "../lambda/mod.ts" ;
13
10
14
11
export type Keys = {
15
- keys : string | ExprString ;
12
+ keys : string | RawString | ExprString ;
16
13
remap : boolean ;
17
14
} ;
18
15
@@ -23,7 +20,7 @@ function toArray<T>(x: T | T[]): T[] {
23
20
}
24
21
25
22
function toKeys ( keys : KeysSpecifier ) : Keys {
26
- if ( isString ( keys ) || isExprString ( keys ) ) {
23
+ if ( isString ( keys ) || isRawString ( keys ) || isExprString ( keys ) ) {
27
24
return { keys, remap : false } ;
28
25
}
29
26
return keys ;
@@ -36,7 +33,7 @@ function toKeys(keys: KeysSpecifier): Keys {
36
33
* ```typescript
37
34
* import type { Entrypoint } from "jsr:@denops/std";
38
35
* import * as fn from "jsr:@denops/std/function";
39
- * import { exprQuote as q } from "jsr:@denops/std/helper/expr_string ";
36
+ * import { rawString } from "jsr:@denops/std/eval ";
40
37
* import { send } from "jsr:@denops/std/helper/keymap";
41
38
*
42
39
* export const main: Entrypoint = async (denops) => {
@@ -50,14 +47,14 @@ function toKeys(keys: KeysSpecifier): Keys {
50
47
*
51
48
* // Send special keys.
52
49
* await send(denops, [
53
- * q `${"\\<BS>".repeat(6)}`,
50
+ * rawString `${"\\<BS>".repeat(6)}`,
54
51
* "baz",
55
52
* ]);
56
53
* // "baz"
57
54
* console.log(await fn.getline(denops, "."));
58
55
*
59
56
* // Send remaped keys.
60
- * await send(denops, { keys: q `\<C-l>`, remap: true });
57
+ * await send(denops, { keys: rawString `\<C-l>`, remap: true });
61
58
* // "bazsend"
62
59
* console.log(await fn.getline(denops, "."));
63
60
* },
@@ -72,19 +69,15 @@ export async function send(
72
69
keys : KeysSpecifier | KeysSpecifier [ ] ,
73
70
) : Promise < void > {
74
71
const { promise : waiter , resolve } = Promise . withResolvers < void > ( ) ;
75
- const id = register ( denops , ( ) => resolve ( ) , { once : true } ) ;
72
+ using lo = add ( denops , ( ) => resolve ( ) ) ;
76
73
await Promise . all ( [
77
- useExprString ( denops , async ( denops ) => {
74
+ useEval ( denops , async ( denops ) => {
78
75
await batch ( denops , async ( denops ) => {
79
76
const normKeys = toArray ( keys ) . map ( toKeys ) ;
80
77
for ( const key of normKeys ) {
81
78
await feedkeys ( denops , key . keys , key . remap ? "m" : "n" ) ;
82
79
}
83
- await feedkeys (
84
- denops ,
85
- q `\<Cmd>call denops#notify('${ denops . name } ', '${ id } ', [])\<CR>` ,
86
- "n" ,
87
- ) ;
80
+ await feedkeys ( denops , rawString `\<Cmd>call ${ lo . notify ( 1 ) } \<CR>` , "n" ) ;
88
81
} ) ;
89
82
} ) ,
90
83
waiter ,
0 commit comments