# HG changeset patch # User Christian Brabandt # Date 1453654806 -3600 # Node ID 5f6f35a3cb12e17793d39e430279c9123686e8cf # Parent 74b54a066bff1e46557f8915d2510d73c7b57a21 commit https://github.com/vim/vim/commit/705ada1aff27ecd9c47c690df817d043c2ceb5e2 Author: Bram Moolenaar Date: Sun Jan 24 17:56:50 2016 +0100 Update a few runtime files. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2016 Jan 23 +*eval.txt* For Vim version 7.4. Last change: 2016 Jan 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1412,6 +1412,9 @@ v:exception The value of the exception m *v:false* *false-variable* v:false A Number with value zero. Used to put "false" in JSON. See |jsonencode()|. + When used as a string this evaluates to "false". > + echo v:false +< false ~ *v:fcs_reason* *fcs_reason-variable* v:fcs_reason The reason why the |FileChangedShell| event was triggered. @@ -1489,7 +1492,7 @@ v:foldstart Used for 'foldtext': first l v:hlsearch Variable that indicates whether search highlighting is on. Setting it makes sense only if 'hlsearch' is enabled which requires |+extra_search|. Setting this variable to zero acts - the like |:nohlsearch| command, setting it to one acts like > + like the |:nohlsearch| command, setting it to one acts like > let &hlsearch = &hlsearch < Note that the value is restored when returning from a function. |function-search-undo|. @@ -1549,10 +1552,18 @@ v:mouse_col Column number for a mouse cl *v:none* *none-variable* v:none An empty String. Used to put an empty item in JSON. See |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "none". > + echo v:none +< none ~ *v:null* *null-variable* v:null An empty String. Used to put "null" in JSON. See |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "null". > + echo v:null +< null ~ *v:oldfiles* *oldfiles-variable* v:oldfiles List of file names that is loaded from the |viminfo| file on @@ -1722,7 +1733,9 @@ v:throwpoint The point where the excepti *v:true* *true-variable* v:true A Number with value one. Used to put "true" in JSON. See |jsonencode()|. - + When used as a string this evaluates to "true". > + echo v:true +< true ~ *v:val* *val-variable* v:val Value of the current item of a |List| or |Dictionary|. Only valid while evaluating the expression used with |map()| and @@ -4234,17 +4247,26 @@ join({list} [, {sep}]) *join()* The opposite function is |split()|. jsondecode({string}) *jsondecode()* - TODO + This parses a JSON formatted string and returns the equivalent + in Vim values. See |jsonencode()| for the relation between + JSON and Vim values. + The decoding is permissive: + - A trailing comma in an array and object is ignored. + - An empty item in an array results in v:none. + - When an object name is not a string it is converted to a + string. E.g. the number 123 is used as the string "123". + - More floating point numbers are recognized, e.g. "1." for + "1.0". jsonencode({expr}) *jsonencode()* - Encodode {expr} as JSON and return this as a string. + Encode {expr} as JSON and return this as a string. The encoding is specified in: http://www.ietf.org/rfc/rfc4627.txt Vim values are converted as follows: Number decimal number Float floating point number String in double quotes (possibly null) - Funcref nothing + Funcref not possible, error List as an array (possibly null); when used recursively: [] Dict as an object (possibly null); when @@ -4253,6 +4275,13 @@ jsonencode({expr}) *jsonencode()* v:true "true" v:none nothing v:null "null" + Note that using v:none is permitted, although the JSON + standard does not allow empty items. This can be useful for + omitting items in an array: + [0,,,,,5] ~ + This is much more efficient than: + [0,null,null,null,null,5] ~ + But a strict JSON parser will not accept it. keys({dict}) *keys()* Return a |List| with all the keys of {dict}. The |List| is in @@ -6615,6 +6644,8 @@ type({expr}) The result is a Number, dep List: 3 Dictionary: 4 Float: 5 + Boolean: 6 (v:false and v:true) + None 7 (v:null and v:none) To avoid the magic numbers it should be used this way: > :if type(myvar) == type(0) :if type(myvar) == type("") @@ -6622,6 +6653,8 @@ type({expr}) The result is a Number, dep :if type(myvar) == type([]) :if type(myvar) == type({}) :if type(myvar) == type(0.0) + :if type(myvar) == type(v:false) + :if type(myvar) == type(v:none undofile({name}) *undofile()* Return the name of the undo file that would be used for a file diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt --- a/runtime/doc/if_mzsch.txt +++ b/runtime/doc/if_mzsch.txt @@ -1,4 +1,4 @@ -*if_mzsch.txt* For Vim version 7.4. Last change: 2016 Jan 16 +*if_mzsch.txt* For Vim version 7.4. Last change: 2016 Jan 24 VIM REFERENCE MANUAL by Sergey Khorev @@ -265,7 +265,7 @@ directly from Scheme. For instance: > < ============================================================================== -7. Dynamic loading *mzscheme-dynamic* *E815* +7. Dynamic loading *mzscheme-dynamic* *E815* On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| output then includes |+mzscheme/dyn|. @@ -294,7 +294,7 @@ to set the environment variable as the f PLTCONFIGDIR=C:\Racket63\etc < ============================================================================== -8. MzScheme setup *mzscheme-setup* +8. MzScheme setup *mzscheme-setup* *E895* Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base" if it doesn't exist), "r5rs" module for test and "raco ctool" command for diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4422,6 +4422,7 @@ E891 eval.txt /*E891* E892 eval.txt /*E892* E893 eval.txt /*E893* E894 eval.txt /*E894* +E895 if_mzsch.txt /*E895* E90 message.txt /*E90* E91 options.txt /*E91* E92 message.txt /*E92* @@ -5730,6 +5731,7 @@ extend() eval.txt /*extend()* extension-removal cmdline.txt /*extension-removal* extensions-improvements todo.txt /*extensions-improvements* f motion.txt /*f* +false-variable eval.txt /*false-variable* faq intro.txt /*faq* farsi farsi.txt /*farsi* farsi-fonts farsi.txt /*farsi-fonts* @@ -6786,6 +6788,8 @@ javascript-cinoptions indent.txt /*javas javascript-indenting indent.txt /*javascript-indenting* join() eval.txt /*join()* jsbterm-mouse options.txt /*jsbterm-mouse* +jsondecode() eval.txt /*jsondecode()* +jsonencode() eval.txt /*jsonencode()* jtags tagsrch.txt /*jtags* jump-motions motion.txt /*jump-motions* jumplist motion.txt /*jumplist* @@ -7435,6 +7439,7 @@ no-eval-feature eval.txt /*no-eval-featu no_buffers_menu gui.txt /*no_buffers_menu* non-greedy pattern.txt /*non-greedy* non-zero-arg eval.txt /*non-zero-arg* +none-variable eval.txt /*none-variable* normal-index index.txt /*normal-index* not-compatible usr_01.txt /*not-compatible* not-edited editing.txt /*not-edited* @@ -7442,6 +7447,7 @@ notation intro.txt /*notation* notepad gui_w32.txt /*notepad* nr2char() eval.txt /*nr2char()* nroff.vim syntax.txt /*nroff.vim* +null-variable eval.txt /*null-variable* number_relativenumber options.txt /*number_relativenumber* numbered-function eval.txt /*numbered-function* o insert.txt /*o* @@ -8509,6 +8515,7 @@ toolbar-icon gui.txt /*toolbar-icon* toupper() eval.txt /*toupper()* tr() eval.txt /*tr()* trojan-horse starting.txt /*trojan-horse* +true-variable eval.txt /*true-variable* trunc() eval.txt /*trunc()* try-conditionals eval.txt /*try-conditionals* try-echoerr eval.txt /*try-echoerr* @@ -8618,6 +8625,7 @@ v:dying eval.txt /*v:dying* v:errmsg eval.txt /*v:errmsg* v:errors eval.txt /*v:errors* v:exception eval.txt /*v:exception* +v:false eval.txt /*v:false* v:fcs_choice eval.txt /*v:fcs_choice* v:fcs_reason eval.txt /*v:fcs_reason* v:fname_diff eval.txt /*v:fname_diff* @@ -8637,6 +8645,8 @@ v:lnum eval.txt /*v:lnum* v:mouse_col eval.txt /*v:mouse_col* v:mouse_lnum eval.txt /*v:mouse_lnum* v:mouse_win eval.txt /*v:mouse_win* +v:none eval.txt /*v:none* +v:null eval.txt /*v:null* v:oldfiles eval.txt /*v:oldfiles* v:operator eval.txt /*v:operator* v:option_new eval.txt /*v:option_new* @@ -8658,6 +8668,7 @@ v:swapname eval.txt /*v:swapname* v:termresponse eval.txt /*v:termresponse* v:this_session eval.txt /*v:this_session* v:throwpoint eval.txt /*v:throwpoint* +v:true eval.txt /*v:true* v:val eval.txt /*v:val* v:var eval.txt /*v:var* v:version eval.txt /*v:version* diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar -" Last Change: 2014 Dec 12 +" Last Change: 2016 Jan 24 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -58,19 +58,19 @@ function GetVimIndentIntern() if exists("g:vim_indent_cont") let ind = ind + g:vim_indent_cont else - let ind = ind + &sw * 3 + let ind = ind + shiftwidth() * 3 endif elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+END' - let ind = ind + &sw + let ind = ind + shiftwidth() else " A line starting with :au does not increment/decrement indent. if prev_text !~ '^\s*au\%[tocmd]' let i = match(prev_text, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>') if i >= 0 - let ind += &sw + let ind += shiftwidth() if strpart(prev_text, i, 1) == '|' && has('syntax_items') \ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$' - let ind -= &sw + let ind -= shiftwidth() endif endif endif @@ -82,7 +82,7 @@ function GetVimIndentIntern() let i = match(prev_text, '[^\\]|\s*\(ene\@!\)') if i > 0 && prev_text !~ '^\s*au\%[tocmd]' if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$' - let ind = ind - &sw + let ind = ind - shiftwidth() endif endif @@ -90,7 +90,7 @@ function GetVimIndentIntern() " Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry, " :endfun, :else and :augroup END. if cur_text =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s*!\=\s\+[eE][nN][dD]\)' - let ind = ind - &sw + let ind = ind - shiftwidth() endif return ind