From 744e5df5cbf66e6f7fcab7920de2eee12e3456cd Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 19 Mar 2023 05:10:06 +0100 Subject: insert-layout: Move functions to autoload Clean up the plugin file and move the bulk of the work to autoload. --- bundle/insert-layout/plugin/insert_layout.vim | 79 ++------------------------- 1 file changed, 5 insertions(+), 74 deletions(-) (limited to 'bundle/insert-layout/plugin/insert_layout.vim') diff --git a/bundle/insert-layout/plugin/insert_layout.vim b/bundle/insert-layout/plugin/insert_layout.vim index b417fea..62c27f5 100644 --- a/bundle/insert-layout/plugin/insert_layout.vim +++ b/bundle/insert-layout/plugin/insert_layout.vim @@ -5,79 +5,10 @@ if exists('g:loaded_insert_layout') endif g:loaded_insert_layout = 1 -const layout_names = { - us: 'US', - qwazerty: 'QWAZERTY2', - fr: 'French-numerical', - dvorak: 'Dvorak', -} -var normal_layout: string +import autoload '../autoload/insert_layout.vim' -def IsLayoutSwitcherAvailable(): number - return executable('xkbswitch') -enddef - -def CurrentInputLayout(): string - return system('xkbswitch -ge') -enddef - -def SetInputLayout(layout: string): void - system('xkbswitch -se ' .. layout) -enddef - -def OnInsertEnter(layout: string): void - normal_layout = CurrentInputLayout() - - SetInputLayout(layout) -enddef - -def OnInsertLeave(): void - SetInputLayout(normal_layout) -enddef - -def InsertLayoutOff(): void - autocmd_delete([ - { - group: 'insert_layout', - event: 'InsertEnter', - bufnr: bufnr(), - }, - { - group: 'insert_layout', - event: 'InsertLeave', - bufnr: bufnr(), - }, - ]) -enddef - -def InsertLayoutOn(layout: string): void - if !IsLayoutSwitcherAvailable() - echoerr "'xkbswitch' command not found" - return - endif - - autocmd_add([ - { - replace: true, - group: 'insert_layout', - event: 'InsertEnter', - bufnr: bufnr(), - cmd: 'OnInsertEnter("' .. layout_names[layout] .. '")', - }, - { - replace: true, - group: 'insert_layout', - event: 'InsertLeave', - bufnr: bufnr(), - cmd: 'OnInsertLeave()', - }, - ]) -enddef - -def Complete(arg_lead: string, cmd_line: string, cursor_pos: number): string - return join(keys(layout_names), "\n") -enddef - -command! -nargs=1 -complete=custom,Complete InsertLayout InsertLayoutOn() -command! InsertLayoutOff InsertLayoutOff() +command! -nargs=1 -complete=custom,insert_layout.Complete + \ InsertLayout + \ insert_layout.InsertLayoutOn() +command! InsertLayoutOff insert_layout.InsertLayoutOff() -- cgit v1.2.3