diff options
Diffstat (limited to 'bundle/insert-layout/plugin')
-rw-r--r-- | bundle/insert-layout/plugin/insert_layout.vim | 79 |
1 files changed, 5 insertions, 74 deletions
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(<q-args>) -command! InsertLayoutOff InsertLayoutOff() +command! -nargs=1 -complete=custom,insert_layout.Complete + \ InsertLayout + \ insert_layout.InsertLayoutOn(<q-args>) +command! InsertLayoutOff insert_layout.InsertLayoutOff() |