"============================================================================= " FILE: help.vim " AUTHOR: Shougo Matsushita " License: MIT license {{{ " 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. " }}} "============================================================================= " For echodoc. "{{{ let s:doc_dict = { \ 'name' : 'vimshell', \ 'rank' : 10, \ 'filetypes' : { 'vimshell' : 1 }, \ } function! s:doc_dict.search(cur_text) abort "{{{ " Get command name. try let args = vimshell#helpers#get_current_args(vimshell#get_cur_text()) catch /^Exception:/ return [] endtry if empty(args) return [] endif let command = fnamemodify(args[0], ':t:r') let commands = vimshell#available_commands(command) if has_key(s:cached_doc, command) let description = s:cached_doc[command] elseif has_key(commands, command) let description = commands[command].description else return [] endif let usage = [{ 'text' : 'Usage: ', 'highlight' : 'Identifier' }] if description =~? '^usage:\s*' call add(usage, { 'text' : command, 'highlight' : 'Statement' }) call add(usage, { 'text' : ' ' . join(split(description)[2:]) }) elseif description =~# command.'\s*' call add(usage, { 'text' : command, 'highlight' : 'Statement' }) call add(usage, { 'text' : description[len(command) :] }) else call add(usage, { 'text' : description }) endif return usage endfunction"}}} "}}} function! vimshell#help#init() abort "{{{ if exists('g:loaded_echodoc') && g:loaded_echodoc call echodoc#register('vimshell', s:doc_dict) endif call s:load_cached_doc() endfunction"}}} function! vimshell#help#get_cached_doc() abort "{{{ return s:cached_doc endfunction"}}} function! vimshell#help#set_cached_doc(cache) abort "{{{ if vimshell#util#is_sudo() return endif let s:cached_doc = a:cache let doc_path = vimshell#get_data_directory() .'/cached-doc' call writefile(values(map(deepcopy(s:cached_doc), 'v:key."!!!".v:val')), doc_path) endfunction"}}} function! s:load_cached_doc() abort "{{{ let s:cached_doc = {} if vimshell#util#is_sudo() return endif let doc_path = vimshell#get_data_directory().'/cached-doc' if !filereadable(doc_path) call writefile([], doc_path) endif for args in map(readfile(doc_path), 'split(v:val, "!!!")') let s:cached_doc[args[0]] = join(args[1:], '!!!') endfor endfunction"}}} " vim: foldmethod=marker