From 079f92ad6c98103d0b1e793c225abdec5ae9e7b3 Mon Sep 17 00:00:00 2001 From: Milly Date: Thu, 5 Sep 2024 17:01:48 +0900 Subject: [PATCH 1/2] :+1: remove unnecessary 'foldmethod' changes --- buffer/buffer.ts | 21 +++------ buffer/buffer_test.ts | 99 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 16 deletions(-) diff --git a/buffer/buffer.ts b/buffer/buffer.ts index bddd7e2d..cb8bb24d 100644 --- a/buffer/buffer.ts +++ b/buffer/buffer.ts @@ -57,21 +57,16 @@ async function ensurePrerequisites(denops: Denops): Promise { function! DenopsStdBufferAppend_${suffix}(bufnr, lnum, repl) abort let modified = getbufvar(a:bufnr, '&modified') let modifiable = getbufvar(a:bufnr, '&modifiable') - let foldmethod = getbufvar(a:bufnr, '&foldmethod') call setbufvar(a:bufnr, '&modifiable', 1) - call setbufvar(a:bufnr, '&foldmethod', 'manual') call appendbufline(a:bufnr, a:lnum, a:repl) call setbufvar(a:bufnr, '&modified', modified) call setbufvar(a:bufnr, '&modifiable', modifiable) - call setbufvar(a:bufnr, '&foldmethod', foldmethod) endfunction function! DenopsStdBufferReplace_${suffix}(bufnr, repl, fileformat, fileencoding) abort let modified = getbufvar(a:bufnr, '&modified') let modifiable = getbufvar(a:bufnr, '&modifiable') - let foldmethod = getbufvar(a:bufnr, '&foldmethod') call setbufvar(a:bufnr, '&modifiable', 1) - call setbufvar(a:bufnr, '&foldmethod', 'manual') if a:fileformat isnot# v:null call setbufvar(a:bufnr, '&fileformat', a:fileformat) endif @@ -82,7 +77,6 @@ async function ensurePrerequisites(denops: Denops): Promise { call deletebufline(a:bufnr, len(a:repl) + 1, '$') call setbufvar(a:bufnr, '&modified', modified) call setbufvar(a:bufnr, '&modifiable', modifiable) - call setbufvar(a:bufnr, '&foldmethod', foldmethod) endfunction function! DenopsStdBufferConcreteRestore_${suffix}() abort @@ -321,7 +315,7 @@ export interface DecodeResult { * } * ``` * - * It temporary change `modified`, `modifiable`, and `foldmethod` options to append + * It temporary change `modified` and `modifiable` options to append * the content of the `buffer` buffer without unmodifiable error or so on. */ export async function append( @@ -361,8 +355,8 @@ export interface AppendOptions { * } * ``` * - * It temporary change `modified`, `modifiable`, and `foldmethod` options to - * replace the content of the `buffer` buffer without unmodifiable error or so on. + * It temporary change `modified` and `modifiable` options to replace + * the content of the `buffer` buffer without unmodifiable error or so on. */ export async function replace( denops: Denops, @@ -518,25 +512,20 @@ export async function modifiable( bufnr: number, executor: () => T, ): Promise { - const [modified, modifiable, foldmethod] = await batch.collect( + const [modified, modifiable] = await batch.collect( denops, (denops) => [ op.modified.getBuffer(denops, bufnr), op.modifiable.getBuffer(denops, bufnr), - op.foldmethod.getBuffer(denops, bufnr), ], ); - await batch.batch(denops, async (denops) => { - await fn.setbufvar(denops, bufnr, "&modifiable", 1); - await fn.setbufvar(denops, bufnr, "&foldmethod", "manual"); - }); + await fn.setbufvar(denops, bufnr, "&modifiable", 1); try { return await executor(); } finally { await batch.batch(denops, async (denops) => { await fn.setbufvar(denops, bufnr, "&modified", modified); await fn.setbufvar(denops, bufnr, "&modifiable", modifiable); - await fn.setbufvar(denops, bufnr, "&foldmethod", foldmethod); }); } } diff --git a/buffer/buffer_test.ts b/buffer/buffer_test.ts index 9cd2490d..7202e73e 100644 --- a/buffer/buffer_test.ts +++ b/buffer/buffer_test.ts @@ -302,6 +302,69 @@ test({ assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); }, }); + await t.step({ + name: "appends content of a 'foldmethod=marker' buffer", + fn: async () => { + await denops.cmd("enew"); + const bufnr = await fn.bufnr(denops); + await fn.setbufvar(denops, bufnr, "&foldmethod", "marker"); + await fn.setbufvar(denops, bufnr, "&foldmarker", "{{{,}}}"); + await append(denops, bufnr, [ + "Hello {{{", + "Darkness", + "My }}}", + "Old friend", + ]); + assertEquals([ + "", + "Hello {{{", + "Darkness", + "My }}}", + "Old friend", + ], await fn.getline(denops, 1, "$")); + assertEquals( + await fn.getbufvar(denops, bufnr, "&foldmethod"), + "marker", + ); + + await fn.setbufvar(denops, bufnr, "&foldlevel", 0); + await append(denops, bufnr, [ + "Joking", + ]); + assertEquals([ + "", + "Joking", + "Hello {{{", + "Darkness", + "My }}}", + "Old friend", + ], await fn.getline(denops, 1, "$")); + assertEquals( + await fn.getbufvar(denops, bufnr, "&foldmethod"), + "marker", + ); + + await fn.setbufvar(denops, bufnr, "&foldlevel", 0); + await append(denops, bufnr, [ + "Foo", + ], { + lnum: 3, + }); + assertEquals([ + "", + "Joking", + "Hello {{{", + "Foo", + "Darkness", + "My }}}", + "Old friend", + ], await fn.getline(denops, 1, "$")); + assertEquals( + await fn.getbufvar(denops, bufnr, "&foldmethod"), + "marker", + ); + }, + }); }, }); @@ -361,6 +424,42 @@ test({ assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); }, }); + await t.step({ + name: "replaces content of an 'foldmethod=marker' buffer", + fn: async () => { + const bufnr = await fn.bufnr(denops); + await fn.setbufvar(denops, bufnr, "&foldmethod", "marker"); + await fn.setbufvar(denops, bufnr, "&foldmarker", "{{{,}}}"); + await replace(denops, bufnr, [ + "Hello {{{", + "Darkness", + "My }}}", + "Old friend", + ]); + assertEquals([ + "Hello {{{", + "Darkness", + "My }}}", + "Old friend", + ], await fn.getline(denops, 1, "$")); + assertEquals( + await fn.getbufvar(denops, bufnr, "&foldmethod"), + "marker", + ); + + await fn.setbufvar(denops, bufnr, "&foldlevel", 0); + await replace(denops, bufnr, [ + "Joking {{{1", + ]); + assertEquals([ + "Joking {{{1", + ], await fn.getline(denops, 1, "$")); + assertEquals( + await fn.getbufvar(denops, bufnr, "&foldmethod"), + "marker", + ); + }, + }); }, }); From c14d65b04cf7fc110ab0f21da8c2ea6324507ef7 Mon Sep 17 00:00:00 2001 From: Milly Date: Thu, 5 Sep 2024 17:38:14 +0900 Subject: [PATCH 2/2] :herb: fix position of `actual` and `expected` arguments `assertEquals(actual, expected)` is correct. --- buffer/buffer_test.ts | 176 +++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/buffer/buffer_test.ts b/buffer/buffer_test.ts index 7202e73e..ceff0e21 100644 --- a/buffer/buffer_test.ts +++ b/buffer/buffer_test.ts @@ -24,11 +24,11 @@ test({ fn: async () => { const info = await open(denops, "Hello world"); const bufname = await fn.bufname(denops); - assertEquals("Hello world", bufname); - assertEquals(await fn.win_getid(denops), info.winid); - assertEquals(await fn.bufnr(denops), info.bufnr); - assertEquals(await fn.winnr(denops), info.winnr); - assertEquals(await fn.tabpagenr(denops), info.tabpagenr); + assertEquals(bufname, "Hello world"); + assertEquals(info.winid, await fn.win_getid(denops)); + assertEquals(info.bufnr, await fn.bufnr(denops)); + assertEquals(info.winnr, await fn.winnr(denops)); + assertEquals(info.tabpagenr, await fn.tabpagenr(denops)); }, }); await t.step({ @@ -39,11 +39,11 @@ test({ "gin://this-is-valid-remote-buffer-name", ); const bufname = await fn.bufname(denops); - assertEquals("gin://this-is-valid-remote-buffer-name", bufname); - assertEquals(await fn.win_getid(denops), info.winid); - assertEquals(await fn.bufnr(denops), info.bufnr); - assertEquals(await fn.winnr(denops), info.winnr); - assertEquals(await fn.tabpagenr(denops), info.tabpagenr); + assertEquals(bufname, "gin://this-is-valid-remote-buffer-name"); + assertEquals(info.winid, await fn.win_getid(denops)); + assertEquals(info.bufnr, await fn.bufnr(denops)); + assertEquals(info.winnr, await fn.winnr(denops)); + assertEquals(info.tabpagenr, await fn.tabpagenr(denops)); }, }); await t.step({ @@ -52,11 +52,11 @@ test({ const symbols = " !%22#$%&'()%2a+,-./:;%3c=%3e%3f@[\\]^`{%7c}~"; const info = await open(denops, `test://${symbols}`); const bufname = await fn.bufname(denops); - assertEquals(`test://${symbols}`, bufname); - assertEquals(await fn.win_getid(denops), info.winid); - assertEquals(await fn.bufnr(denops), info.bufnr); - assertEquals(await fn.winnr(denops), info.winnr); - assertEquals(await fn.tabpagenr(denops), info.tabpagenr); + assertEquals(bufname, `test://${symbols}`); + assertEquals(info.winid, await fn.win_getid(denops)); + assertEquals(info.bufnr, await fn.bufnr(denops)); + assertEquals(info.winnr, await fn.winnr(denops)); + assertEquals(info.tabpagenr, await fn.tabpagenr(denops)); }, }); await t.step({ @@ -77,11 +77,11 @@ test({ await denops.cmd("set modified nohidden"); const info = await open(denops, "Hello world", { bang: true }); const bufname = await fn.bufname(denops); - assertEquals("Hello world", bufname); - assertEquals(await fn.win_getid(denops), info.winid); - assertEquals(await fn.bufnr(denops), info.bufnr); - assertEquals(await fn.winnr(denops), info.winnr); - assertEquals(await fn.tabpagenr(denops), info.tabpagenr); + assertEquals(bufname, "Hello world"); + assertEquals(info.winid, await fn.win_getid(denops)); + assertEquals(info.bufnr, await fn.bufnr(denops)); + assertEquals(info.winnr, await fn.winnr(denops)); + assertEquals(info.tabpagenr, await fn.tabpagenr(denops)); await denops.cmd("set nomodified"); }, }); @@ -103,10 +103,10 @@ test({ "こんにちわ\n世界\n", ), ); - assertEquals([ + assertEquals(result.content, [ "こんにちわ", "世界", - ], result.content); + ]); result = await decode( denops, @@ -115,10 +115,10 @@ test({ "今すぐダウンロー\nド", ), ); - assertEquals([ + assertEquals(result.content, [ "今すぐダウンロー", "ド", - ], result.content); + ]); }, }); await t.step({ @@ -142,11 +142,11 @@ test({ fileencoding: "sjis", }, ); - assertEquals("sjis", result.fileencoding); - assertEquals([ + assertEquals(result.fileencoding, "sjis"); + assertEquals(result.content, [ "こんにちわ", "世界", - ], result.content); + ]); result = await decode( denops, @@ -156,11 +156,11 @@ test({ fileencoding: "euc-jp", }, ); - assertEquals("euc-jp", result.fileencoding); - assertEquals([ + assertEquals(result.fileencoding, "euc-jp"); + assertEquals(result.content, [ "今すぐダウンロー", "ド", - ], result.content); + ]); }, }); await t.step({ @@ -178,11 +178,11 @@ test({ fileformat: "dos", }, ); - assertEquals("dos", result.fileformat); - assertEquals([ + assertEquals(result.fileformat, "dos"); + assertEquals(result.content, [ "こんにちわ", "世界", - ], result.content); + ]); result = await decode( denops, @@ -191,11 +191,11 @@ test({ "今すぐダウンロー\r\nド", ), ); - assertEquals("dos", result.fileformat); - assertEquals([ + assertEquals(result.fileformat, "dos"); + assertEquals(result.content, [ "今すぐダウンロー", "ド", - ], result.content); + ]); }, }); }, @@ -215,32 +215,32 @@ test({ "My", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); await append(denops, bufnr, [ "Joking", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); await append(denops, bufnr, [ "Foo", ], { lnum: 3, }); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello", @@ -248,7 +248,7 @@ test({ "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); }, }); await t.step({ @@ -263,34 +263,34 @@ test({ "My", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); - assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); + ]); + assertEquals(await fn.getbufvar(denops, bufnr, "&modifiable"), 0); await append(denops, bufnr, [ "Joking", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); - assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); + ]); + assertEquals(await fn.getbufvar(denops, bufnr, "&modifiable"), 0); await append(denops, bufnr, [ "Foo", ], { lnum: 3, }); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello", @@ -298,8 +298,8 @@ test({ "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); - assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); + ]); + assertEquals(await fn.getbufvar(denops, bufnr, "&modifiable"), 0); }, }); await t.step({ @@ -315,13 +315,13 @@ test({ "My }}}", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Hello {{{", "Darkness", "My }}}", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); assertEquals( await fn.getbufvar(denops, bufnr, "&foldmethod"), "marker", @@ -331,14 +331,14 @@ test({ await append(denops, bufnr, [ "Joking", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello {{{", "Darkness", "My }}}", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); assertEquals( await fn.getbufvar(denops, bufnr, "&foldmethod"), "marker", @@ -350,7 +350,7 @@ test({ ], { lnum: 3, }); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "", "Joking", "Hello {{{", @@ -358,7 +358,7 @@ test({ "Darkness", "My }}}", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); assertEquals( await fn.getbufvar(denops, bufnr, "&foldmethod"), "marker", @@ -381,19 +381,19 @@ test({ "My", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); await replace(denops, bufnr, [ "Joking", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Joking", - ], await fn.getline(denops, 1, "$")); + ]); }, }); await t.step({ @@ -407,21 +407,21 @@ test({ "My", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Hello", "Darkness", "My", "Old friend", - ], await fn.getline(denops, 1, "$")); - assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); + ]); + assertEquals(await fn.getbufvar(denops, bufnr, "&modifiable"), 0); await replace(denops, bufnr, [ "Joking", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Joking", - ], await fn.getline(denops, 1, "$")); - assertEquals(0, await fn.getbufvar(denops, bufnr, "&modifiable")); + ]); + assertEquals(await fn.getbufvar(denops, bufnr, "&modifiable"), 0); }, }); await t.step({ @@ -436,12 +436,12 @@ test({ "My }}}", "Old friend", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Hello {{{", "Darkness", "My }}}", "Old friend", - ], await fn.getline(denops, 1, "$")); + ]); assertEquals( await fn.getbufvar(denops, bufnr, "&foldmethod"), "marker", @@ -451,9 +451,9 @@ test({ await replace(denops, bufnr, [ "Joking {{{1", ]); - assertEquals([ + assertEquals(await fn.getline(denops, 1, "$"), [ "Joking {{{1", - ], await fn.getline(denops, 1, "$")); + ]); assertEquals( await fn.getbufvar(denops, bufnr, "&foldmethod"), "marker", @@ -476,12 +476,12 @@ test({ ]); await concrete(denops, bufnr); await denops.cmd("edit"); - assertEquals([ + assertEquals(await fn.getbufline(denops, bufnr, 1, "$"), [ "Hello", "Darkness", "My", "Old friend", - ], await fn.getbufline(denops, bufnr, 1, "$")); + ]); }, }); @@ -497,17 +497,17 @@ test({ await open(denops, "World"); const bufnr2 = await fn.bufnr(denops); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); await ensure(denops, bufnr1, async () => { - assertEquals(bufnr1, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr1); }); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); await ensure(denops, bufnr2, async () => { - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); }); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); }, }); await t.step({ @@ -520,17 +520,17 @@ test({ await open(denops, "World"); const bufnr2 = await fn.bufnr(denops); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); await ensure(denops, bufnr1, async () => { - assertEquals(bufnr1, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr1); }); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); await ensure(denops, bufnr2, async () => { - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); }); - assertEquals(bufnr2, await fn.bufnr(denops)); + assertEquals(await fn.bufnr(denops), bufnr2); }, }); }, @@ -542,11 +542,11 @@ test({ await denops.cmd("edit foobar"); await denops.cmd("set nomodifiable"); const bufnr = await fn.bufnr(denops); - assertEquals(0, await denops.eval("&modifiable")); + assertEquals(await denops.eval("&modifiable"), 0); await modifiable(denops, bufnr, async () => { - assertEquals(1, await denops.eval("&modifiable")); + assertEquals(await denops.eval("&modifiable"), 1); }); - assertEquals(0, await denops.eval("&modifiable")); + assertEquals(await denops.eval("&modifiable"), 0); }, }); },