aboutsummaryrefslogtreecommitdiffstats
path: root/bundle/insert-layout
diff options
context:
space:
mode:
Diffstat (limited to 'bundle/insert-layout')
-rw-r--r--bundle/insert-layout/autoload/insert_layout.vim75
-rw-r--r--bundle/insert-layout/plugin/insert_layout.vim79
2 files changed, 80 insertions, 74 deletions
diff --git a/bundle/insert-layout/autoload/insert_layout.vim b/bundle/insert-layout/autoload/insert_layout.vim
new file mode 100644
index 0000000..e9f53b4
--- /dev/null
+++ b/bundle/insert-layout/autoload/insert_layout.vim
@@ -0,0 +1,75 @@
+vim9script
+
+const layout_names = {
+ us: 'US',
+ qwazerty: 'QWAZERTY2',
+ fr: 'French-numerical',
+ dvorak: 'Dvorak',
+}
+
+var normal_layout: string
+
+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
+
+export def InsertLayoutOff(): void
+ autocmd_delete([
+ {
+ group: 'insert_layout',
+ event: 'InsertEnter',
+ bufnr: bufnr(),
+ },
+ {
+ group: 'insert_layout',
+ event: 'InsertLeave',
+ bufnr: bufnr(),
+ },
+ ])
+enddef
+
+export 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
+
+export def Complete(arg_lead: string, cmd_line: string, cursor_pos: number): string
+ return join(keys(layout_names), "\n")
+enddef
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()