# HG changeset patch # User vimboss # Date 1178389627 0 # Node ID c5c164b4c95c0e0e89d17b432491e0c8a7ba1e28 # Parent 96cd8222a819302f97fe7ad8ae5a9c8adbbcdd56 updated for version 7.1a diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim --- 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(findst 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(findst 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(findst 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(findst " 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(findst 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(findst " 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(findst 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(findst 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(findst 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(findst 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(findst 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(findst 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(scont 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(scont 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(c 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(f 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 --- 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 -" 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 " 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 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 " 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 let base = s:save_prev_table endif - if base != "" - let compl_list = s:SQLCGetColumns(base, '') - let s:save_prev_table = base - let base = '' - endif - elseif compl_type == 'column_csv' + 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.*' ) - " This type of completion relies upon the dbext.vim plugin - if s:SQLCCheck4dbext() == -1 - return [] + " 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 ) 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 - 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 + " 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 table != "" + let s:save_prev_table = 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 - if base != "" - let compl_list = s:SQLCGetColumns(base, 'csv') - 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 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 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, tab 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 --- 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. - (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 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 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 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 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 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 (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 ) - 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 --- a/runtime/doc/xxd.man +++ b/runtime/doc/xxd.man @@ -86,13 +86,12 @@ OPTIONS found in hexdump. -s [+][-]seek - start at 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 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 postscript) style - hexdump with xxd -r -p does not depend on the correct number of col- - umns. Here anything that looks like a pair of hex-digits is inter- + -c). This also means, that changes to the printable ascii (or ebcdic) + columns are always ignored. Reverting a plain (or postscript) style + hexdump with xxd -r -p does not depend on the correct number of col- + umns. Here anything that looks like a pair of hex-digits is inter- preted. Note the difference between @@ -122,28 +121,28 @@ CAVEATS and % xxd -i < file - xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to + xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to "rewind" input. A '+' makes a difference if the input source is stdin, - and if stdin's file position is not at the start of the file by the - time xxd is started and given its input. The following examples may + and if stdin's file position is not at the start of the file by the + time xxd is started and given its input. The following examples may help to clarify (or further confuse!)... - Rewind stdin before reading; needed because the `cat' has already read + Rewind stdin before reading; needed because the `cat' has already read to the end of stdin. % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file - Hexdump from file position 0x480 (=1024+128) onwards. The `+' sign + Hexdump from file position 0x480 (=1024+128) onwards. The `+' sign means "relative to the current position", thus the `128' adds to the 1k where dd left off. - % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" + % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" < file Hexdump from file position 0x100 ( = 1024-768) on. % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" < file - However, this is a rare situation and the use of `+' is rarely needed. - The author prefers to monitor the effect of xxd with strace(1) or + However, this is a rare situation and the use of `+' is rarely needed. + The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever -s is used. EXAMPLES @@ -153,7 +152,7 @@ EXAMPLES Print 3 lines (hex 0x30 bytes) from the end of file. % xxd -s -0x30 file - Print 120 bytes as continuous hexdump with 40 octets per line. + Print 120 bytes as continuous hexdump with 20 octets per line. % xxd -l 120 -ps -c 20 xxd.1 2e54482058584420312022417567757374203139 39362220224d616e75616c207061676520666f72 @@ -187,7 +186,7 @@ EXAMPLES % xxd -s 0x36 -l 13 -c 13 xxd.1 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 - Create a 65537 byte file with all bytes 0x00, except for the last one + Create a 65537 byte file with all bytes 0x00, except for the last one which is 'A' (hex 0x41). % echo "010000: 41" | xxd -r > file @@ -197,7 +196,7 @@ EXAMPLES * 000fffc: 0000 0000 40 ....A - Create a 1 byte file containing a single 'A' character. The number + Create a 1 byte file containing a single 'A' character. The number after '-r -s' adds to the linenumbers found in the file; in effect, the leading bytes are suppressed. % echo "010000: 41" | xxd -r -s -0x10000 > file @@ -239,7 +238,7 @@ SEE ALSO uuencode(1), uudecode(1), patch(1) WARNINGS - The tools weirdness matches its creators brain. Use entirely at your + The tools weirdness matches its creators brain. Use entirely at your own risk. Copy files. Trace it. Become a wizard. VERSION diff --git a/runtime/keymap/tamil_tscii.vim b/runtime/keymap/tamil_tscii.vim --- a/runtime/keymap/tamil_tscii.vim +++ b/runtime/keymap/tamil_tscii.vim @@ -1,7 +1,7 @@ " Keymap file for the editing Tamil language files in TSCII encoding. " " Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com) -" Last updated: August 4, 2005 +" Last updated: 2006 June 17 " " You will need a fixed width TSCII font to use this encoding. The " Avarangal TSCII fixed width font (TSC_AvarangalFxd) is used to test @@ -118,7 +118,7 @@ sA si sii sI -su +su suu sU se diff --git a/runtime/plugin/getscript.vim b/runtime/plugin/getscript.vim deleted file mode 100644 --- a/runtime/plugin/getscript.vim +++ /dev/null @@ -1,470 +0,0 @@ -" --------------------------------------------------------------------- -" GetLatestVimScripts.vim -" Author: Charles E. Campbell, Jr. -" Date: Feb 15, 2006 -" Version: 20 -" Installing: :help glvs-install -" Usage: :help glvs -" -" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim -" --------------------------------------------------------------------- -" Initialization: {{{1 -" if you're sourcing this file, surely you can't be -" expecting vim to be in its vi-compatible mode -if &cp - if &verbose - echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" - endif - finish -endif -let s:keepfo = &fo -let s:keepcpo = &cpo -set cpo&vim - -if exists("loaded_GetLatestVimScripts") - finish -endif -let g:loaded_GetLatestVimScripts= "v20" - -" --------------------------------------------------------------------- -" Global Variables: {{{1 -" allow user to change the command for obtaining scripts (does fetch work?) -if !exists("g:GetLatestVimScripts_wget") - let g:GetLatestVimScripts_wget= "wget" -endif -if !exists("g:GetLatestVimScripts_options") - let g:GetLatestVimScripts_options= "-q -O" -endif -if !exists("g:GetLatestVimScripts_allowautoinstall") - let g:GetLatestVimScripts_allowautoinstall= 1 -endif - -"" For debugging: -"let g:GetLatestVimScripts_wget = "echo" -"let g:GetLatestVimScripts_options = "options" - -" check if s:autoinstall is possible -let s:autoinstall= "" -if g:GetLatestVimScripts_allowautoinstall - - if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash" - " windows (but not cygwin/bash) - let s:dotvim= "vimfiles" - if !exists("g:GetLatestVimScripts_mv") - let g:GetLatestVimScripts_mv= "ren" - endif - - else - " unix - let s:dotvim= ".vim" - if !exists("g:GetLatestVimScripts_mv") - let g:GetLatestVimScripts_mv= "mv" - endif - endif - - if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) - let s:autoinstall= $HOME."/".s:dotvim - endif -" call Decho("s:autoinstall<".s:autoinstall.">") -else -" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled") -endif - -" --------------------------------------------------------------------- -" Public Interface: {{{1 -com! -nargs=0 GetLatestVimScripts call GetLatestVimScripts() -silent! com -nargs=0 GLVS call GetLatestVimScripts() - -" --------------------------------------------------------------------- -" GetOneScript: (Get Latest Vim Script) this function operates {{{1 -" on the current line, interpreting two numbers and text as -" ScriptID, SourceID, and Filename. -" It downloads any scripts that have newer versions from vim.sf.net. -fun! GetOneScript(...) -" call Dfunc("GetOneScript()") - - " set options to allow progress to be shown on screen - let t_ti= &t_ti - let t_te= &t_te - let rs = &rs - set t_ti= t_te= nors - - " put current line on top-of-screen and interpret it into - " a script identifer : used to obtain webpage - " source identifier : used to identify current version - " and an associated comment: used to report on what's being considered - if a:0 >= 3 - let scriptid = a:1 - let srcid = a:2 - let cmmnt = a:3 -" call Decho("scriptid<".scriptid.">") -" call Decho("srcid <".srcid.">") -" call Decho("cmmnt <".cmmnt.">") - else - let curline = getline(".") - let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)$' - try - let scriptid = substitute(curline,parsepat,'\1','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let scriptid= 0 - endtry - try - let srcid = substitute(curline,parsepat,'\2','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let srcid= 0 - endtry - try - let cmmnt = substitute(curline,parsepat,'\3','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let cmmnt= "" - endtry -" call Decho("curline <".curline.">") -" call Decho("parsepat<".parsepat.">") -" call Decho("scriptid<".scriptid.">") -" call Decho("srcid <".srcid.">") -" call Decho("cmmnt <".cmmnt.">") - endif - - if scriptid == 0 || srcid == 0 - " When looking for :AutoInstall: lines, skip scripts that - " have 0 0 scriptname -" call Dret("GetOneScript : skipping a scriptid==srcid==0 line") - return - endif - - let doautoinstall= 0 - if cmmnt =~ ":AutoInstall:" -" call Decho("cmmnt<".cmmnt."> has :AutoInstall:...") - let aicmmnt= substitute(cmmnt,'\s\+:AutoInstall:\s\+',' ','') -" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) - if s:autoinstall != "" - let doautoinstall = g:GetLatestVimScripts_allowautoinstall - endif - else - let aicmmnt= cmmnt - endif -" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall) - - exe "norm z\" - redraw! -" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid) - echomsg 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid - - " grab a copy of the plugin's vim.sf.net webpage - let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid - let tmpfile = tempname() - let v:errmsg = "" - - " make three tries at downloading the description - let itry= 1 - while itry <= 3 -" call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) - if has("win32") || has("win16") || has("win95") -" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"') - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"' - else -" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'") - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'" - endif - if itry == 1 - exe "silent vsplit ".tmpfile - else - silent! e % - endif - - " find the latest source-id in the plugin's webpage - silent! 1 - let findpkg= search('Click on the package to download','W') - if findpkg > 0 - break - endif - let itry= itry + 1 - endwhile -" call Decho(" --- end downloading tries while loop --- itry=".itry) - - " testing: did finding /Click on the package.../ fail? - if findpkg == 0 || itry >= 4 - silent q! - call delete(tmpfile) - " restore options - let &t_ti = t_ti - let &t_te = t_te - let &rs = rs - let s:downerrors = s:downerrors + 1 -" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") - echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" -" call Dret("GetOneScript : srch for /Click on the package/ failed") - return - endif -" call Decho('found "Click on the package to download"') - - let findsrcid= search('src_id=','W') - if findsrcid == 0 - silent q! - call delete(tmpfile) - " restore options - let &t_ti = t_ti - let &t_te = t_te - let &rs = rs - let s:downerrors = s:downerrors + 1 -" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">") - echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" -" call Dret("GetOneScript : srch for /src_id/ failed") - return - endif -" call Decho('found "src_id=" in description page') - - let srcidpat = '^\s*\([^<]\+\)<.*$' - let latestsrcid= substitute(getline("."),srcidpat,'\1','') - let fname = substitute(getline("."),srcidpat,'\2','') -" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> fname<".fname.">") - silent q! - call delete(tmpfile) - - " convert the strings-of-numbers into numbers - let srcid = srcid + 0 - let latestsrcid = latestsrcid + 0 -" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." fname<".fname.">") - - " has the plugin's most-recent srcid increased, which indicates - " that it has been updated - if latestsrcid > srcid - let s:downloads= s:downloads + 1 - if fname == bufname("%") - " GetLatestVimScript has to be careful about downloading itself - let fname= "NEW_".fname - endif - - " the plugin has been updated since we last obtained it, so download a new copy -" call Decho("...downloading new <".fname.">") - echomsg "...downloading new <".fname.">" - if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95") -" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"') - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"' - else -" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'") - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'" - endif - - " AutoInstall: only if doautoinstall is so indicating - if doautoinstall -" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname)) - if filereadable(fname) -" call Decho("move <".fname."> to ".s:autoinstall) -" call Decho("DISABLED for testing") - exe "silent !"g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall - let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") - exe "cd ".s:autoinstall - if fname =~ '\.bz2$' -" call Decho("attempt to bunzip2 ".fname) - exe "silent !bunzip2 ".fname - let fname= substitute(fname,'\.bz2$','','') - elseif fname =~ '\.gz$' -" call Decho("attempt to gunzip ".fname) - exe "silent !gunzip ".fname - let fname= substitute(fname,'\.gz$','','') - endif - if fname =~ '\.zip$' -" call Decho("attempt to unzip ".fname) - exe "silent !unzip -o".fname - elseif fname =~ '\.tar$' -" call Decho("attempt to untar ".fname) - exe "silent !tar -oxvf ".fname - endif - if fname =~ '.vim$' -" call Decho("attempt to simply move ".fname." to plugin") - exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin" - endif - exe "helptags ../".s:dotvim."/doc" - exe "cd ".curdir - endif - endif - - " update the data in the file - let modline=scriptid." ".latestsrcid." ".cmmnt - call setline(line("."),modline) -" call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)") - endif - - " restore options - let &t_ti= t_ti - let &t_te= t_te - let &rs = rs - -" call Dret("GetOneScript") -endfun - -" --------------------------------------------------------------------- -" GetLatestVimScripts: this function gets the latest versions of {{{1 -" scripts based on the list in -" -" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat -fun! GetLatestVimScripts() -" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">") - -" insure that wget is executable - if executable(g:GetLatestVimScripts_wget) != 1 - echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system" -" call Dret("GetLatestVimScripts : wget not executable/availble") - return - endif - - " Find the .../GetLatest sudirectory under the runtimepath - let rtplist= &rtp - while rtplist != "" - let datadir= substitute(rtplist,',.*$','','e')."/GetLatest" - if isdirectory(datadir) -" call Decho("found directory<".datadir.">") - break - endif - unlet datadir - if rtplist =~ ',' - let rtplist= substitute(rtplist,'^.\{-},','','e') - else - let rtplist= "" - endif - endwhile - - " Sanity checks: readability and writability - if !exists("datadir") - echoerr "Unable to find a GetLatest subdirectory on your runtimepath" -" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") - return - endif - if filewritable(datadir) != 2 - echoerr "Your ".datadir." isn't writable" -" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") - return - endif - let datafile= datadir."/GetLatestVimScripts.dat" - if !filereadable(datafile) - echoerr "Your data file<".datafile."> isn't readable" -" call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">") - return - endif - if !filewritable(datafile) - echoerr "Your data file<".datafile."> isn't writable" -" call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">") - return - endif -" call Decho("datadir <".datadir.">") -" call Decho("datafile <".datafile.">") - - " don't let any events interfere (like winmanager's, taglist's, etc) - let eikeep= &ei - set ei=all - - " record current directory, change to datadir, open split window with - " datafile - let origdir= getcwd() - exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #") - split - exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #") - res 1000 - let s:downloads = 0 - let s:downerrors= 0 - - " Check on dependencies mentioned in plugins -" call Decho(" ") -" call Decho("searching plugins for GetLatestVimScripts dependencies") - let lastline = line("$") - let plugins = globpath(&rtp,"plugin/*.vim") - let foundscript = 0 - -" call Decho("plugins<".plugins."> lastline#".lastline) - while plugins != "" - let plugin = substitute(plugins,'\n.*$','','e') - let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : "" - $ -" call Decho(".dependency checking<".plugin."> line$=".line("$")) - exe "silent r ".plugin - while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 - let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') - let llp1 = lastline+1 - - if newscript !~ '^"' - " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile - let curline = line(".") - let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e') - exe llp1 - let srchline = search('\<'.noai_script.'\>','bW') -" call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline) - - if srchline == 0 - " found a new script to permanently include in the datafile - let keep_rega = @a - let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') - exe lastline."put a" - echomsg "Appending <".@a."> to ".datafile." for ".newscript -" call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat") - let @a = keep_rega - let lastline = llp1 - let curline = curline + 1 - let foundscript = foundscript + 1 -" else " Decho -" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") - endif - - let curline = curline + 1 - exe curline - endif - - endwhile - let llp1= lastline + 1 -" call Decho(".deleting lines: ".llp1.",$d") - exe "silent! ".llp1.",$d" - endwhile - - if foundscript == 0 - set nomod - endif - - " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat - set lz -" call Decho(" --- end of dependency checking loop --- ") -" call Decho("call GetOneScript on lines at end of datafile<".datafile.">") - 1 - /^-----/,$g/^\s*\d/call GetOneScript() - - " Final report (an echomsg) - try - silent! ?^-------? - catch /^Vim\%((\a\+)\)\=:E114/ -" call Dret("GetLatestVimScripts : nothing done!") - return - endtry - exe "norm! kz\" - let s:msg = "" - if s:downloads == 1 - let s:msg = "Downloaded one updated script to <".datadir.">" - elseif s:downloads == 2 - let s:msg= "Downloaded two updated scripts to <".datadir.">" - elseif s:downloads > 1 - let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">" - else - let s:msg= "Everything was already current" - endif - if s:downerrors > 0 - let s:msg= s:msg." (".s:downerrors." downloading errors)" - endif - echomsg s:msg - " save the file - if &mod - wq - else - q - endif - - " restore events and current directory - exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #") - let &ei= eikeep - set nolz -" call Dret("GetLatestVimScripts : did ".s:downloads." downloads") -endfun -" --------------------------------------------------------------------- - -" Restore Options: {{{1 -let &fo = s:keepfo -let &cpo= s:keepcpo - -" vim: ts=8 sts=2 fdm=marker nowrap diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim --- a/runtime/plugin/tarPlugin.vim +++ b/runtime/plugin/tarPlugin.vim @@ -1,5 +1,6 @@ " tarPlugin.vim -- a Vim plugin for browsing tarfiles -" Copyright (c) 2002, Michael C. Toren +" Original was copyright (c) 2002, Michael C. Toren +" Modified by Charles E. Campbell, Jr. " Distributed under the GNU General Public License. " " Updates are available from . If you @@ -8,7 +9,17 @@ " Also look there for further comments and documentation. " " This part only sets the autocommands. The functions are in autoload/tar.vim. +" --------------------------------------------------------------------- +" Load Once: {{{1 +if &cp || exists("g:loaded_tarPlugin") + finish +endif +let g:loaded_tarPlugin = 1 +let s:keepcpo = &cpo +set cpo&vim +" --------------------------------------------------------------------- +" Public Interface: {{{1 augroup tar au! au BufReadCmd tarfile:* call tar#Read(expand(""), 1) @@ -30,4 +41,8 @@ augroup tar au BufReadCmd *.tgz call tar#Browse(expand("")) augroup END -" vim: ts=8 +" --------------------------------------------------------------------- +" Restoration And Modelines: {{{1 +" vim: fdm=marker +let &cpo= s:keepcpo +unlet s:keepcpo diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim --- a/runtime/syntax/mysql.vim +++ b/runtime/syntax/mysql.vim @@ -249,6 +249,7 @@ syn region mysqlFunction start="strcmp( syn region mysqlFunction start="subdate(" end=")" contains=ALL syn region mysqlFunction start="substring(" end=")" contains=ALL syn region mysqlFunction start="substring_index(" end=")" contains=ALL +syn region mysqlFunction start="subtime(" end=")" contains=ALL syn region mysqlFunction start="sum(" end=")" contains=ALL syn region mysqlFunction start="sysdate(" end=")" contains=ALL syn region mysqlFunction start="system_user(" end=")" contains=ALL diff --git a/src/po/it.po b/src/po/it.po --- a/src/po/it.po +++ b/src/po/it.po @@ -12,12 +12,13 @@ msgid "" msgstr "" "Project-Id-Version: vim 7.0\n" -"POT-Creation-Date: 2006-04-25 12:03+0200\n" -"PO-Revision-Date: 2006-05-03 00:02+0200\n" +"POT-Creation-Date: 2007-04-29 13:02+0200\n" +"PO-Revision-Date: 2007-04-29 18:02+0200\n" "Last-Translator: Vlad Sandrini \n" "Language-Team: Italian" " Antonio Colombo " -" Vlad Sandrini \n" +" Vlad Sandrini " +" Luciano Montanaro \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO_8859-1\n" "Content-Transfer-Encoding: 8-bit\n" @@ -196,6 +197,9 @@ msgstr "E98: Non riesco a leggere output msgid "E99: Current buffer is not in diff mode" msgstr "E99: Buffer corrente non in modalità 'diff'" +msgid "E793: No other buffer in diff mode is modifiable" +msgstr "E793: Nessun altro buffer è modificabile in modalità 'diff'" + msgid "E100: No other buffer in diff mode" msgstr "E100: Non c'è nessun altro buffer in modalità 'diff'" @@ -621,6 +625,10 @@ msgid "E706: Variable type mismatch for: msgstr "E706: Tipo di variabile non corrispondente per: %s" #, c-format +msgid "E795: Cannot delete variable %s" +msgstr "E795: Non posso cancellare la variabile %s" + +#, c-format msgid "E741: Value is locked: %s" msgstr "E741: Valore di %s non modificabile" @@ -754,6 +762,7 @@ msgstr " mark" msgid " FAILED" msgstr " FALLITO" +#. avoid a wait_return for this message, it's annoying #, c-format msgid "E137: Viminfo file is not writable: %s" msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura" @@ -1299,7 +1308,7 @@ msgstr "" #, no-c-format msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" -msgstr "E499: Un nome di file nullo per '%' or '#', va bene solo con \":p:h\"" +msgstr "E499: Un nome di file nullo per '%' o '#', va bene solo con \":p:h\"" msgid "E500: Evaluates to an empty string" msgstr "E500: Il valore è una stringa nulla" @@ -1464,6 +1473,9 @@ msgstr "è una directory" msgid "is not a file" msgstr "non è un file" +msgid "is a device (disabled with 'opendevice' option" +msgstr "è una periferica (disabilitata con l'opzione 'opendevice'" + msgid "[New File]" msgstr "[File nuovo]" @@ -1546,7 +1558,7 @@ msgid "E676: No matching autocommands fo msgstr "E676: Nessun autocomando corrispondente per buffer acwrite" msgid "E203: Autocommands deleted or unloaded buffer to be written" -msgstr "E203: Buffer in scrittuta cancellato o scaricato dagli autocomandi" +msgstr "E203: Buffer in scrittura cancellato o scaricato dagli autocomandi" msgid "E204: Autocommand changed number of lines in unexpected way" msgstr "E204: L'autocomando ha modificato numero linee in maniera imprevista" @@ -1560,6 +1572,9 @@ msgstr "Scrittura parziale disabilitata msgid "is not a file or writable device" msgstr "non è un file o un dispositivo su cui si possa scrivere" +msgid "writing to device disabled with 'opendevice' option" +msgstr "scrittura su periferica disabilitata con l'opzione 'opendevice'" + msgid "is read-only (add ! to override)" msgstr "è in sola letture (aggiungi ! per eseguire comunque)" @@ -2195,7 +2210,7 @@ msgid "Printed: %s" msgstr "Stampato: %s" msgid "Printing aborted" -msgstr "Stampa non completata'" +msgstr "Stampa non completata" msgid "E455: Error writing to PostScript output file" msgstr "E455: Errore in scrittura a file PostScript di output" @@ -2458,19 +2473,6 @@ msgstr "numero linea non nell'intervallo msgid "not allowed in the Vim sandbox" msgstr "non ammesso in ambiente protetto" -#, c-format -msgid "E370: Could not load library %s" -msgstr "E370: Non posso caricare la libreria %s" - -msgid "Sorry, this command is disabled: the Perl library could not be loaded." -msgstr "" -"Spiacente, comando non disponibile, non riesco a caricare libreria programmi " -"Perl." - -msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" -msgstr "" -"E299: Valorizzazione Perl vietata in ambiente protetto senza il modulo Safe" - msgid "" "E263: Sorry, this command is disabled, the Python library could not be " "loaded." @@ -2488,7 +2490,7 @@ msgid "softspace must be an integer" msgstr "softspace deve essere un numero intero" msgid "invalid attribute" -msgstr "atrributo non valido" +msgstr "attributo non valido" msgid "writelines() requires list of strings" msgstr "writelines() richiede una lista di stringhe" @@ -2645,7 +2647,7 @@ msgid "E275: Unknown SNiFF+ request: %s" msgstr "E275: Richiesta SNiFF+ sconosciuta: %s" msgid "E276: Error connecting to SNiFF+" -msgstr "E276: Errore connettendosi a SNiFF+" +msgstr "E276: Errore di connessione a SNiFF+" msgid "E278: SNiFF+ not connected" msgstr "E278: SNiFF+ non connesso" @@ -2994,17 +2996,17 @@ msgid "--remote \tEdit in msgstr "--remote \tApri in un server Vim se possibile" msgid "--remote-silent Same, don't complain if there is no server" -msgstr "--remote-silent Stessa cosa, ignora se non esiste un server" +msgstr "--remote-silent Stessa cosa, ignora se non esiste un server" msgid "" "--remote-wait As --remote but wait for files to have been edited" msgstr "" -"--remote-wait Come --remote ma aspetta che file siano elaborati" +"--remote-wait Come --remote ma aspetta che i file siano elaborati" msgid "" "--remote-wait-silent Same, don't complain if there is no server" msgstr "" -"--remote-wait-silent Stessa cosa, ignora se non esiste un server" +"--remote-wait-silent Stessa cosa, ignora se non esiste un server" msgid "--remote-tab As --remote but open tab page for each file" msgstr "--remote-tab Come --remote ma apre una linguetta per ogni file" @@ -3207,7 +3209,7 @@ msgid "" "# History of marks within files (newest to oldest):\n" msgstr "" "\n" -"# Storia dei mark all'interno dei files (dai più recenti ai meno recenti):\n" +"# Storia dei mark all'interno dei file (dai più recenti ai meno recenti):\n" msgid "Missing '>'" msgstr "Manca '>'" @@ -3329,6 +3331,10 @@ msgstr "" ",\n" "o il file è stato danneggiato." +msgid " has been damaged (page size is smaller than minimum value).\n" +msgstr "" +" è stato danneggiato (la dimensione della pagina è inferiore al minimo).\n" + #, c-format msgid "Using swap file \"%s\"" msgstr "Uso swap file \"%s\"" @@ -3671,6 +3677,10 @@ msgstr "E328: I Menu esistono solo in un'altra modalità" msgid "E329: No menu \"%s\"" msgstr "E329: Nessun Menu \"%s\"" +#. Only a mnemonic or accelerator is not valid. +msgid "E792: Empty menu name" +msgstr "E792: Nome menu non valido" + msgid "E330: Menu path must not lead to a sub-menu" msgstr "E330: Il percorso del Menu non deve condurre a un sotto-Menu" @@ -4558,7 +4568,7 @@ msgid "E66: \\z( not allowed here" msgstr "E66: \\z( non consentito qui" msgid "E67: \\z1 et al. not allowed here" -msgstr "E67: \\z1 et al. non consentiti qui" +msgstr "E67: \\z1 ecc. non consentiti qui" msgid "E68: Invalid character after \\z" msgstr "E68: Carattere non ammesso dopo \\z" @@ -5025,6 +5035,7 @@ msgstr "Spiacente, nessun suggerimento" msgid "Sorry, only %ld suggestions" msgstr "Spiacente, solo %ld suggerimenti" +#. for when 'cmdheight' > 1 #. avoid more prompt #, c-format msgid "Change \"%.*s\" to:" @@ -5450,6 +5461,13 @@ msgstr "" msgid "" "\n" +"MS-Windows 64 bit GUI version" +msgstr "" +"\n" +"Versione MS-Windows 64 bit GUI" + +msgid "" +"\n" "MS-Windows 32 bit GUI version" msgstr "" "\n" @@ -5765,6 +5783,19 @@ msgstr "E446: Nessun nome file sotto il msgid "E447: Can't find file \"%s\" in path" msgstr "E447: Non riesco a trovare il file \"%s\" nel percorso" +#, c-format +msgid "E370: Could not load library %s" +msgstr "E370: Non posso caricare la libreria %s" + +msgid "Sorry, this command is disabled: the Perl library could not be loaded." +msgstr "" +"Spiacente, comando non disponibile, non riesco a caricare libreria programmi " +"Perl." + +msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" +msgstr "" +"E299: Valorizzazione Perl vietata in ambiente protetto senza il modulo Safe" + msgid "Edit with &multiple Vims" msgstr "Apri con &molti Vim" @@ -6033,9 +6064,9 @@ msgid "E46: Cannot change read-only vari msgstr "E46: Non posso cambiare la variabile read-only \"%s\"" #, c-format -msgid "E46: Cannot set variable in the sandbox: \"%s\"" +msgid "E794: Cannot set variable in the sandbox: \"%s\"" msgstr "" -"E46: Non posso impostare la variabile read-only in ambiente protetto: \"%s\"" +"E794: Non posso impostare la variabile read-only in ambiente protetto: \"%s\"" msgid "E47: Error while reading errorfile" msgstr "E47: Errore leggendo il file errori" diff --git a/src/proto/tag.pro b/src/proto/tag.pro --- a/src/proto/tag.pro +++ b/src/proto/tag.pro @@ -1,12 +1,12 @@ /* tag.c */ -extern int do_tag __ARGS((char_u *tag, int type, int count, int forceit, int verbose)); -extern void tag_freematch __ARGS((void)); -extern void do_tags __ARGS((exarg_T *eap)); -extern int find_tags __ARGS((char_u *pat, int *num_matches, char_u ***matchesp, int flags, int mincount, char_u *buf_ffname)); -extern void free_tag_stuff __ARGS((void)); -extern int get_tagfname __ARGS((tagname_T *tnp, int first, char_u *buf)); -extern void tagname_free __ARGS((tagname_T *tnp)); -extern void simplify_filename __ARGS((char_u *filename)); -extern int expand_tags __ARGS((int tagnames, char_u *pat, int *num_file, char_u ***file)); -extern int get_tags __ARGS((list_T *list, char_u *pat)); +int do_tag __ARGS((char_u *tag, int type, int count, int forceit, int verbose)); +void tag_freematch __ARGS((void)); +void do_tags __ARGS((exarg_T *eap)); +int find_tags __ARGS((char_u *pat, int *num_matches, char_u ***matchesp, int flags, int mincount, char_u *buf_ffname)); +void free_tag_stuff __ARGS((void)); +int get_tagfname __ARGS((tagname_T *tnp, int first, char_u *buf)); +void tagname_free __ARGS((tagname_T *tnp)); +void simplify_filename __ARGS((char_u *filename)); +int expand_tags __ARGS((int tagnames, char_u *pat, int *num_file, char_u ***file)); +int get_tags __ARGS((list_T *list, char_u *pat)); /* vim: set ft=c : */