Skip to content

Commit 88c6ec5

Browse files
authored
Merge pull request #27 from vim-fall/fix-default-mappings
Do NOT check if corresponding mappings are already defined to define default mappings
2 parents 51f9bf0 + e7e4455 commit 88c6ec5

File tree

5 files changed

+37
-29
lines changed

5 files changed

+37
-29
lines changed

denops/fall/picker.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ import { Scheduler } from "./lib/scheduler.ts";
2121
import { Cmdliner } from "./util/cmdliner.ts";
2222
import { isIncrementalMatcher } from "./util/predicate.ts";
2323
import { buildMappingHelpPages } from "./util/mapping.ts";
24-
import { emitPickerEnter, emitPickerLeave } from "./util/emitter.ts";
24+
import {
25+
emitPickerEnterSystem,
26+
emitPickerLeaveSystem,
27+
} from "./util/emitter.ts";
2528
import { CollectProcessor } from "./processor/collect.ts";
2629
import { MatchProcessor } from "./processor/match.ts";
2730
import { SortProcessor } from "./processor/sort.ts";
@@ -276,11 +279,11 @@ export class Picker<T extends Detail> implements AsyncDisposable {
276279
},
277280
);
278281

279-
// Emit 'FallPickerEnter/FallPickerLeave' autocmd
282+
// Emit 'FallPickerEnterSystem/FallPickerLeaveSystem' autocmd
280283
stack.defer(async () => {
281-
await emitPickerLeave(denops, this.#name);
284+
await emitPickerLeaveSystem(denops, this.#name);
282285
});
283-
await emitPickerEnter(denops, this.#name);
286+
await emitPickerEnterSystem(denops, this.#name);
284287

285288
return stack.move();
286289
}

denops/fall/util/emitter.ts

+12-10
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,33 @@ import type { Denops } from "jsr:@denops/std@^7.3.2";
22
import { emit } from "jsr:@denops/std@^7.3.2/autocmd";
33

44
/**
5-
* Save current cmap and emit `User FallPickerEnter:{name}` autocmd.
6-
*
7-
* The saved cmap will be restored by `emitPickerLeave`.
5+
* Emit `User FallPickerEnterSystem:{name}` autocmd.
86
*/
9-
export async function emitPickerEnter(
7+
export async function emitPickerEnterSystem(
108
denops: Denops,
119
name: string,
1210
): Promise<void> {
1311
try {
14-
await emit(denops, "User", `FallPickerEnter:${name}`, { nomodeline: true });
12+
await emit(denops, "User", `FallPickerEnterSystem:${name}`, {
13+
nomodeline: true,
14+
});
1515
} catch (err) {
16-
console.warn(`[fall] Failed to emit FallPickerEnter:${name}`, err);
16+
console.warn(`[fall] Failed to emit FallPickerEnterSystem:${name}`, err);
1717
}
1818
}
1919

2020
/**
21-
* Restore saved cmap and emit `User FallPickerLeave:{name}` autocmd.
21+
* Emit `User FallPickerLeaveSystem:{name}` autocmd.
2222
*/
23-
export async function emitPickerLeave(
23+
export async function emitPickerLeaveSystem(
2424
denops: Denops,
2525
name: string,
2626
): Promise<void> {
2727
try {
28-
await emit(denops, "User", `FallPickerLeave:${name}`, { nomodeline: true });
28+
await emit(denops, "User", `FallPickerLeaveSystem:${name}`, {
29+
nomodeline: true,
30+
});
2931
} catch (err) {
30-
console.warn(`[fall] Failed to emit FallPickerLeave:${name}`, err);
32+
console.warn(`[fall] Failed to emit FallPickerLeaveSystem:${name}`, err);
3133
}
3234
}

denops/fall/util/emitter_test.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
import { assertEquals } from "jsr:@std/assert@^1.0.6";
22
import { DenopsStub } from "jsr:@denops/test@^3.0.4/stub";
33

4-
import { emitPickerEnter, emitPickerLeave } from "./emitter.ts";
4+
import { emitPickerEnterSystem, emitPickerLeaveSystem } from "./emitter.ts";
55

6-
Deno.test("emitPickerEnter", async (t) => {
7-
await t.step("emit 'User FallPickerEnter:{name}'", async () => {
6+
Deno.test("emitPickerEnterSystem", async (t) => {
7+
await t.step("emit 'User FallPickerEnterSystem:{name}'", async () => {
88
const called: [string, Record<PropertyKey, unknown>][] = [];
99
const denops = new DenopsStub({
1010
cmd(name, ctx): Promise<void> {
1111
called.push([name, ctx]);
1212
return Promise.resolve();
1313
},
1414
});
15-
await emitPickerEnter(denops, "test");
15+
await emitPickerEnterSystem(denops, "test");
1616
assertEquals(called, [
17-
["do <nomodeline> User FallPickerEnter:test", {}],
17+
["do <nomodeline> User FallPickerEnterSystem:test", {}],
1818
]);
1919
});
2020
});
2121

22-
Deno.test("emitPickerLeave", async (t) => {
23-
await t.step("emit 'User FallPickerLeave:{name}'", async () => {
22+
Deno.test("emitPickerLeaveSystem", async (t) => {
23+
await t.step("emit 'User FallPickerLeaveSystem:{name}'", async () => {
2424
const called: [string, Record<PropertyKey, unknown>][] = [];
2525
const denops = new DenopsStub({
2626
cmd(name, ctx): Promise<void> {
2727
called.push([name, ctx]);
2828
return Promise.resolve();
2929
},
3030
});
31-
await emitPickerLeave(denops, "test");
31+
await emitPickerLeaveSystem(denops, "test");
3232
assertEquals(called, [
33-
["do <nomodeline> User FallPickerLeave:test", {}],
33+
["do <nomodeline> User FallPickerLeaveSystem:test", {}],
3434
]);
3535
});
3636
});

plugin/fall.vim

+7-2
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,24 @@ command! -nargs=0 FallCustom call fall#command#FallCustom#call()
1111
command! -nargs=0 FallCustomReload call fall#command#FallCustomReload#call()
1212
command! -nargs=0 FallCustomRecache call fall#command#FallCustomRecache#call()
1313

14+
function! s:bypass(event) abort
15+
let l:name = matchstr(expand('<amatch>'), '^.\+:\zs.*$')
16+
execute printf('doautocmd <nomodeline> User %s:%s', a:event, l:name)
17+
endfunction
18+
1419
augroup fall_plugin
1520
autocmd! *
1621
autocmd User FallPickerEnter:* :
1722
autocmd User FallPickerLeave:* :
1823
autocmd User FallCustomLoaded :
1924
autocmd User FallCustomRecached :
2025
autocmd User FallPreviewRendered:* :
26+
autocmd User FallPickerEnterSystem:* ++nested call s:bypass('FallPickerEnter')
27+
autocmd User FallPickerLeaveSystem:* ++nested call s:bypass('FallPickerLeave')
2128
augroup END
2229

2330
if !exists('g:fall_custom_path')
2431
let g:fall_custom_path = has('nvim')
2532
\ ? expand(join([stdpath('config'), 'fall', 'custom.ts'], s:sep))
2633
\ : expand(join([$HOME, '.vim', 'fall', 'custom.ts'], s:sep))
2734
endif
28-
29-

plugin/fall/mapping.vim

+2-4
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ cnoremap <silent> <Plug>(fall-action-select) <Cmd>call fall#action('@select')<CR
6363
6464
if !get(g:, 'fall_disable_default_mapping')
6565
function! s:define(lhs, rhs) abort
66-
if !hasmapto(a:rhs, 'c') && empty(maparg(a:lhs, 'c'))
67-
execute 'cnoremap <silent> <nowait> ' . a:lhs . ' ' . a:rhs
68-
endif
66+
execute 'cnoremap <silent> <nowait> ' .. a:lhs .. ' ' .. a:rhs
6967
endfunction
7068

7169
function! s:map_picker() abort
@@ -110,6 +108,6 @@ if !get(g:, 'fall_disable_default_mapping')
110108

111109
augroup fall_mapping_plugin
112110
autocmd!
113-
autocmd User FallPickerEnter:* call s:map_picker()
111+
autocmd User FallPickerEnterSystem:* call s:map_picker()
114112
augroup END
115113
endif

0 commit comments

Comments
 (0)