diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/autoload/phpcomplete.vim | 182 | ||||
-rw-r--r-- | runtime/autoload/sqlcomplete.vim | 149 | ||||
-rw-r--r-- | runtime/doc/getscript.txt | 303 | ||||
-rw-r--r-- | runtime/doc/xxd.man | 55 | ||||
-rw-r--r-- | runtime/keymap/tamil_tscii.vim | 4 | ||||
-rw-r--r-- | runtime/plugin/getscript.vim | 470 | ||||
-rw-r--r-- | runtime/plugin/tarPlugin.vim | 19 | ||||
-rw-r--r-- | runtime/syntax/mysql.vim | 1 |
8 files changed, 277 insertions, 906 deletions
diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim index 1dbabc3c0c..e5d910e300 100644 --- a/runtime/autoload/phpcomplete.vim +++ b/runtime/autoload/phpcomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: PHP " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Last Change: 2006 Apr 30 +" Last Change: 2006 May 9 " " TODO: " - Class aware completion: @@ -74,7 +74,7 @@ function! phpcomplete#CompletePHP(findstart, base) let file = getline(1, '$') call filter(file, \ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let jfile = join(file, ' ') let int_values = split(jfile, 'class\s\+') let int_classes = {} @@ -85,33 +85,43 @@ function! phpcomplete#CompletePHP(findstart, base) endif endfor - " Prepare list of functions from tags file + " Prepare list of classes from tags file let ext_classes = {} - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) if fnames != '' exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - " [:space:] thing: we don't have to be so strict when - " dealing with tags files - entries there were already - " checked by ctags. - let item = matchstr(field['text'], '^[^[:space:]]\+') - let ext_classes[item] = '' + if len(qflist) > 0 + for field in qflist + " [:space:] thing: we don't have to be so strict when + " dealing with tags files - entries there were already + " checked by ctags. + let item = matchstr(field['text'], '^[^[:space:]]\+') + let ext_classes[item] = '' + endfor + endif + endif + + " Prepare list of built in classes from g:php_builtin_functions + if !exists("g:php_omni_bi_classes") + let g:php_omni_bi_classes = {} + for i in keys(g:php_builtin_object_functions) + let g:php_omni_bi_classes[substitute(i, '::.*$', '', '')] = '' endfor endif - call extend(int_classes, ext_classes) + let classes = sort(keys(int_classes)) + let classes += sort(keys(ext_classes)) + let classes += sort(keys(g:php_omni_bi_classes)) - for m in sort(keys(int_classes)) + for m in classes if m =~ '^'.a:base call add(res, m) endif endfor - let int_list = res - let final_menu = [] - for i in int_list + for i in res let final_menu += [{'word':i, 'kind':'c'}] endfor @@ -138,6 +148,19 @@ function! phpcomplete#CompletePHP(findstart, base) let classlocation = '' endif + if classlocation == 'VIMPHP_BUILTINOBJECT' + + for object in keys(g:php_builtin_object_functions) + if object =~ '^'.classname + let res += [{'word':substitute(object, '.*::', '', ''), + \ 'info': g:php_builtin_object_functions[object]}] + endif + endfor + + return res + + endif + if filereadable(classlocation) let classfile = readfile(classlocation) let classcontent = '' @@ -154,7 +177,7 @@ function! phpcomplete#CompletePHP(findstart, base) " Functions declared with public keyword or without any " keyword are public let functions = filter(deepcopy(sccontent), - \ 'v:val =~ "^\\s*\\(public\\s\\*\\)\\?function"') + \ 'v:val =~ "^\\s*\\(static\\s\\+\\|public\\s\\+\\)*function"') let jfuncs = join(functions, ' ') let sfuncs = split(jfuncs, 'function\s\+') let c_functions = {} @@ -185,7 +208,6 @@ function! phpcomplete#CompletePHP(findstart, base) let all_values = {} call extend(all_values, c_functions) call extend(all_values, c_variables) - call extend(all_values, g:php_builtin_object_functions) for m in sort(keys(all_values)) if m =~ '^'.a:base && m !~ '::' @@ -244,23 +266,25 @@ function! phpcomplete#CompletePHP(findstart, base) " ctags has good support for PHP, use tags file for external " variables - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let ext_vars = {} if fnames != '' let sbase = substitute(a:base, '^\$', '', '') exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - let item = matchstr(field['text'], '^[^[:space:]]\+') - " Add -> if it is possible object declaration - let classname = '' - if field['text'] =~ item.'\s*=\s*new\s\+' - let item = item.'->' - let classname = matchstr(field['text'], - \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') - endif - let ext_vars[adddollar.item] = classname - endfor + if len(qflist) > 0 + for field in qflist + let item = matchstr(field['text'], '^[^[:space:]]\+') + " Add -> if it is possible object declaration + let classname = '' + if field['text'] =~ item.'\s*=\s*new\s\+' + let item = item.'->' + let classname = matchstr(field['text'], + \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') + endif + let ext_vars[adddollar.item] = classname + endfor + endif endif " Now we have all variables in int_vars dictionary @@ -270,7 +294,7 @@ function! phpcomplete#CompletePHP(findstart, base) let file = getline(1, '$') call filter(file, \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let jfile = join(file, ' ') let int_values = split(jfile, 'function\s\+') let int_functions = {} @@ -287,14 +311,16 @@ function! phpcomplete#CompletePHP(findstart, base) if fnames != '' exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - " File name - let item = matchstr(field['text'], '^[^[:space:]]\+') - let fname = matchstr(field['text'], '\t\zs\f\+\ze') - let prototype = matchstr(field['text'], - \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') - let ext_functions[item.'('] = prototype.') - '.fname - endfor + if len(qflist) > 0 + for field in qflist + " File name + let item = matchstr(field['text'], '^[^[:space:]]\+') + let fname = matchstr(field['text'], '\t\zs\f\+\ze') + let prototype = matchstr(field['text'], + \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') + let ext_functions[item.'('] = prototype.') - '.fname + endfor + endif endif let all_values = {} @@ -375,23 +401,25 @@ function! phpcomplete#CompletePHP(findstart, base) call extend(int_vars,g:php_builtin_vars) " ctags has support for PHP, use tags file for external variables - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let ext_vars = {} if fnames != '' let sbase = substitute(a:base, '^\$', '', '') exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - let item = '$'.matchstr(field['text'], '^[^[:space:]]\+') - let m_menu = '' - " Add -> if it is possible object declaration - if field['text'] =~ item.'\s*=\s*new\s\+' - let item = item.'->' - let m_menu = matchstr(field['text'], - \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') - endif - let ext_vars[item] = m_menu - endfor + if len(qflist) > 0 + for field in qflist + let item = '$'.matchstr(field['text'], '^[^[:space:]]\+') + let m_menu = '' + " Add -> if it is possible object declaration + if field['text'] =~ item.'\s*=\s*new\s\+' + let item = item.'->' + let m_menu = matchstr(field['text'], + \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') + endif + let ext_vars[item] = m_menu + endfor + endif endif call extend(int_vars, ext_vars) @@ -433,7 +461,7 @@ function! phpcomplete#CompletePHP(findstart, base) let file = getline(1, '$') call filter(file, \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let jfile = join(file, ' ') let int_values = split(jfile, 'function\s\+') let int_functions = {} @@ -450,14 +478,16 @@ function! phpcomplete#CompletePHP(findstart, base) if fnames != '' exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - " File name - let item = matchstr(field['text'], '^[^[:space:]]\+') - let fname = matchstr(field['text'], '\t\zs\f\+\ze') - let prototype = matchstr(field['text'], - \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') - let ext_functions[item.'('] = prototype.') - '.fname - endfor + if len(qflist) > 0 + for field in qflist + " File name + let item = matchstr(field['text'], '^[^[:space:]]\+') + let fname = matchstr(field['text'], '\t\zs\f\+\ze') + let prototype = matchstr(field['text'], + \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') + let ext_functions[item.'('] = prototype.') - '.fname + endfor + endif endif " All functions @@ -480,15 +510,17 @@ function! phpcomplete#CompletePHP(findstart, base) endfor " Prepare list of constants from tags file - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) let ext_constants = {} if fnames != '' exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames let qflist = getqflist() - for field in qflist - let item = matchstr(field['text'], '^[^[:space:]]\+') - let ext_constants[item] = '' - endfor + if len(qflist) > 0 + for field in qflist + let item = matchstr(field['text'], '^[^[:space:]]\+') + let ext_constants[item] = '' + endfor + endif endif " All constants @@ -558,7 +590,7 @@ function! phpcomplete#GetClassName(scontext) " {{{ endwhile " OK, first way failed, now check tags file(s) - let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) exe 'silent! vimgrep /^'.object.'.*\$'.object.'.*=\s*new\s\+.*\tv\(\t\|$\)/j '.fnames let qflist = getqflist() if len(qflist) == 0 @@ -573,6 +605,17 @@ function! phpcomplete#GetClassName(scontext) " {{{ endfunction " }}} function! phpcomplete#GetClassLocation(classname) " {{{ + " Check classname may be name of built in object + if !exists("g:php_omni_bi_classes") + let g:php_omni_bi_classes = {} + for i in keys(g:php_builtin_object_functions) + let g:php_omni_bi_classes[substitute(i, '::.*$', '', '')] = '' + endfor + endif + if has_key(g:php_omni_bi_classes, a:classname) + return 'VIMPHP_BUILTINOBJECT' + endif + " Get class location for fname in tagfiles() let fhead = fnamemodify(fname, ":h") @@ -583,8 +626,12 @@ function! phpcomplete#GetClassLocation(classname) " {{{ let fname = escape(fname, " \\") exe 'silent! vimgrep /^'.a:classname.'.*\tc\(\t\|$\)/j '.fname let qflist = getqflist() - " As in GetClassName we can manage only one element - let classlocation = matchstr(qflist[0]['text'], '\t\zs\f\+\ze\t') + " As in GetClassName we can manage only one element if it exists + if len(qflist) > 0 + let classlocation = matchstr(qflist[0]['text'], '\t\zs\f\+\ze\t') + else + return '' + endif " And only one class location if classlocation != '' let classlocation = fhead.classlocation @@ -614,6 +661,7 @@ function! phpcomplete#GetClassContents(file, name) " {{{ else let extends_class = '' endif + call search('{') normal! % let classc = getline(cfline, ".") let classcontent = join(classc, "\n") diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim index 146cf2133b..c803932c25 100644 --- a/runtime/autoload/sqlcomplete.vim +++ b/runtime/autoload/sqlcomplete.vim @@ -1,8 +1,8 @@ " Vim OMNI completion script for SQL " Language: SQL " Maintainer: David Fishburn <fishburn@ianywhere.com> -" Version: 4.0 -" Last Change: Wed Apr 26 2006 3:00:06 PM +" Version: 5.0 +" Last Change: Mon Jun 05 2006 3:30:04 PM " Usage: For detailed help " ":help sql.txt" " or ":help ft-sql-omni" @@ -22,7 +22,7 @@ endif if exists('g:loaded_sql_completion') finish endif -let g:loaded_sql_completion = 40 +let g:loaded_sql_completion = 50 " Maintains filename of dictionary let s:sql_file_table = "" @@ -113,7 +113,7 @@ function! sqlcomplete#Complete(findstart, base) " If lastword has already been set for column completion " break from the loop, since we do not also want to pickup " a table name if it was also supplied. - if lastword != -1 && compl_type == 'column' + if lastword != -1 && compl_type == 'column' break endif " If column completion was specified stop at the "." if @@ -176,11 +176,19 @@ function! sqlcomplete#Complete(findstart, base) return [] endif + " Allow the user to override the dbext plugin to specify whether + " the owner/creator should be included in the list + let saved_dbext_show_owner = 1 + if exists('g:dbext_default_dict_show_owner') + let saved_dbext_show_owner = g:dbext_default_dict_show_owner + endif + let g:dbext_default_dict_show_owner = g:omni_sql_include_owner + + let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '') if s:sql_file_{compl_type} == "" - let compl_type = substitute(compl_type, '\w\+', '\u&', '') - let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type) + let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) endif - let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type) + let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) if s:sql_file_{compl_type} != "" if filereadable(s:sql_file_{compl_type}) let compl_list = readfile(s:sql_file_{compl_type}) @@ -194,7 +202,9 @@ function! sqlcomplete#Complete(findstart, base) " endif endif endif - elseif compl_type == 'column' + + let g:dbext_default_dict_show_owner = saved_dbext_show_owner + elseif compl_type =~? 'column' " This type of completion relies upon the dbext.vim plugin if s:SQLCCheck4dbext() == -1 @@ -209,33 +219,88 @@ function! sqlcomplete#Complete(findstart, base) let base = s:save_prev_table endif - if base != "" - let compl_list = s:SQLCGetColumns(base, '') - let s:save_prev_table = base - let base = '' + let owner = '' + let column = '' + + if base =~ '\.' + " Check if the owner/creator has been specified + let owner = matchstr( base, '^\zs.*\ze\..*\..*' ) + let table = matchstr( base, '^\(.*\.\)\?\zs.*\ze\..*' ) + let column = matchstr( base, '.*\.\zs.*' ) + + " It is pretty well impossible to determine if the user + " has entered: + " owner.table + " table.column_prefix + " So there are a couple of things we can do to mitigate + " this issue. + " 1. Check if the dbext plugin has the option turned + " on to even allow owners + " 2. Based on 1, if the user is showing a table list + " and the DrillIntoTable (using <C-Right>) then + " this will be owner.table. In this case, we can + " check to see the table.column exists in the + " cached table list. If it does, then we have + " determined the user has actually chosen + " owner.table, not table.column_prefix. + let found = -1 + if g:omni_sql_include_owner == 1 && owner == '' + if filereadable(s:sql_file_table) + let tbl_list = readfile(s:sql_file_table) + let found = index( tbl_list, ((table != '')?(table.'.'):'').column) + endif + endif + " If the table.column was found in the table list, we can safely assume + " the owner was not provided and shift the items appropriately. + " OR + " If the user has indicated not to use table owners at all and + " the base ends in a '.' we know they are not providing a column + " name, so we can shift the items appropriately. + if found != -1 || (g:omni_sql_include_owner == 0 && base !~ '\.$') + let owner = table + let table = column + let column = '' + endif + else + let table = base endif - elseif compl_type == 'column_csv' - " This type of completion relies upon the dbext.vim plugin - if s:SQLCCheck4dbext() == -1 - return [] - endif + " Get anything after the . and consider this the table name + " If an owner has been specified, then we must consider the + " base to be a partial column name + " let base = matchstr( base, '^\(.*\.\)\?\zs.*' ) - if base == "" - " The last time we displayed a column list we stored - " the table name. If the user selects a column list - " without a table name of alias present, assume they want - " the previous column list displayed. - let base = s:save_prev_table - endif - - if base != "" - let compl_list = s:SQLCGetColumns(base, 'csv') + if table != "" let s:save_prev_table = base - " Join the column array into 1 single element array - " but make the columns column separated - let compl_list = [join(compl_list, ', ')] - let base = '' + let list_type = '' + + if compl_type == 'column_csv' + " Return one array element, with a comma separated + " list of values instead of multiple array entries + " for each column in the table. + let list_type = 'csv' + endif + + let compl_list = s:SQLCGetColumns(table, list_type) + if column != '' + " If no column prefix has been provided and the table + " name was provided, append it to each of the items + " returned. + let compl_list = map(compl_list, "table.'.'.v:val") + if owner != '' + " If an owner has been provided append it to each of the + " items returned. + let compl_list = map(compl_list, "owner.'.'.v:val") + endif + else + let base = '' + endif + + if compl_type == 'column_csv' + " Join the column array into 1 single element array + " but make the columns column separated + let compl_list = [join(compl_list, ', ')] + endif endif elseif compl_type == 'resetCache' " Reset all cached items @@ -256,7 +321,7 @@ function! sqlcomplete#Complete(findstart, base) if base != '' " Filter the list based on the first few characters the user " entered - let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "^'.base.'"' + let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"' let compl_list = filter(deepcopy(compl_list), expr) endif @@ -274,6 +339,8 @@ function! sqlcomplete#PreCacheSyntax(...) else let syn_group_arr = g:omni_sql_precache_syntax_groups endif + " For each group specified in the list, precache all + " the sytnax items. if !empty(syn_group_arr) for group_name in syn_group_arr call s:SQLCGetSyntaxList(group_name) @@ -444,9 +511,23 @@ function! s:SQLCAddAlias(table_name, table_alias, cols) return cols endfunction +function! s:SQLCGetObjectOwner(object) + " The owner regex matches a word at the start of the string which is + " followed by a dot, but doesn't include the dot in the result. + " ^ - from beginning of line + " "\? - ignore any quotes + " \zs - start the match now + " \w\+ - get owner name + " \ze - end the match + " "\? - ignore any quotes + " \. - must by followed by a . + let owner = matchstr( a:object, '^"\?\zs\w\+\ze"\?\.' ) + return owner +endfunction + function! s:SQLCGetColumns(table_name, list_type) - let table_name = matchstr(a:table_name, '^\w\+') - let table_name = matchstr(a:table_name, '^[a-zA-Z0-9_.]\+') + " Check if the table name was provided as part of the column name + let table_name = matchstr(a:table_name, '^[a-zA-Z0-9_]\+\ze\.\?') let table_cols = [] let table_alias = '' let move_to_top = 1 diff --git a/runtime/doc/getscript.txt b/runtime/doc/getscript.txt deleted file mode 100644 index d43b9be73e..0000000000 --- a/runtime/doc/getscript.txt +++ /dev/null @@ -1,303 +0,0 @@ -*getscript.txt* For Vim version 7.0. Last change: 2006 Apr 30 - - Get the Latest VimScripts - -Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> - (remove NOSPAM from the email address) - *GetLatestVimScripts-copyright* -Copyright: (c) 2004-2005 by Charles E. Campbell, Jr. - The VIM LICENSE applies to GetLatestVimScripts.vim and - GetLatestVimScripts.txt (see |copyright|) except use - "GetLatestVimScripts" instead of "Vim". - No warranty, express or implied. Use At-Your-Own-Risk. - - -============================================================================== -1. Contents *glvs-contents* - - 1. Contents.......................................: |glvs-contents| - 2. GetLatestVimScripts Usage......................: |glvs| - 3. GetLatestVimScripts Data File..................: |glvs-data| - 4. GetLatestVimScripts Plugins....................: |glvs-plugins| - 5. GetLatestVimScripts AutoInstall................: |glvs-autoinstall| - 6. GetLatestVimScripts Algorithm..................: |glvs-alg| - 7. GetLatestVimScripts History....................: |glvs-hist| - - -============================================================================== -2. GetLatestVimScripts Usage *getlatestvimscripts* *getscript* *glvs* - - While in vim, type -> - :GetLatestVimScripts -< - Unless its been defined elsewhere, -> - :GLVS -< - will also work. - - The script will attempt to update and, if so directed, automatically - install scripts from http://vim.sourceforge.net/. To do so it will - peruse a file, [.vim|vimfiles]/GetLatest/GetLatestVimScripts.dat - (see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin - directory (see |glvs-plugins|). - - Scripts which have been downloaded will appear in the .../GetLatest - subdirectory. - - The <GetLatestVimScripts.dat> file will be automatically be updated to - reflect the latest version of script(s) so downloaded. - - -============================================================================== -3. GetLatestVimScripts Data File *getlatestvimscripts-data* *glvs-data* - - The Data file has a header which should appear as: -> - ScriptID SourceID Filename - -------------------------- -< - Below that are three columns; the first two are numeric followed by a - text column. - - The first number on each line gives the script's ScriptID. When - you're about to use a web browser to look at scripts on - http://vim.sf.net/, just before you click on the script's link, you'll - see a line resembling - - http://vim.sourceforge.net/scripts/script.php?script_id=40 - - The "40" happens to be a ScriptID that GetLatestVimScripts needs to - download the associated page. - - The second number on each line gives the script's SourceID. The - SourceID records the count of uploaded scripts as determined by - vim.sf.net; hence it serves to indicate "when" a script was uploaded. - Setting the SourceID to 1 insures that GetLatestVimScripts will assume - that the script it has is out-of-date. - - The SourceID is extracted by GetLatestVimScripts from the script's - page on vim.sf.net; whenever its greater than the one stored in the - GetLatestVimScripts.dat file, the script will be downloaded. - - If your script's author has included a special comment line in his/her - plugin, the plugin itself will be used by GetLatestVimScripts to build - your <GetLatestVimScripts.dat> file, including any dependencies on - other scripts it may have. - - If your comment field begins with :AutoInstall:, GetLatestVimScripts - will attempt to automatically install the script. Thus, - GetLatestVimScripts thus provides a comprehensive ability to keep your - plugins up-to-date! - -============================================================================== -4. GetLatestVimScripts Plugins *getlatestvimscripts-plugins* *glvs-plugins* - - - If a plugin author includes the following comment anywhere in their - plugin, GetLatestVimScripts will find it and use it to build user's - GetLatestVimScripts.dat files: -> - src_id - v - " GetLatestVimScripts: ### ### yourscriptname - ^ - scriptid -< - As an author, you should include such a line in to refer to your own - script plus any additional lines describing any plugin dependencies it - may have. Same format, of course! - - If your command is auto-installable (see |glvs-autoinstall|), and most - scripts are, then you may include :AutoInstall: at the start of - "yourscriptname". - - GetLatestVimScript commands for those scripts are then appended, if - not already present, to the user's GetLatest/GetLatestVimScripts.dat - file. Its a relatively painless way to automate the acquisition of - any scripts your plugins depend upon. - - Now, as an author, you probably don't want GetLatestVimScripts to - download your own scripts for you yourself, thereby overwriting your - not-yet-released hard work. GetLatestVimScripts provides a solution - for this: put -> - 0 0 yourscriptname -< - into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will - skip examining the "yourscriptname" scripts for those - GetLatestVimScript comment lines. As a result, those lines won't be - inadvertently installed into your <GetLatestVimScripts.dat> file and - subsequently used to download your own scripts. This is especially - important to do if you've included the :AutoInstall: option. - - Be certain to use the same "yourscriptname" in the "0 0 - yourscriptname" line as you've used in your GetLatestVimScript - comment! - - -============================================================================== -5. GetLatestVimScripts AutoInstall *getlatestvimscripts-autoinstall* - *glvs-autoinstall* - - GetLatestVimScripts now supports "AutoInstall". Not all scripts are - supportive of auto-install, as they may have special things you need - to do to install them (please refer to the script's "install" - directions). On the other hand, most scripts will be - auto-installable. - - To let GetLatestVimScripts do an autoinstall, the data file's comment - field should begin with (surrounding blanks are ignored): - - :AutoInstall: - - Both colons are needed, and it should begin the comment - (yourscriptname) field. - - One may prevent any autoinstalling by putting the following line - in your <.vimrc>: -> - let g:GetLatestVimScripts_allowautoinstall= 0 -< - - With :AutoInstall: enabled, as it is by default, files which end with - - ---.tar.bz2 : decompressed and untarred in [.vim|vimfiles] directory - ---.tar.gz : decompressed and untarred in [.vim|vimfiles] directory - ---.vim.bz2 : decompressed and moved to the .vim/plugin directory - ---.vim.gz : decompressed and moved to the .vim/plugin directory - ---.zip : unzipped in [.vim|vimfiles] directory - ---.vim : moved to [.vim|vimfiles]/plugin directory - - and which merely need to have their components placed by the - untar/gunzip or move-to-plugin-directory process should be - auto-installable. - - When is a script not auto-installable? Let me give an example: -> - [.vim|vimfiles]/after/syntax/blockhl.vim -< - The <blockhl.vim> script provides block highlighting for C/C++ - programs; it is available at: -> - http://vim.sourceforge.net/scripts/script.php?script_id=104 -< - Currently, vim's after/syntax only supports by-filetype scripts (in - blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install - would possibly overwrite the current user's after/syntax/c.vim file. - - In my own case, I use <aftersyntax.vim> (renamed to - after/syntax/c.vim) to allow a after/syntax/c/ directory: -> - http://vim.sourceforge.net/scripts/script.php?script_id=1023 -< - The script allows multiple syntax files to exist separately in the - after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and - build an appropriate tarball for auto-install because of the potential - for the after/syntax/c.vim contained in it to overwrite a user's - c.vim. - - -============================================================================== -6. GetLatestVimScripts Algorithm *getlatestvimscripts-algorithm* - *glvs-alg* - - The Vim sourceforge page dynamically creates a page by keying off of - the so-called script-id. Within the webpage of - - http://vim.sourceforge.net/scripts/script.php?script_id=40 - - is a line specifying the latest source-id (src_id). The source - identifier numbers are always increasing, hence if the src_id is - greater than the one recorded for the script in GetLatestVimScripts - then its time to download a newer copy of that script. - - GetLatestVimScripts will then download the script and update its - internal database of script ids, source ids, and scriptnames. - - The AutoInstall process will: - - Move the file from GetLatest/ to the following directory - Unix : $HOME/.vim - Windows: $HOME\vimfiles - - if the downloaded file ends with ".bz2" - bunzip2 it - else if the downloaded file ends with ".gz" - gunzip it - if the resulting file ends with ".zip" - unzip it - else if the resulting file ends with ".tar" - tar -oxvf it - else if the resulting file ends with ".vim" - move it to the plugin subdirectory - - -============================================================================== -7. GetLatestVimScripts History *getlatestvimscripts-history* *glvs-hist* - - v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use; - unzip needs the -o flag to overwrite. - v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong - script! Fixed. - v18 Mar 21, 2005 : * bugfix to automatic database construction - * bugfix - nowrapscan caused an error - (tnx to David Green for the fix) - Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in - :AutoInstall:s, even though its o/s is windows - Apr 01, 2005 * when downloading errors occurred, GLVS was - terminating early. It now just goes on to trying - the next script (after trying three times to - download a script description page) - Apr 20, 2005 * bugfix - when a failure to download occurred, - GetLatestVimScripts would stop early and claim that - everything was current. Fixed. - v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which - defaults to 1, can be used to prevent all - :AutoInstall: - v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent - * fixed bug with :AutoInstall: use of helptags - v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't - always preventing downloads (just usually). Fixed. - v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than - s:dotvim. Fixed. - v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid - is zero. Useful for script authors; that way their - own GetLatestVimScripts activity won't overwrite - their scripts. - v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that - was intended only for testing. Removed, now works. - * :AutoInstall: implemented - v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin: - * :GetLatestVimScripts command - * (runtimepath)/GetLatest/GetLatestVimScripts.dat - now holds scripts that need updating - v10 Apr 19, 2004 : * moved history from script to doc - v9 Jan 23, 2004 : windows (win32/win16/win95) will use - double quotes ("") whereas other systems will use - single quotes ('') around the urls in calls via wget - v8 Dec 01, 2003 : makes three tries at downloading - v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id=" - not found in downloaded webpage - Uses t_ti, t_te, and rs to make progress visible - v6 Aug 06, 2003 : final status messages now display summary of work - ( "Downloaded someqty scripts" or - "Everything was current") - Now GetLatestVimScripts is careful about downloading - GetLatestVimScripts.vim itself! - (goes to <NEW_GetLatestVimScripts.vim>) - v5 Aug 04, 2003 : missing an endif near bottom - v4 Jun 17, 2003 : redraw! just before each "considering" message - v3 May 27, 2003 : Protects downloaded files from errant shell - expansions with single quotes: '...' - v2 May 14, 2003 : extracts name of item to be obtained from the - script file. Uses it instead of comment field - for output filename; comment is used in the - "considering..." line and is now just a comment! - * Fixed a bug: a string-of-numbers is not the - same as a number, so I added zero to them - and they became numbers. Fixes comparison. - -============================================================================== -vim:tw=78:ts=8:ft=help diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man index 935751c808..057c8e911b 100644 --- a/runtime/doc/xxd.man +++ b/runtime/doc/xxd.man @@ -86,13 +86,12 @@ OPTIONS found in hexdump. -s [+][-]seek - start at <seek> bytes abs. (or rel.) infile offset. + fRindi- - cates that the seek is relative to the current stdin file posi- - tion (meaningless when not reading from stdin). - indicates - that the seek should be that many characters from the end of the - input (or if combined with +: before the current stdin file - position). Without -s option, xxd starts at the current file - position. + start at <seek> bytes abs. (or rel.) infile offset. + indicates + that the seek is relative to the current stdin file position + (meaningless when not reading from stdin). - indicates that the + seek should be that many characters from the end of the input + (or if combined with +: before the current stdin file position). + Without -s option, xxd starts at the current file position. -u use upper case hex letters. Default is lower case. @@ -101,20 +100,20 @@ OPTIONS CAVEATS xxd -r has some builtin magic while evaluating line number information. - If the output file is seekable, then the linenumbers at the start of - each hexdump line may be out of order, lines may be missing, or over- - lapping. In these cases xxd will lseek(2) to the next position. If the - output file is not seekable, only gaps are allowed, which will be + If the output file is seekable, then the linenumbers at the start of + each hexdump line may be out of order, lines may be missing, or over- + lapping. In these cases xxd will lseek(2) to the next position. If the + output file is not seekable, only gaps are allowed, which will be filled by null-bytes. xxd -r never generates parse errors. Garbage is silently skipped. - When editing hexdumps, please note that xxd -r skips everything on the + When editing hexdumps, please note that xxd -r skips everything on the input line after reading enough columns of hexadecimal data (see option - -c). This also means, that changes to the printable ascii (or ebcdic) - columns are always ignored. Reverting a plain (or p |