Skip to content

Commit 2bd6c4c

Browse files
authored
Merge pull request #164 from uga-rosa/main
👍 Allow to specify range to undecorate()
2 parents 557acc7 + 343368d commit 2bd6c4c

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

denops_std/buffer/README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ decorate the buffer.
282282

283283
### undecorate
284284

285-
Use `undecorate()` to undecorate the `bufnr` buffer decorated with `decorate`
286-
like:
285+
Use `undecorate()` to undecorate the `bufnr` buffer from `start` line to `end`
286+
line decorated with `decorate` like:
287287

288288
```typescript
289289
import { Denops } from "../mod.ts";
@@ -311,7 +311,13 @@ export async function main(denops: Denops): Promise<void> {
311311

312312
// Do something
313313

314-
await undecorate(denops, bufnr);
314+
// Ranges are 0-based and exclusive.
315+
// Remove only the first highlight.
316+
const start = 0;
317+
const end = 1;
318+
await undecorate(denops, bufnr, start, end);
319+
// Start and end are optional. Defaults are 0 and -1 (entire buffer).
320+
// await undecorate(denops, bufnr);
315321
}
316322
```
317323

denops_std/buffer/decoration.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ export function decorate(
4242
export function undecorate(
4343
denops: Denops,
4444
bufnr: number,
45+
start = 0,
46+
end = -1,
4547
): Promise<void> {
4648
switch (denops.meta.host) {
4749
case "vim":
48-
return vimUndecorate(denops, bufnr);
50+
return vimUndecorate(denops, bufnr, start, end);
4951
case "nvim":
50-
return nvimUndecorate(denops, bufnr);
52+
return nvimUndecorate(denops, bufnr, start, end);
5153
default:
5254
unreachable(denops.meta.host);
5355
}
@@ -94,10 +96,12 @@ async function vimDecorate(
9496
async function vimUndecorate(
9597
denops: Denops,
9698
bufnr: number,
99+
start: number,
100+
end: number,
97101
): Promise<void> {
98-
const propList = await vimFn.prop_list(denops, 1, {
102+
const propList = await vimFn.prop_list(denops, start + 1, {
99103
bufnr,
100-
end_lnum: -1,
104+
end_lnum: end,
101105
}) as { id: string; type: string }[];
102106
const propIds = new Set(
103107
propList.filter((p) =>
@@ -140,10 +144,12 @@ async function nvimDecorate(
140144
async function nvimUndecorate(
141145
denops: Denops,
142146
bufnr: number,
147+
start: number,
148+
end: number,
143149
): Promise<void> {
144150
const ns = await nvimFn.nvim_create_namespace(
145151
denops,
146152
"denops_std:buffer:decoration:decorate",
147153
);
148-
await nvimFn.nvim_buf_clear_namespace(denops, bufnr, ns, 0, -1);
154+
await nvimFn.nvim_buf_clear_namespace(denops, bufnr, ns, start, end);
149155
}

0 commit comments

Comments
 (0)