coc-vscode-loader 1.2.4 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/assets/tui-preview.png +0 -0
- package/converter/README.md +151 -0
- package/converter/package-lock.json +692 -0
- package/converter/package.json +1 -1
- package/converter/pnpm-lock.yaml +419 -0
- package/converter/src/convert.ts +2 -0
- package/converter/src/steps/index.ts +2 -0
- package/converter/src/steps/snippets.ts +101 -0
- package/converter/src/types.ts +7 -1
- package/lib/index.js +77 -31
- package/package.json +8 -5
package/lib/index.js
CHANGED
|
@@ -39,7 +39,7 @@ var require_package = __commonJS({
|
|
|
39
39
|
"package.json"(exports2, module2) {
|
|
40
40
|
module2.exports = {
|
|
41
41
|
name: "coc-vscode-loader",
|
|
42
|
-
version: "1.2.
|
|
42
|
+
version: "1.2.6",
|
|
43
43
|
description: "Run VS Code extensions seamlessly in coc.nvim",
|
|
44
44
|
main: "lib/index.js",
|
|
45
45
|
keywords: [
|
|
@@ -60,8 +60,7 @@ var require_package = __commonJS({
|
|
|
60
60
|
homepage: "https://www.npmjs.com/package/coc-vscode-loader",
|
|
61
61
|
files: [
|
|
62
62
|
"lib/",
|
|
63
|
-
"converter/
|
|
64
|
-
"converter/package.json",
|
|
63
|
+
"converter/",
|
|
65
64
|
"assets/"
|
|
66
65
|
],
|
|
67
66
|
license: "MIT",
|
|
@@ -73,10 +72,14 @@ var require_package = __commonJS({
|
|
|
73
72
|
build: "npm run bundle-converter && node esbuild.mjs",
|
|
74
73
|
prepare: "npm run bundle-converter && node esbuild.mjs"
|
|
75
74
|
},
|
|
75
|
+
dependencies: {
|
|
76
|
+
commander: "^15.0.0",
|
|
77
|
+
"ts-morph": "^28.0.0",
|
|
78
|
+
typescript: "^6.0.3"
|
|
79
|
+
},
|
|
76
80
|
devDependencies: {
|
|
77
81
|
"coc.nvim": "^0.0.83-next.18",
|
|
78
|
-
esbuild: "^0.28.1"
|
|
79
|
-
typescript: "^6.0.3"
|
|
82
|
+
esbuild: "^0.28.1"
|
|
80
83
|
},
|
|
81
84
|
activationEvents: [
|
|
82
85
|
"onCommand:loader.open",
|
|
@@ -177,7 +180,7 @@ async function fetchRegistryJSON(url) {
|
|
|
177
180
|
} catch {
|
|
178
181
|
}
|
|
179
182
|
return new Promise((resolve2, reject) => {
|
|
180
|
-
(0, import_child_process.execFile)("curl", ["-sL", url], { encoding: "utf-8", maxBuffer:
|
|
183
|
+
(0, import_child_process.execFile)("curl", ["-sL", "--compressed", url], { encoding: "utf-8", maxBuffer: 20 * 1024 * 1024 }, (err, stdout) => {
|
|
181
184
|
if (err) reject(new Error(`curl failed: ${err.message}`));
|
|
182
185
|
else {
|
|
183
186
|
try {
|
|
@@ -236,6 +239,7 @@ var os2 = __toESM(require("os"));
|
|
|
236
239
|
function isInstalled(name) {
|
|
237
240
|
return fs2.existsSync(path2.join(os2.homedir(), ".config", "coc", "extensions", "node_modules", `coc-${name}`));
|
|
238
241
|
}
|
|
242
|
+
var PAGE_SIZE = 50;
|
|
239
243
|
function createInitialState() {
|
|
240
244
|
const packages = getAllPackages().map((info) => {
|
|
241
245
|
const installed = isInstalled(info.name);
|
|
@@ -265,7 +269,7 @@ function createInitialState() {
|
|
|
265
269
|
marked: false
|
|
266
270
|
};
|
|
267
271
|
});
|
|
268
|
-
return { packages, searchQuery: "", showHelp: false, activePill: null, dirty: false, viewFilter: "all", sortBy: "default" };
|
|
272
|
+
return { packages, searchQuery: "", showHelp: false, activePill: null, dirty: false, viewFilter: "all", sortBy: "default", currentPage: 0 };
|
|
269
273
|
}
|
|
270
274
|
var StateManager = class {
|
|
271
275
|
constructor(initial) {
|
|
@@ -336,21 +340,25 @@ var StateManager = class {
|
|
|
336
340
|
setViewFilter(filter) {
|
|
337
341
|
this.mutate((s) => {
|
|
338
342
|
s.viewFilter = filter;
|
|
343
|
+
s.currentPage = 0;
|
|
339
344
|
});
|
|
340
345
|
}
|
|
341
346
|
cycleViewFilter() {
|
|
342
347
|
this.mutate((s) => {
|
|
343
348
|
s.viewFilter = s.viewFilter === "all" ? "installed" : s.viewFilter === "installed" ? "not-installed" : "all";
|
|
349
|
+
s.currentPage = 0;
|
|
344
350
|
});
|
|
345
351
|
}
|
|
346
352
|
setSortBy(sortBy) {
|
|
347
353
|
this.mutate((s) => {
|
|
348
354
|
s.sortBy = sortBy;
|
|
355
|
+
s.currentPage = 0;
|
|
349
356
|
});
|
|
350
357
|
}
|
|
351
358
|
cycleSortBy() {
|
|
352
359
|
this.mutate((s) => {
|
|
353
360
|
s.sortBy = s.sortBy === "default" ? "name" : s.sortBy === "name" ? "status" : s.sortBy === "status" ? "type" : "default";
|
|
361
|
+
s.currentPage = 0;
|
|
354
362
|
});
|
|
355
363
|
}
|
|
356
364
|
setStatusMessage(msg) {
|
|
@@ -371,6 +379,12 @@ var StateManager = class {
|
|
|
371
379
|
setSearchQuery(query) {
|
|
372
380
|
this.mutate((s) => {
|
|
373
381
|
s.searchQuery = query;
|
|
382
|
+
s.currentPage = 0;
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
setPage(n) {
|
|
386
|
+
this.mutate((s) => {
|
|
387
|
+
s.currentPage = n;
|
|
374
388
|
});
|
|
375
389
|
}
|
|
376
390
|
getFilteredPackages() {
|
|
@@ -1025,8 +1039,9 @@ var HELP_TEXT = [
|
|
|
1025
1039
|
" x Toggle mark",
|
|
1026
1040
|
" f Cycle filter: all \u2192 installed \u2192 not-installed",
|
|
1027
1041
|
" s Cycle sort: default \u2192 name \u2192 status \u2192 type",
|
|
1028
|
-
"
|
|
1029
|
-
"
|
|
1042
|
+
" [/] Previous/next page",
|
|
1043
|
+
" gg Jump to first page",
|
|
1044
|
+
" G Jump to last page",
|
|
1030
1045
|
" <Enter> Toggle expand/collapse details",
|
|
1031
1046
|
" / Search filter",
|
|
1032
1047
|
" q Close window",
|
|
@@ -1065,10 +1080,14 @@ var TUI = class {
|
|
|
1065
1080
|
x: "x",
|
|
1066
1081
|
D: "D",
|
|
1067
1082
|
gg: "gg",
|
|
1068
|
-
G: "G"
|
|
1083
|
+
G: "G",
|
|
1084
|
+
"[": "pageup",
|
|
1085
|
+
"]": "pagedown"
|
|
1069
1086
|
};
|
|
1070
1087
|
this.rendering = false;
|
|
1071
1088
|
this.pendingRender = false;
|
|
1089
|
+
this.lastPage = -1;
|
|
1090
|
+
this.scrollToFirst = false;
|
|
1072
1091
|
this.state = state;
|
|
1073
1092
|
}
|
|
1074
1093
|
async open() {
|
|
@@ -1216,16 +1235,29 @@ var TUI = class {
|
|
|
1216
1235
|
return;
|
|
1217
1236
|
}
|
|
1218
1237
|
if (id === "gg") {
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
await import_coc2.workspace.nvim.call("nvim_win_set_cursor", [this.winid, [firstLine + 1, 0]]);
|
|
1222
|
-
}
|
|
1238
|
+
this.state.setPage(0);
|
|
1239
|
+
this.scrollToFirst = true;
|
|
1223
1240
|
return;
|
|
1224
1241
|
}
|
|
1225
1242
|
if (id === "G") {
|
|
1226
|
-
const
|
|
1227
|
-
|
|
1228
|
-
|
|
1243
|
+
const filtered = this.state.getFilteredPackages();
|
|
1244
|
+
const totalPages = Math.ceil(filtered.length / PAGE_SIZE) || 1;
|
|
1245
|
+
this.state.setPage(totalPages - 1);
|
|
1246
|
+
return;
|
|
1247
|
+
}
|
|
1248
|
+
if (id === "pagedown") {
|
|
1249
|
+
const filtered = this.state.getFilteredPackages();
|
|
1250
|
+
const totalPages = Math.ceil(filtered.length / PAGE_SIZE) || 1;
|
|
1251
|
+
const s2 = this.state.getState();
|
|
1252
|
+
if (s2.currentPage < totalPages - 1) {
|
|
1253
|
+
this.state.setPage(s2.currentPage + 1);
|
|
1254
|
+
}
|
|
1255
|
+
return;
|
|
1256
|
+
}
|
|
1257
|
+
if (id === "pageup") {
|
|
1258
|
+
const s2 = this.state.getState();
|
|
1259
|
+
if (s2.currentPage > 0) {
|
|
1260
|
+
this.state.setPage(s2.currentPage - 1);
|
|
1229
1261
|
}
|
|
1230
1262
|
return;
|
|
1231
1263
|
}
|
|
@@ -1322,6 +1354,8 @@ var TUI = class {
|
|
|
1322
1354
|
["D", "D"],
|
|
1323
1355
|
["gg", "gg"],
|
|
1324
1356
|
["G", "G"],
|
|
1357
|
+
["[", "pageup"],
|
|
1358
|
+
["]", "pagedown"],
|
|
1325
1359
|
["<CR>", "cr"]
|
|
1326
1360
|
];
|
|
1327
1361
|
for (const [vimKey, id] of entries) {
|
|
@@ -1375,6 +1409,15 @@ var TUI = class {
|
|
|
1375
1409
|
}], true);
|
|
1376
1410
|
}
|
|
1377
1411
|
await nvim.resumeNotification();
|
|
1412
|
+
const shouldScroll = this.scrollToFirst || state.currentPage !== this.lastPage;
|
|
1413
|
+
this.scrollToFirst = false;
|
|
1414
|
+
this.lastPage = state.currentPage;
|
|
1415
|
+
if (!state.showHelp && shouldScroll) {
|
|
1416
|
+
const firstPkgLine = Math.min(...result.pkgLineMap.keys());
|
|
1417
|
+
if (isFinite(firstPkgLine)) {
|
|
1418
|
+
await nvim.call("nvim_win_set_cursor", [this.winid, [firstPkgLine + 1, 0]]);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1378
1421
|
this.pkgLineMap = result.pkgLineMap;
|
|
1379
1422
|
this.logLineSet = result.logLines;
|
|
1380
1423
|
} finally {
|
|
@@ -1440,26 +1483,29 @@ var TUI = class {
|
|
|
1440
1483
|
}
|
|
1441
1484
|
buf.nl();
|
|
1442
1485
|
buf.nl();
|
|
1443
|
-
const
|
|
1444
|
-
const
|
|
1445
|
-
const
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
buf.
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1486
|
+
const totalPages = Math.ceil(filtered.length / PAGE_SIZE) || 1;
|
|
1487
|
+
const page = Math.min(state.currentPage, totalPages - 1);
|
|
1488
|
+
const start = page * PAGE_SIZE;
|
|
1489
|
+
const pageItems = filtered.slice(start, start + PAGE_SIZE);
|
|
1490
|
+
const end = Math.min(start + PAGE_SIZE, filtered.length);
|
|
1491
|
+
if (totalPages > 1) {
|
|
1492
|
+
buf.append(`Page ${page + 1}/${totalPages} \xB7 ${start + 1}\u2013${end} of ${filtered.length}`, "CocConverterTotal");
|
|
1493
|
+
} else {
|
|
1494
|
+
buf.append(`${filtered.length} packages`, "CocConverterTotal");
|
|
1495
|
+
}
|
|
1496
|
+
buf.nl();
|
|
1497
|
+
buf.nl();
|
|
1498
|
+
for (const e of pageItems) {
|
|
1499
|
+
this.renderEntry(buf, pkgLineMap, logSet, e);
|
|
1500
|
+
}
|
|
1456
1501
|
if (filtered.length === 0 && state.searchQuery) {
|
|
1457
1502
|
buf.nl("no matching packages");
|
|
1458
1503
|
}
|
|
1459
1504
|
buf.nl();
|
|
1460
1505
|
buf.append(" " + "\u2500".repeat(50), "Comment");
|
|
1461
1506
|
buf.nl();
|
|
1462
|
-
|
|
1507
|
+
const pageNav = totalPages > 1 ? ` [ prev ] next` : "";
|
|
1508
|
+
buf.append(` ${filtered.length} packages \xB7 ${filterLabel} \xB7 ${sortLabel}${pageNav}`, "Comment");
|
|
1463
1509
|
const result = buf.render(2);
|
|
1464
1510
|
return { lines: result.lines, pkgLineMap, logLines: logSet, highlights: result.highlights };
|
|
1465
1511
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coc-vscode-loader",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
4
4
|
"description": "Run VS Code extensions seamlessly in coc.nvim",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"keywords": [
|
|
@@ -21,8 +21,7 @@
|
|
|
21
21
|
"homepage": "https://www.npmjs.com/package/coc-vscode-loader",
|
|
22
22
|
"files": [
|
|
23
23
|
"lib/",
|
|
24
|
-
"converter/
|
|
25
|
-
"converter/package.json",
|
|
24
|
+
"converter/",
|
|
26
25
|
"assets/"
|
|
27
26
|
],
|
|
28
27
|
"license": "MIT",
|
|
@@ -34,10 +33,14 @@
|
|
|
34
33
|
"build": "npm run bundle-converter && node esbuild.mjs",
|
|
35
34
|
"prepare": "npm run bundle-converter && node esbuild.mjs"
|
|
36
35
|
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"commander": "^15.0.0",
|
|
38
|
+
"ts-morph": "^28.0.0",
|
|
39
|
+
"typescript": "^6.0.3"
|
|
40
|
+
},
|
|
37
41
|
"devDependencies": {
|
|
38
42
|
"coc.nvim": "^0.0.83-next.18",
|
|
39
|
-
"esbuild": "^0.28.1"
|
|
40
|
-
"typescript": "^6.0.3"
|
|
43
|
+
"esbuild": "^0.28.1"
|
|
41
44
|
},
|
|
42
45
|
"activationEvents": [
|
|
43
46
|
"onCommand:loader.open",
|