From d37618a44e9679c1e6c6dc15e2cbbdc3990b6c17 Mon Sep 17 00:00:00 2001
From: TuDatTr
Date: Sat, 1 Feb 2020 22:24:41 +0100
Subject: [PATCH] Removed vimtex, coc as well as skeleton dir
---
config/.local/share/ranger/bookmarks | 2 +-
vim/.vim/ftplugin/markdown.vim | 2 +-
.../coc/start/coc.nvim-release/.gitignore | 12 -
.../coc/start/coc.nvim-release/LICENSE.md | 7 -
.../pack/coc/start/coc.nvim-release/Readme.md | 216 -
.../start/coc.nvim-release/autoload/coc.vim | 196 -
.../coc.nvim-release/autoload/coc/api.vim | 591 -
.../coc.nvim-release/autoload/coc/client.vim | 267 -
.../coc.nvim-release/autoload/coc/list.vim | 257 -
.../coc.nvim-release/autoload/coc/rpc.vim | 130 -
.../coc.nvim-release/autoload/coc/snippet.vim | 66 -
.../coc.nvim-release/autoload/coc/task.vim | 109 -
.../autoload/coc/terminal.vim | 96 -
.../coc.nvim-release/autoload/coc/util.vim | 971 -
.../coc.nvim-release/autoload/health/coc.vim | 87 -
.../coc/start/coc.nvim-release/bin/server.js | 28 -
.../coc.nvim-release/bin/terminateProcess.sh | 12 -
.../coc/start/coc.nvim-release/build/index.js | 67150 ----------------
.../start/coc.nvim-release/data/schema.json | 972 -
.../coc/start/coc.nvim-release/doc/coc.cnx | 1697 -
.../coc/start/coc.nvim-release/doc/coc.txt | 2424 -
.../coc/start/coc.nvim-release/history.md | 1166 -
.../coc/start/coc.nvim-release/package.json | 99 -
.../coc/start/coc.nvim-release/plugin/coc.vim | 382 -
vim/.vim/plugged/vimtex | 1 -
vim/.vim/skeleton/writeup.md | 12 -
vim/.vim/spell/de.utf-8.add | 17 +
vim/.vim/spell/de.utf-8.add.spl | Bin 10472 -> 10656 bytes
28 files changed, 19 insertions(+), 76950 deletions(-)
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/.gitignore
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/LICENSE.md
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/Readme.md
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/api.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/client.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/list.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/rpc.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/snippet.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/task.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/terminal.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/util.vim
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/autoload/health/coc.vim
delete mode 100755 vim/.vim/pack/coc/start/coc.nvim-release/bin/server.js
delete mode 100755 vim/.vim/pack/coc/start/coc.nvim-release/bin/terminateProcess.sh
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/build/index.js
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/data/schema.json
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/doc/coc.cnx
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/doc/coc.txt
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/history.md
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/package.json
delete mode 100644 vim/.vim/pack/coc/start/coc.nvim-release/plugin/coc.vim
delete mode 160000 vim/.vim/plugged/vimtex
delete mode 100644 vim/.vim/skeleton/writeup.md
diff --git a/config/.local/share/ranger/bookmarks b/config/.local/share/ranger/bookmarks
index 9f6e7c4..7daa4ec 100644
--- a/config/.local/share/ranger/bookmarks
+++ b/config/.local/share/ranger/bookmarks
@@ -9,4 +9,4 @@ t:/home/tuan/Templates
w:/home/tuan/workspace_l/Projects
k:/home/tuan/Documents/Protokolle/FSE
q:/home/tuan/.nextcloud/Quick Drop
-':/home/tuan
+':/home/tuan/.vim/pack
diff --git a/vim/.vim/ftplugin/markdown.vim b/vim/.vim/ftplugin/markdown.vim
index 2a6e12f..be2a0ea 100644
--- a/vim/.vim/ftplugin/markdown.vim
+++ b/vim/.vim/ftplugin/markdown.vim
@@ -4,5 +4,5 @@
" Begin Shortcuts
" Compilation
-map :!pandoc % -o %pdf --from gfm --template $HOME/Templates/Pandoc/eisvogel --listings &>/dev/null & disown
+map :!pandoc % -o %pdf --from markdown+pandoc_title_block --template $HOME/Templates/Pandoc/eisvogel --listings &>/dev/null & disown
map :!evince %pdf &>/dev/null & disown
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/.gitignore b/vim/.vim/pack/coc/start/coc.nvim-release/.gitignore
deleted file mode 100644
index a151978..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-lib
-*.map
-coverage
-__pycache__
-.pyc
-.log
-src
-publish.sh
-doc/tags
-doc/tags-cn
-node_modules
-src/__tests__/tags
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/LICENSE.md b/vim/.vim/pack/coc/start/coc.nvim-release/LICENSE.md
deleted file mode 100644
index bee2bf1..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/LICENSE.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright 2018-2018 by Qiming Zhao aaa
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/Readme.md b/vim/.vim/pack/coc/start/coc.nvim-release/Readme.md
deleted file mode 100644
index f56bfe6..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/Readme.md
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
-
-
-
Make your Vim/Neovim as smart as VSCode.
-
-
-
-
-
-
-
-
-
-
----
-
-Coc is an intellisense engine for Vim/Neovim.
-
-
-
-_True snippet and additional text editing support_
-
-Check out [Wiki](https://github.com/neoclide/coc.nvim/wiki), or [doc/coc.txt](doc/coc.txt) for the vim interface.
-
-## Quick Start
-
-Install [nodejs](https://nodejs.org/en/download/) when necessary:
-
-```sh
-curl -sL install-node.now.sh/lts | bash
-```
-
-For [vim-plug](https://github.com/junegunn/vim-plug) users:
-
-```vim
-" Use release branch (Recommend)
-Plug 'neoclide/coc.nvim', {'branch': 'release'}
-
-" Or latest tag
-Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'}
-" Or build from source code by use yarn: https://yarnpkg.com
-Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
-```
-
-in your `.vimrc` or `init.vim`, then restart vim and run `:PlugInstall`. Checkout [Install coc.nvim](https://github.com/neoclide/coc.nvim/wiki/Install-coc.nvim) wiki for more info.
-
-**Note**: The first time building from source code may be slow.
-
-## Example vim configuration
-
-Configuration is required to make coc.nvim easier to work with, since it doesn't
-change your key-mappings or vim options. This is done as much as possible to avoid conflict with your
-other plugins.
-
-**❗️Important**: some vim plugins could change keymappings. Use a command like
-`:verbose imap ` to make sure that your keymap has taken effect.
-
-```vim
-" if hidden is not set, TextEdit might fail.
-set hidden
-
-" Some servers have issues with backup files, see #649
-set nobackup
-set nowritebackup
-
-" Better display for messages
-set cmdheight=2
-
-" You will have bad experience for diagnostic messages when it's default 4000.
-set updatetime=300
-
-" don't give |ins-completion-menu| messages.
-set shortmess+=c
-
-" always show signcolumns
-set signcolumn=yes
-
-" Use tab for trigger completion with characters ahead and navigate.
-" Use command ':verbose imap ' to make sure tab is not mapped by other plugin.
-inoremap
- \ pumvisible() ? "\" :
- \ check_back_space() ? "\" :
- \ coc#refresh()
-inoremap pumvisible() ? "\" : "\"
-
-function! s:check_back_space() abort
- let col = col('.') - 1
- return !col || getline('.')[col - 1] =~# '\s'
-endfunction
-
-" Use to trigger completion.
-inoremap coc#refresh()
-
-" Use to confirm completion, `u` means break undo chain at current position.
-" Coc only does snippet and additional edit on confirm.
-inoremap pumvisible() ? "\" : "\u\"
-" Or use `complete_info` if your vim support it, like:
-" inoremap complete_info()["selected"] != "-1" ? "\" : "\u\"
-
-" Use `[g` and `]g` to navigate diagnostics
-nmap [g (coc-diagnostic-prev)
-nmap ]g (coc-diagnostic-next)
-
-" Remap keys for gotos
-nmap gd (coc-definition)
-nmap gy (coc-type-definition)
-nmap gi (coc-implementation)
-nmap gr (coc-references)
-
-" Use K to show documentation in preview window
-nnoremap K :call show_documentation()
-
-function! s:show_documentation()
- if (index(['vim','help'], &filetype) >= 0)
- execute 'h '.expand('')
- else
- call CocAction('doHover')
- endif
-endfunction
-
-" Highlight symbol under cursor on CursorHold
-autocmd CursorHold * silent call CocActionAsync('highlight')
-
-" Remap for rename current word
-nmap rn (coc-rename)
-
-" Remap for format selected region
-xmap f (coc-format-selected)
-nmap f (coc-format-selected)
-
-augroup mygroup
- autocmd!
- " Setup formatexpr specified filetype(s).
- autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
- " Update signature help on jump placeholder
- autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
-augroup end
-
-" Remap for do codeAction of selected region, ex: `aap` for current paragraph
-xmap a (coc-codeaction-selected)
-nmap a (coc-codeaction-selected)
-
-" Remap for do codeAction of current line
-nmap ac (coc-codeaction)
-" Fix autofix problem of current line
-nmap qf (coc-fix-current)
-
-" Create mappings for function text object, requires document symbols feature of languageserver.
-xmap if (coc-funcobj-i)
-xmap af (coc-funcobj-a)
-omap if (coc-funcobj-i)
-omap af (coc-funcobj-a)
-
-" Use for select selections ranges, needs server support, like: coc-tsserver, coc-python
-nmap (coc-range-select)
-xmap (coc-range-select)
-
-" Use `:Format` to format current buffer
-command! -nargs=0 Format :call CocAction('format')
-
-" Use `:Fold` to fold current buffer
-command! -nargs=? Fold :call CocAction('fold', )
-
-" use `:OR` for organize import of current buffer
-command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
-
-" Add status line support, for integration with other plugin, checkout `:h coc-status`
-set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
-
-" Using CocList
-" Show all diagnostics
-nnoremap a :CocList diagnostics
-" Manage extensions
-nnoremap e :CocList extensions
-" Show commands
-nnoremap c :CocList commands
-" Find symbol of current document
-nnoremap o :CocList outline
-" Search workspace symbols
-nnoremap s :CocList -I symbols
-" Do default action for next item.
-nnoremap j :CocNext
-" Do default action for previous item.
-nnoremap k :CocPrev
-" Resume latest coc list
-nnoremap p :CocListResume
-```
-
-## Articles
-
-- [coc.nvim 插件体系介绍](https://zhuanlan.zhihu.com/p/65524706)
-- [CocList 入坑指南](https://zhuanlan.zhihu.com/p/71846145)
-- [Create coc.nvim extension to improve vim experience](https://medium.com/@chemzqm/create-coc-nvim-extension-to-improve-vim-experience-4461df269173)
-
-## Trouble shooting
-
-Try these steps when you have problem with coc.nvim.
-
-- Make sure your vim version >= 8.0 by command `:version`.
-- If service failed to start, use command `:CocInfo` or `:checkhealth` on neovim.
-- Checkout the log of coc.nvim by command `:CocOpenLog`.
-- When you have issue with a languageserver, it's recommended to [checkout the output](https://github.com/neoclide/coc.nvim/wiki/Debug-language-server#using-output-channel)
-
-## Feedback
-
-- If you think Coc is useful, consider giving it a star.
-- If you have a question, [ask on gitter](https://gitter.im/neoclide/coc.nvim)
-- 中文用户请到 [中文 gitter](https://gitter.im/neoclide/coc-cn) 讨论
-- If something is not working, [create an issue](https://github.com/neoclide/coc.nvim/issues/new).
-
-
-
-## License
-
-MIT
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc.vim b/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc.vim
deleted file mode 100644
index a14e015..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc.vim
+++ /dev/null
@@ -1,196 +0,0 @@
-let g:coc#_context = {'start': 0, 'preselect': -1,'candidates': []}
-let g:coc_user_config = get(g:, 'coc_user_config', {})
-let g:coc_global_extensions = get(g:, 'coc_global_extensions', [])
-let g:coc_cygqwin_path_prefixes = get(g:, 'coc_cygqwin_path_prefixes', {})
-let g:coc_selected_text = ''
-let g:coc_vim_commands = []
-let s:watched_keys = []
-let s:is_vim = !has('nvim')
-let s:error_sign = get(g:, 'coc_status_error_sign', has('mac') ? '❌ ' : 'E')
-let s:warning_sign = get(g:, 'coc_status_warning_sign', has('mac') ? '⚠️ ' : 'W')
-let s:select_api = exists('*nvim_select_popupmenu_item')
-let s:callbacks = {}
-
-function! coc#expandable() abort
- return coc#rpc#request('snippetCheck', [1, 0])
-endfunction
-
-function! coc#jumpable() abort
- return coc#rpc#request('snippetCheck', [0, 1])
-endfunction
-
-function! coc#expandableOrJumpable() abort
- return coc#rpc#request('snippetCheck', [1, 1])
-endfunction
-
-" add vim command to CocCommand list
-function! coc#add_command(id, cmd, ...)
- let config = {'id':a:id, 'cmd':a:cmd, 'title': get(a:,1,'')}
- call add(g:coc_vim_commands, config)
- if !coc#rpc#ready() | return | endif
- call coc#rpc#notify('addCommand', [config])
-endfunction
-
-function! coc#refresh() abort
- return "\=coc#start()\"
-endfunction
-
-function! coc#on_enter()
- if !coc#rpc#ready()
- return ''
- endif
- if s:is_vim
- call coc#rpc#notify('CocAutocmd', ['Enter', bufnr('%')])
- else
- call coc#rpc#request('CocAutocmd', ['Enter', bufnr('%')])
- endif
- return ''
-endfunction
-
-function! coc#_insert_key(method, key, ...) abort
- if get(a:, 1, 1)
- call coc#_cancel()
- endif
- return "\=coc#rpc#".a:method."('doKeymap', ['".a:key."'])\"
-endfunction
-
-function! coc#_complete() abort
- let items = get(g:coc#_context, 'candidates', [])
- let preselect = get(g:coc#_context, 'preselect', -1)
- call complete(
- \ g:coc#_context.start + 1,
- \ items)
- if s:select_api && len(items) && preselect != -1
- call nvim_select_popupmenu_item(preselect, v:false, v:false, {})
- endif
- return ''
-endfunction
-
-function! coc#_do_complete(start, items, preselect)
- let g:coc#_context = {
- \ 'start': a:start,
- \ 'candidates': a:items,
- \ 'preselect': a:preselect
- \}
- if mode() =~# 'i' && &paste != 1
- call feedkeys("\CocRefresh", 'i')
- endif
-endfunction
-
-function! coc#_select_confirm()
- if !exists('##TextChangedP')
- return "\"
- endif
- let hasSelected = coc#rpc#request('hasSelected', [])
- if hasSelected | return "\" | endif
- return "\\"
-endfunction
-
-function! coc#_selected()
- if !pumvisible() | return 0 | endif
- return coc#rpc#request('hasSelected', [])
-endfunction
-
-function! coc#_hide() abort
- if !pumvisible() | return | endif
- call feedkeys("\", 'in')
-endfunction
-
-function! coc#_cancel()
- call coc#util#close_popup()
- " hack for close pum
- if pumvisible() && &paste != 1
- let g:coc#_context = {'start': 0, 'preselect': -1,'candidates': []}
- call feedkeys("\CocRefresh", 'i')
- endif
-endfunction
-
-function! coc#_select() abort
- if !pumvisible() | return | endif
- call feedkeys("\", 'in')
-endfunction
-
-function! coc#start(...)
- let opt = coc#util#get_complete_option()
- call CocActionAsync('startCompletion', extend(opt, get(a:, 1, {})))
- return ''
-endfunction
-
-" used for statusline
-function! coc#status()
- let info = get(b:, 'coc_diagnostic_info', {})
- let msgs = []
- if get(info, 'error', 0)
- call add(msgs, s:error_sign . info['error'])
- endif
- if get(info, 'warning', 0)
- call add(msgs, s:warning_sign . info['warning'])
- endif
- return s:trim(join(msgs, ' ') . ' ' . get(g:, 'coc_status', ''))
-endfunction
-
-function! s:trim(str)
- if exists('*trim')
- return trim(a:str)
- endif
- return substitute(a:str, '\s\+$', '', '')
-endfunction
-
-function! coc#config(section, value)
- let g:coc_user_config[a:section] = a:value
- call coc#rpc#notify('updateConfig', [a:section, a:value])
-endfunction
-
-function! coc#add_extension(...)
- if a:0 == 0 | return | endif
- call extend(g:coc_global_extensions, a:000)
-endfunction
-
-function! coc#_watch(key)
- if s:is_vim | return | endif
- if index(s:watched_keys, a:key) == -1
- call add(s:watched_keys, a:key)
- call dictwatcheradd(g:, a:key, function('s:GlobalChange'))
- endif
-endfunction
-
-function! coc#_unwatch(key)
- if s:is_vim | return | endif
- let idx = index(s:watched_keys, a:key)
- if idx != -1
- call remove(s:watched_keys, idx)
- call dictwatcherdel(g:, a:key, function('s:GlobalChange'))
- endif
-endfunction
-
-function! s:GlobalChange(dict, key, val)
- call coc#rpc#notify('GlobalChange', [a:key, get(a:val, 'old', v:null), get(a:val, 'new', v:null)])
-endfunction
-
-function! coc#_map()
- if !s:select_api | return | endif
- for i in range(1, 9)
- exe 'inoremap '.i.' call nvim_select_popupmenu_item('.(i - 1).', v:true, v:true, {})'
- endfor
-endfunction
-
-function! coc#_unmap()
- if !s:select_api | return | endif
- for i in range(1, 9)
- exe 'silent! iunmap '.i
- endfor
-endfunction
-
-function! coc#on_notify(id, method, Cb)
- let key = a:id. '-'.a:method
- let s:callbacks[key] = a:Cb
- call coc#rpc#notify('registNotification', [a:id, a:method])
-endfunction
-
-function! coc#do_notify(id, method, result)
- let key = a:id. '-'.a:method
- let Fn = s:callbacks[key]
- if !empty(Fn)
- call Fn(a:result)
- endif
-endfunction
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/api.vim b/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/api.vim
deleted file mode 100644
index 07b6eb8..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/api.vim
+++ /dev/null
@@ -1,591 +0,0 @@
-" ============================================================================
-" Description: Client api used by vim8
-" Author: Qiming Zhao
-" Licence: MIT licence
-" Last Modified: June 28, 2019
-" ============================================================================
-if has('nvim') | finish | endif
-let s:funcs = {}
-let s:prop_id = 1000
-let s:namespace_id = 1
-let s:namespace_cache = {}
-
-" helper {{
-function! s:buf_line_count(bufnr) abort
- if bufnr('%') == a:bufnr
- return line('$')
- endif
- if exists('*getbufline')
- let lines = getbufline(a:bufnr, 1, '$')
- return len(lines)
- endif
- let curr = bufnr('%')
- execute 'buffer '.a:bufnr
- let n = line('$')
- execute 'buffer '.curr
- return n
-endfunction
-
-function! s:execute(cmd)
- if a:cmd =~# '^echo'
- execute a:cmd
- else
- silent! execute a:cmd
- endif
-endfunction
-" }}"
-
-" nvim client methods {{
-function! s:funcs.set_current_dir(dir) abort
- execute 'cd '.a:dir
-endfunction
-
-function! s:funcs.set_var(name, value) abort
- execute 'let g:'.a:name.'= a:value'
-endfunction
-
-function! s:funcs.del_var(name) abort
- execute 'unlet g:'.a:name
-endfunction
-
-function! s:funcs.set_option(name, value) abort
- execute 'let &'.a:name.' = a:value'
-endfunction
-
-function! s:funcs.set_current_buf(bufnr) abort
- if !bufexists(a:bufnr) | return | endif
- execute 'buffer '.a:bufnr
-endfunction
-
-function! s:funcs.set_current_win(win_id) abort
- let [tabnr, winnr] = win_id2tabwin(a:win_id)
- if tabnr == 0 | return | endif
- execute 'normal! '.tabnr.'gt'
- execute winnr.' wincmd w'
-endfunction
-
-function! s:funcs.set_current_tabpage(tabnr) abort
- execute 'normal! '.a:tabnr.'gt'
-endfunction
-
-function! s:funcs.list_wins() abort
- return map(getwininfo(), 'v:val["winid"]')
-endfunction
-
-function! s:funcs.call_atomic(calls)
- let res = []
- for [key, arglist] in a:calls
- let name = key[5:]
- try
- call add(res, call(s:funcs[name], arglist))
- catch /.*/
- return [res, v:exception]
- endtry
- endfor
- return [res, v:null]
-endfunction
-
-function! s:funcs.set_client_info(...) abort
-endfunction
-
-function! s:funcs.subscribe(...) abort
-endfunction
-
-function! s:funcs.unsubscribe(...) abort
-endfunction
-
-function! s:funcs.call_function(method, args) abort
- return call(a:method, a:args)
-endfunction
-
-function! s:funcs.call_dict_function(dict, method, args) abort
- return call(a:method, a:args, a:dict)
-endfunction
-
-function! s:funcs.command(command) abort
- " command that could cause cursor vanish
- if a:command =~# '^echo' || a:command =~# '^redraw' || a:command =~# '^sign place'
- call timer_start(0, {-> s:execute(a:command)})
- else
- execute a:command
- endif
-endfunction
-
-function! s:funcs.eval(expr) abort
- return eval(a:expr)
-endfunction
-
-function! s:funcs.get_api_info()
- let names = coc#api#func_names()
- return [1, {'functions': map(names, '{"name": "nvim_".v:val}')}]
-endfunction
-
-function! s:funcs.list_bufs()
- return map(getbufinfo({'buflisted': 1}), 'v:val["bufnr"]')
-endfunction
-
-function! s:funcs.feedkeys(keys, mode, escape_csi)
- call feedkeys(a:keys, a:mode)
-endfunction
-
-function! s:funcs.list_runtime_paths()
- return split(&runtimepath, ',')
-endfunction
-
-function! s:funcs.command_output(cmd)
- return execute(a:cmd)
-endfunction
-
-function! s:funcs.get_current_line()
- return getline('.')
-endfunction
-
-function! s:funcs.set_current_line(line)
- call setline('.', a:line)
-endfunction
-
-function! s:funcs.del_current_line(line)
- execute 'normal! dd'
-endfunction
-
-function! s:funcs.get_var(var)
- return get(g:, a:var, v:null)
-endfunction
-
-function! s:funcs.get_vvar(var)
- return get(v:, a:var, v:null)
-endfunction
-
-function! s:funcs.get_option(name)
- return eval('&'.a:name)
-endfunction
-
-function! s:funcs.get_current_buf()
- return bufnr('%')
-endfunction
-
-function! s:funcs.get_current_win()
- return win_getid()
-endfunction
-
-function! s:funcs.get_current_tabpage()
- return tabpagenr()
-endfunction
-
-function! s:funcs.list_tabpages()
- return range(1, tabpagenr('$'))
-endfunction
-
-function! s:funcs.get_mode()
- return {'blocking': v:false, 'mode': mode()}
-endfunction
-
-function! s:funcs.strwidth(str)
- return strwidth(a:str)
-endfunction
-
-function! s:funcs.out_write(str)
- echon a:str
-endfunction
-
-function! s:funcs.err_write(str)
- echoerr a:str
-endfunction
-
-function! s:funcs.err_writeln(str)
- echoerr a:str
-endfunction
-
-function! s:funcs.create_namespace(name) abort
- if empty(a:name)
- let id = s:namespace_id
- let s:namespace_id = s:namespace_id + 1
- return id
- endif
- let id = get(s:namespace_cache, a:name, 0)
- if !id
- let id = s:namespace_id
- let s:namespace_id = s:namespace_id + 1
- let s:namespace_cache[a:name] = id
- endif
- return id
-endfunction
-" }}
-
-" buffer methods {{
-function! s:funcs.buf_set_option(bufnr, name, val)
- let val = a:val
- if type(val) == type(v:true)
- if val == v:true
- let val = 1
- else
- let val = 0
- endif
- endif
- return setbufvar(a:bufnr, '&'.a:name, val)
-endfunction
-
-function! s:funcs.buf_get_changedtick(bufnr)
- return getbufvar(a:bufnr, 'changedtick')
-endfunction
-
-function! s:funcs.buf_is_valid(bufnr)
- return bufloaded(a:bufnr) ? v:true : v:false
-endfunction
-
-function! s:funcs.buf_get_mark(bufnr, name)
- let nr = bufnr('%')
- if a:bufnr != 0 || a:bufnr != nr
- throw 'buf_get_mark support current buffer only'
- endif
- return [line("'" . a:name), col("'" . a:name)]
-endfunction
-
-function! s:funcs.buf_add_highlight(bufnr, srcId, hlGroup, line, colStart, colEnd) abort
- if !has('textprop')
- return
- endif
- let bufnr = a:bufnr == 0 ? bufnr('%') : a:bufnr
- let key = 'Coc'.a:hlGroup
- if empty(prop_type_get(key))
- call prop_type_add(key, {'highlight': a:hlGroup, 'combine': 1})
- endif
- let total = strlen(getbufline(bufnr, a:line + 1)[0])
- let end = a:colEnd
- if end == -1
- let end = total
- else
- let end = min([end, total])
- endif
- if end <= a:colStart
- return
- endif
- let id = 0
- if a:srcId != -1
- let cached = getbufvar(bufnr, 'prop_namespace_'.a:srcId, [])
- let id = s:prop_id
- let s:prop_id = id + 1
- call add(cached, id)
- call setbufvar(bufnr, 'prop_namespace_'.a:srcId, cached)
- endif
- try
- call prop_add(a:line + 1, a:colStart + 1, {'length': end - a:colStart, 'bufnr': bufnr, 'type': key, 'id': id})
- catch /^Vim\%((\a\+)\)\=:E967/
- " ignore 967
- endtry
-endfunction
-
-function! s:funcs.buf_clear_namespace(bufnr, srcId, startLine, endLine) abort
- if !has('textprop')
- return
- endif
- if a:srcId == -1
- if a:endLine == -1
- call prop_clear(a:startLine + 1, {'bufnr': a:bufnr})
- else
- call prop_clear(a:startLine + 1, a:endLine + 1, {'bufnr': a:bufnr})
- endif
- else
- let cached = getbufvar(a:bufnr, 'prop_namespace_'.a:srcId, [])
- if empty(cached)
- return
- endif
- call setbufvar(a:bufnr, 'prop_namespace_'.a:srcId, [])
- for id in cached
- if a:endLine == -1
- if a:startLine == 0 && a:endLine == -1
- call prop_remove({'id':id, 'bufnr': a:bufnr})
- elseif a:endLine != -1
- call prop_remove({'id':id, 'bufnr': a:bufnr}, a:startLine, a:endLine)
- else
- let len = s:buf_line_count(a:bufnr)
- call prop_remove({'id':id, 'bufnr': a:bufnr}, a:startLine, len)
- endif
- else
- endif
- endfor
- endif
-endfunction
-
-function! s:funcs.buf_line_count(bufnr) abort
- return s:buf_line_count(a:bufnr)
-endfunction
-
-function! s:funcs.buf_attach(...)
- " not supported
- return 1
-endfunction
-
-function! s:funcs.buf_detach()
- " not supported
- return 1
-endfunction
-
-function! s:funcs.buf_get_lines(bufnr, start, end, strict) abort
- let lines = getbufline(a:bufnr, 1, '$')
- let start = a:start < 0 ? a:start + 1 : a:start
- let end = a:end < 0 ? a:end + 1 : a:end
- if a:strict && end > len(lines)
- throw 'line number out of range: '. end
- endif
- return lines[start : end - 1]
-endfunction
-
-function! s:funcs.buf_set_lines(bufnr, start, end, strict, ...) abort
- let replacement = get(a:, 1, [])
- let lineCount = s:buf_line_count(a:bufnr)
- let startLnum = a:start >= 0 ? a:start + 1 : lineCount + a:start + 1
- let end = a:end >= 0 ? a:end : lineCount + a:end + 1
- if end == lineCount + 1
- let end = lineCount
- endif
- let delCount = end - (startLnum - 1)
- let changeBuffer = 0
- let curr = bufnr('%')
- if a:bufnr != curr && !exists('*setbufline')
- let changeBuffer = 1
- exe 'buffer '.a:bufnr
- endif
- if a:bufnr == curr || changeBuffer
- " replace
- if delCount == len(replacement)
- call setline(startLnum, replacement)
- else
- if len(replacement)
- call append(startLnum - 1, replacement)
- endif
- if delCount
- let start = startLnum + len(replacement)
- let saved_reg = @"
- silent execute start . ','.(start + delCount - 1).'d'
- let @" = saved_reg
- endif
- endif
- if changeBuffer
- exe 'buffer '.curr
- endif
- elseif exists('*setbufline')
- " replace
- if delCount == len(replacement)
- " 8.0.1039
- call setbufline(a:bufnr, startLnum, replacement)
- else
- if len(replacement)
- " 8.10037
- call appendbufline(a:bufnr, startLnum - 1, replacement)
- endif
- if delCount
- let start = startLnum + len(replacement)
- "8.1.0039
- call deletebufline(a:bufnr, start, start + delCount - 1)
- endif
- endif
- endif
-endfunction
-
-function! s:funcs.buf_set_name(bufnr, name) abort
- let nr = bufnr('%')
- if a:bufnr != nr
- throw 'buf_set_name support current buffer only'
- else
- execute '0f'
- execute 'file '.fnameescape(a:name)
- endif
-endfunction
-
-function! s:funcs.buf_get_var(bufnr, name)
- return getbufvar(a:bufnr, a:name)
-endfunction
-
-function! s:funcs.buf_set_var(bufnr, name, val)
- if !bufloaded(a:bufnr) | return | endif
- call setbufvar(a:bufnr, a:name, a:val)
-endfunction
-
-function! s:funcs.buf_del_var(bufnr, name)
- call setbufvar(a:bufnr, a:name, v:null)
-endfunction
-
-function! s:funcs.buf_get_option(bufnr, name)
- return getbufvar(a:bufnr, '&'.a:name)
-endfunction
-
-function! s:funcs.buf_get_name(bufnr)
- return bufname(a:bufnr)
-endfunction
-" }}
-
-" window methods {{
-function! s:funcs.win_get_buf(winid)
- return winbufnr(a:winid)
-endfunction
-
-function! s:funcs.win_get_position(win_id) abort
- let [row, col] = win_screenpos(a:win_id)
- if row == 0 && col == 0
- throw 'Invalid window '.a:win_id
- endif
- return [row - 1, col - 1]
-endfunction
-
-function! s:funcs.win_get_height(win_id) abort
- return winheight(a:win_id)
-endfunction
-
-function! s:funcs.win_get_width(win_id) abort
- return winwidth(a:win_id)
-endfunction
-
-function! s:funcs.win_get_cursor(win_id) abort
- let winid = win_getid()
- call win_gotoid(a:win_id)
- let pos = [line('.'), col('.')-1]
- call win_gotoid(winid)
- return pos
-endfunction
-
-function! s:funcs.win_get_var(win_id, name) abort
- return gettabwinvar(0, a:win_id, a:name)
-endfunction
-
-function! s:funcs.win_set_width(win_id, width) abort
- let winid = win_getid()
- call win_gotoid(a:win_id)
- execute 'vertical resize '.a:width
- call win_gotoid(winid)
-endfunction
-
-function! s:funcs.win_get_option(win_id, name) abort
- return gettabwinvar(0, a:win_id, '&'.a:name)
-endfunction
-
-function! s:funcs.win_set_height(win_id, height) abort
- let winnr = win_id2win(a:win_id)
- if winnr != 0
- let curr = winnr()
- if winnr == curr
- execute 'resize '.a:height
- else
- execute winnr.'wincmd w'
- execute 'resize '.a:height
- wincmd p
- endif
- endif
-endfunction
-
-function! s:funcs.win_set_option(win_id, name, value) abort
- let val = a:value
- if type(val) == type(v:true)
- if val == v:true
- let val = 1
- else
- let val = 0
- endif
- endif
- call setwinvar(a:win_id, '&'.a:name, val)
-endfunction
-
-function! s:funcs.win_set_var(win_id, name, value) abort
- call setwinvar(a:win_id, a:name, a:value)
-endfunction
-
-function! s:funcs.win_del_var(win_id, name) abort
- call settabwinvar(0, a:win_id, a:name, v:null)
-endfunction
-
-function! s:funcs.win_is_valid(win_id) abort
- let info = getwininfo(a:win_id)
- return !empty(info)
-endfunction
-
-function! s:funcs.win_get_number(win_id) abort
- let info = getwininfo(a:win_id)
- if empty(info)
- throw 'Invalid window id '.a:win_id
- endif
- return info[0]['winnr']
-endfunction
-
-function! s:funcs.win_set_cursor(win_id, pos) abort
- let winnr = win_id2win(a:win_id)
- if winnr != 0
- let [line, col] = a:pos
- let curr = winnr()
- if winnr == curr
- call cursor(line, col + 1)
- else
- execute winnr.'wincmd w'
- call cursor(line, col + 1)
- execute curr.'wincmd w'
- endif
- endif
-endfunction
-
-function! s:funcs.win_close(win_id, ...) abort
- let curr = win_getid(a:win_id)
- call win_gotoid(a:win_id)
- close!
- call win_gotoid(curr)
-endfunction
-
-function! s:funcs.win_get_tabpage(win_id) abort
- let info = getwininfo(a:win_id)
- if !info
- throw 'Invalid window id '.a:win_id
- endif
- return info[0]['tabnr']
-endfunction
-" }}
-
-" tabpage methods {{
-function! s:funcs.tabpage_get_number(id)
- return a:id
-endfunction
-
-function! s:funcs.tabpage_list_wins(tabnr)
- let info = getwininfo()
- return map(filter(info, 'v:val["tabnr"] == a:tabnr'), 'v:val["winid"]')
-endfunction
-
-function! s:funcs.tabpage_get_var(tabnr, name)
- return gettabvar(a:tabnr, a:name, v:null)
-endfunction
-
-function! s:funcs.tabpage_set_var(tabnr, name, value)
- call settabvar(a:tabnr, a:name, a:value)
-endfunction
-
-function! s:funcs.tabpage_del_var(tabnr, name)
- call settabvar(a:tabnr, a:name, v:null)
-endfunction
-
-function! s:funcs.tabpage_is_valid(tabnr)
- let max = tabpagenr('$')
- return a:tabnr <= max
-endfunction
-
-function! s:funcs.tabpage_get_win(tabnr)
- let wnr = tabpagewinnr(a:tabnr)
- return win_getid(wnr, a:tabnr)
-endfunction
-" }}
-
-function! coc#api#func_names() abort
- return keys(s:funcs)
-endfunction
-
-function! coc#api#call(method, args) abort
- let err = v:null
- let res = v:null
- try
- let res = call(s:funcs[a:method], a:args)
- catch /.*/
- let err = v:exception
- endtry
- return [err, res]
-endfunction
-
-function! coc#api#notify(method, args) abort
- call call(s:funcs[a:method], a:args)
-endfunction
-" vim: set sw=2 ts=2 sts=2 et tw=78 foldmarker={{,}} foldmethod=marker foldlevel=0:
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/client.vim b/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/client.vim
deleted file mode 100644
index 03e0686..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/client.vim
+++ /dev/null
@@ -1,267 +0,0 @@
-let s:root = expand(':h:h:h')
-let s:is_vim = !has('nvim')
-let s:is_win = has("win32") || has("win64")
-let s:clients = {}
-
-let s:logfile = tempname()
-if s:is_vim && get(g:, 'node_client_debug', 0)
- call ch_logfile(s:logfile, 'w')
-endif
-
-" create a client
-function! coc#client#create(name, command)
- let client = {}
- let client['command'] = a:command
- let client['name'] = a:name
- let client['running'] = 0
- let client['async_req_id'] = 1
- let client['async_callbacks'] = {}
- " vim only
- let client['channel'] = v:null
- " neovim only
- let client['chan_id'] = 0
- let client['start'] = function('s:start', [], client)
- let client['request'] = function('s:request', [], client)
- let client['notify'] = function('s:notify', [], client)
- let client['request_async'] = function('s:request_async', [], client)
- let client['on_async_response'] = function('s:on_async_response', [], client)
- let s:clients[a:name] = client
- return client
-endfunction
-
-function! s:start() dict
- if self.running | return | endif
- if s:is_vim
- let $VIM_NODE_RPC = 1
- let $COC_NVIM = 1
- let options = {
- \ 'in_mode': 'json',
- \ 'out_mode': 'json',
- \ 'err_mode': 'nl',
- \ 'err_cb': {channel, message -> s:on_stderr(self.name, split(message, "\n"))},
- \ 'exit_cb': {channel, code -> s:on_exit(self.name, code)},
- \}
- if has("patch-8.1.350")
- let options['noblock'] = 1
- endif
- let job = job_start(self.command, options)
- let status = job_status(job)
- if status !=# 'run'
- let self.running = 0
- echohl Error | echom 'Failed to start '.self.name.' service' | echohl None
- return
- endif
- let self['running'] = 1
- let self['channel'] = job_getchannel(job)
- else
- let chan_id = jobstart(self.command, {
- \ 'rpc': 1,
- \ 'on_stderr': {channel, msgs -> s:on_stderr(self.name, msgs)},
- \ 'on_exit': {channel, code -> s:on_exit(self.name, code)},
- \})
- if chan_id <= 0
- echohl Error | echom 'Failed to start '.self.name.' service' | echohl None
- return
- endif
- let self['chan_id'] = chan_id
- let self['running'] = 1
- endif
-endfunction
-
-function! s:on_stderr(name, msgs)
- if get(g:, 'coc_vim_leaving', 0) | return | endif
- let data = filter(copy(a:msgs), '!empty(v:val)')
- if empty(data) | return | endif
- let client = a:name ==# 'coc' ? '' : ' client '.a:name
- let data[0] = '[coc.nvim]'.client.' error: ' . data[0]
- call coc#util#echo_messages('Error', data)
-endfunction
-
-function! s:on_exit(name, code) abort
- if get(g:, 'coc_vim_leaving', 0) | return | endif
- let client = get(s:clients, a:name, v:null)
- if empty(client) | return | endif
- if client['running'] != 1 | return | endif
- let client['running'] = 0
- let client['chan_id'] = 0
- let client['channel'] = v:null
- let client['async_req_id'] = 1
- if a:code != 0 && a:code != 143
- echohl Error | echom 'client '.a:name. ' abnormal exit with: '.a:code | echohl None
- endif
-endfunction
-
-function! s:get_channel(client)
- if s:is_vim
- return a:client['channel']
- endif
- return a:client['chan_id']
-endfunction
-
-function! s:request(method, args) dict
- let channel = s:get_channel(self)
- if empty(channel) | return '' | endif
- try
- if s:is_vim
- let res = ch_evalexpr(channel, [a:method, a:args], {'timeout': 30000})
- if type(res) == 1 && res ==# ''
- throw 'timeout after 30s'
- endif
- let [l:errmsg, res] = res
- if !empty(l:errmsg)
- throw l:errmsg
- else
- return res
- endif
- endif
- return call('rpcrequest', [channel, a:method] + a:args)
- catch /.*/
- if v:exception =~# 'E475'
- if get(g:, 'coc_vim_leaving', 0) | return | endif
- echohl Error | echom '['.self.name.'] server connection lost' | echohl None
- let name = self.name
- call s:on_exit(name, 0)
- execute 'silent do User ConnectionLost'.toupper(name[0]).name[1:]
- elseif v:exception =~# 'E12'
- " neovim's bug, ignore it
- else
- echohl Error | echo 'Error on request ('.a:method.'): '.v:exception | echohl None
- endif
- endtry
-endfunction
-
-function! s:notify(method, args) dict
- let channel = s:get_channel(self)
- if empty(channel) | return '' | endif
- try
- if s:is_vim
- call ch_sendraw(channel, json_encode([0, [a:method, a:args]])."\n")
- else
- call call('rpcnotify', [channel, a:method] + a:args)
- endif
- catch /.*/
- if v:exception =~# 'E475'
- if get(g:, 'coc_vim_leaving', 0) | return | endif
- echohl Error | echom '['.self.name.'] server connection lost' | echohl None
- let name = self.name
- call s:on_exit(name, 0)
- execute 'silent do User ConnectionLost'.toupper(name[0]).name[1:]
- elseif v:exception =~# 'E12'
- " neovim's bug, ignore it
- else
- echohl Error | echo 'Error on notify ('.a:method.'): '.v:exception | echohl None
- endif
- endtry
-endfunction
-
-function! s:request_async(method, args, cb) dict
- let channel = s:get_channel(self)
- if empty(channel) | return '' | endif
- if type(a:cb) != 2
- echohl Error | echom '['.self['name'].'] Callback should be function' | echohl None
- return
- endif
- let id = self.async_req_id
- let self.async_req_id = id + 1
- let self.async_callbacks[id] = a:cb
- call self['notify']('nvim_async_request_event', [id, a:method, a:args])
-endfunction
-
-function! s:on_async_response(id, resp, isErr) dict
- let Callback = get(self.async_callbacks, a:id, v:null)
- if empty(Callback)
- " should not happen
- echohl Error | echom 'callback not found' | echohl None
- return
- endif
- call remove(self.async_callbacks, a:id)
- if a:isErr
- call call(Callback, [a:resp, v:null])
- else
- call call(Callback, [v:null, a:resp])
- endif
-endfunction
-
-function! coc#client#is_running(name) abort
- let client = get(s:clients, a:name, v:null)
- if empty(client) | return 0 | endif
- if !client['running'] | return 0 | endif
- if s:is_vim
- let status = job_status(ch_getjob(client['channel']))
- return status ==# 'run'
- else
- let chan_id = client['chan_id']
- let [code] = jobwait([chan_id], 10)
- return code == -1
- endif
-endfunction
-
-function! coc#client#stop(name) abort
- let client = get(s:clients, a:name, v:null)
- if empty(client) | return 1 | endif
- let running = coc#client#is_running(a:name)
- if !running
- echohl WarningMsg | echom 'client '.a:name. ' not running.' | echohl None
- return 1
- endif
- if s:is_vim
- call job_stop(ch_getjob(client['channel']), 'term')
- else
- call jobstop(client['chan_id'])
- endif
- sleep 200m
- if coc#client#is_running(a:name)
- echohl Error | echom 'client '.a:name. ' stop failed.' | echohl None
- return 0
- endif
- call s:on_exit(a:name, 0)
- echohl MoreMsg | echom 'client '.a:name.' stopped!' | echohl None
- return 1
-endfunction
-
-function! coc#client#request(name, method, args)
- let client = get(s:clients, a:name, v:null)
- if !empty(client)
- return client['request'](a:method, a:args)
- endif
-endfunction
-
-function! coc#client#notify(name, method, args)
- let client = get(s:clients, a:name, v:null)
- if !empty(client)
- call client['notify'](a:method, a:args)
- endif
-endfunction
-
-function! coc#client#request_async(name, method, args, cb)
- let client = get(s:clients, a:name, v:null)
- if !empty(client)
- call client['request_async'](a:method, a:args, a:cb)
- endif
-endfunction
-
-function! coc#client#on_response(name, id, resp, isErr)
- let client = get(s:clients, a:name, v:null)
- if !empty(client)
- call client['on_async_response'](a:id, a:resp, a:isErr)
- endif
-endfunction
-
-function! coc#client#restart(name) abort
- let stopped = coc#client#stop(a:name)
- if !stopped | return | endif
- let client = get(s:clients, a:name, v:null)
- if !empty(client)
- call client['start']()
- endif
-endfunction
-
-function! coc#client#restart_all()
- for key in keys(s:clients)
- call coc#client#restart(key)
- endfor
-endfunction
-
-function! coc#client#open_log()
- execute 'vs '.s:logfile
-endfunction
diff --git a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/list.vim b/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/list.vim
deleted file mode 100644
index 1673aed..0000000
--- a/vim/.vim/pack/coc/start/coc.nvim-release/autoload/coc/list.vim
+++ /dev/null
@@ -1,257 +0,0 @@
-let s:activated = 0
-let s:is_vim = !has('nvim')
-let s:saved_ve = &t_ve
-let s:saved_cursor = &guicursor
-let s:gui = has('gui_running') || has('nvim')
-
-function! coc#list#get_chars()
- return {
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '' : "\",
- \ '' : "\",
- \ '' : "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '<2-LeftMouse>': "\<2-LeftMouse>",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '': "\",
- \ '