diff options
-rw-r--r-- | runtime/doc/autocmd.txt | 4 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 32 | ||||
-rw-r--r-- | runtime/doc/index.txt | 5 | ||||
-rw-r--r-- | runtime/doc/map.txt | 12 | ||||
-rw-r--r-- | runtime/doc/motion.txt | 15 | ||||
-rw-r--r-- | runtime/doc/options.txt | 72 | ||||
-rw-r--r-- | runtime/doc/pattern.txt | 18 | ||||
-rw-r--r-- | runtime/doc/repeat.txt | 6 | ||||
-rw-r--r-- | runtime/doc/starting.txt | 29 | ||||
-rw-r--r-- | runtime/doc/tags | 8 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 91 | ||||
-rw-r--r-- | runtime/doc/usr_41.txt | 58 | ||||
-rw-r--r-- | runtime/doc/windows.txt | 12 | ||||
-rw-r--r-- | runtime/ftplugin/c.vim | 4 | ||||
-rw-r--r-- | runtime/ftplugin/python.vim | 15 | ||||
-rw-r--r-- | runtime/syntax/viminfo.vim | 6 | ||||
-rw-r--r-- | runtime/tools/blink.c | 3 |
17 files changed, 258 insertions, 132 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index c3978fa3d..d33d6f28b 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2016 Apr 20 +*autocmd.txt* For Vim version 7.4. Last change: 2016 Jun 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1204,6 +1204,8 @@ option will not cause any commands to be executed. argument is present. You probably want to use <nomodeline> for events that are not used when loading a buffer, such as |User|. + Processing modelines is also skipped when no + matching autocommands were executed. *:doautoa* *:doautoall* :doautoa[ll] [<nomodeline>] [group] {event} [fname] diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 4cbece7a0..68508c6bf 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2016 Jun 04 +*eval.txt* For Vim version 7.4. Last change: 2016 Jun 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1468,9 +1468,11 @@ v:exception The value of the exception most recently caught and not *v:false* *false-variable* v:false A Number with value zero. Used to put "false" in JSON. See |json_encode()|. - When used as a string this evaluates to "false". > + When used as a string this evaluates to "v:false". > echo v:false -< false ~ +< v:false ~ + That is so that eval() can parse the string back to the same + value. *v:fcs_reason* *fcs_reason-variable* v:fcs_reason The reason why the |FileChangedShell| event was triggered. @@ -1613,17 +1615,21 @@ v:mouse_col Column number for a mouse click obtained with |getchar()|. v:none An empty String. Used to put an empty item in JSON. See |json_encode()|. When used as a number this evaluates to zero. - When used as a string this evaluates to "none". > + When used as a string this evaluates to "v:none". > echo v:none -< none ~ +< v:none ~ + That is so that eval() can parse the string back to the same + value. *v:null* *null-variable* v:null An empty String. Used to put "null" in JSON. See |json_encode()|. When used as a number this evaluates to zero. - When used as a string this evaluates to "null". > + When used as a string this evaluates to "v:null". > echo v:null -< null ~ +< v:null ~ + That is so that eval() can parse the string back to the same + value. *v:oldfiles* *oldfiles-variable* v:oldfiles List of file names that is loaded from the |viminfo| file on @@ -1796,9 +1802,11 @@ v:throwpoint The point where the exception most recently caught and not *v:true* *true-variable* v:true A Number with value one. Used to put "true" in JSON. See |json_encode()|. - When used as a string this evaluates to "true". > + When used as a string this evaluates to "v:true". > echo v:true -< true ~ +< v:true ~ + That is so that eval() can parse the string back to the same + value. *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 @@ -2218,6 +2226,7 @@ test_null_job() Job null value for testing test_null_list() List null value for testing test_null_partial() Funcref null value for testing test_null_string() String null value for testing +test_settime({expr}) none set current time for testing timer_start({time}, {callback} [, {options}]) Number create a timer timer_stop({timer}) none stop a timer @@ -7275,6 +7284,11 @@ test_null_partial() *test_null_partial()* test_null_string() *test_null_string()* Return a String that is null. Only useful for testing. +test_settime({expr}) *test_settime()* + Set the time Vim uses internally. Currently only used for + timestamps in the history, as they are used in viminfo. + {expr} must evaluate to a number. When the value is zero the + normal behavior is restored. *timer_start()* timer_start({time}, {callback} [, {options}]) diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index c636b7cb3..f040e5f2b 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2016 Apr 12 +*index.txt* For Vim version 7.4. Last change: 2016 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1156,8 +1156,9 @@ tag command action ~ |:chdir| :chd[ir] change directory |:checkpath| :che[ckpath] list included files |:checktime| :checkt[ime] check timestamp of loaded buffers -|:clist| :cl[ist] list all errors |:clast| :cla[st] go to the specified error, default last one +|:clearjumps| :cle[arjumps] clear the jump list +|:clist| :cl[ist] list all errors |:close| :clo[se] close current window |:cmap| :cm[ap] like ":map" but for Command-line mode |:cmapclear| :cmapc[lear] clear all mappings for Command-line mode diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 21858e099..558446066 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.4. Last change: 2016 Jan 10 +*map.txt* For Vim version 7.4. Last change: 2016 Jun 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1413,11 +1413,11 @@ The valid escape sequences are expands to nothing. *<mods>* <mods> The command modifiers, if specified. Otherwise, expands to - nothing. Supported modifiers are |aboveleft|, |belowright|, - |botright|, |browse|, |confirm|, |hide|, |keepalt|, - |keepjumps|, |keepmarks|, |keeppatterns|, |lockmarks|, - |noswapfile|, |silent|, |tab|, |topleft|, |verbose|, and - |vertical|. + nothing. Supported modifiers are |:aboveleft|, |:belowright|, + |:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|, + |:keepjumps|, |:keepmarks|, |:keeppatterns|, |:lockmarks|, + |:noswapfile|, |:silent|, |:tab|, |:topleft|, |:verbose|, and + |:vertical|. Examples: > command! -nargs=+ -complete=file MyEdit \ for f in expand(<q-args>, 0, 1) | diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index 97160ad4d..aee4e4ac2 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2015 Jun 06 +*motion.txt* For Vim version 7.4. Last change: 2016 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1027,7 +1027,8 @@ unless the line containing that position was changed or deleted. *CTRL-O* CTRL-O Go to [count] Older cursor position in jump list - (not a motion command). {not in Vi} + (not a motion command). + {not in Vi} {not available without the |+jumplist| feature} <Tab> or *CTRL-I* *<Tab>* @@ -1037,8 +1038,14 @@ CTRL-I Go to [count] newer cursor position in jump list {not available without the |+jumplist| feature} *:ju* *:jumps* -:ju[mps] Print the jump list (not a motion command). {not in - Vi} {not available without the |+jumplist| feature} +:ju[mps] Print the jump list (not a motion command). + {not in Vi} + {not available without the |+jumplist| feature} + + *:cle* *:clearjumps* +:cle[arjumps] Clear the jump list of the current window. + {not in Vi} + {not available without the |+jumplist| feature} *jumplist* Jumps are remembered in a jump list. With the CTRL-O and CTRL-I command you diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index fbeeb9edc..2751fb2bd 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2016 Jun 04 +*options.txt* For Vim version 7.4. Last change: 2016 Jun 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3337,6 +3337,41 @@ A jump table for the options with a short description can be found at |Q_op|. It is not allowed to change text or jump to another window while evaluating 'foldtext' |textlock|. + *'formatexpr'* *'fex'* +'formatexpr' 'fex' string (default "") + local to buffer + {not in Vi} + {not available when compiled without the |+eval| + feature} + Expression which is evaluated to format a range of lines for the |gq| + operator or automatic formatting (see 'formatoptions'). When this + option is empty 'formatprg' is used. + + The |v:lnum| variable holds the first line to be formatted. + The |v:count| variable holds the number of lines to be formatted. + The |v:char| variable holds the character that is going to be + inserted if the expression is being evaluated due to + automatic formatting. This can be empty. Don't insert + it yet! + + Example: > + :set formatexpr=mylang#Format() +< This will invoke the mylang#Format() function in the + autoload/mylang.vim file in 'runtimepath'. |autoload| + + The expression is also evaluated when 'textwidth' is set and adding + text beyond that limit. This happens under the same conditions as + when internal formatting is used. Make sure the cursor is kept in the + same spot relative to the text then! The |mode()| function will + return "i" or "R" in this situation. + + When the expression evaluates to non-zero Vim will fall back to using + the internal format mechanism. + + The expression will be evaluated in the |sandbox| when set from a + modeline, see |sandbox-option|. That stops the option from working, + since changing the buffer text is not allowed. + *'formatoptions'* *'fo'* 'formatoptions' 'fo' string (Vim default: "tcq", Vi default: "vt") local to buffer @@ -3380,41 +3415,6 @@ A jump table for the options with a short description can be found at |Q_op|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. - *'formatexpr'* *'fex'* -'formatexpr' 'fex' string (default "") - local to buffer - {not in Vi} - {not available when compiled without the |+eval| - feature} - Expression which is evaluated to format a range of lines for the |gq| - operator or automatic formatting (see 'formatoptions'). When this - option is empty 'formatprg' is used. - - The |v:lnum| variable holds the first line to be formatted. - The |v:count| variable holds the number of lines to be formatted. - The |v:char| variable holds the character that is going to be - inserted if the expression is being evaluated due to - automatic formatting. This can be empty. Don't insert - it yet! - - Example: > - :set formatexpr=mylang#Format() -< This will invoke the mylang#Format() function in the - autoload/mylang.vim file in 'runtimepath'. |autoload| - - The expression is also evaluated when 'textwidth' is set and adding - text beyond that limit. This happens under the same conditions as - when internal formatting is used. Make sure the cursor is kept in the - same spot relative to the text then! The |mode()| function will - return "i" or "R" in this situation. - - When the expression evaluates to non-zero Vim will fall back to using - the internal format mechanism. - - The expression will be evaluated in the |sandbox| when set from a - modeline, see |sandbox-option|. That stops the option from working, - since changing the buffer text is not allowed. - *'fsync'* *'fs'* *'nofsync'* *'nofs'* 'fsync' 'fs' boolean (default on) global diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index 38d172c43..d47fd9255 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2016 Apr 26 +*pattern.txt* For Vim version 7.4. Last change: 2016 Jun 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -954,14 +954,18 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): < When 'hlsearch' is set and you move the cursor around and make changes this will clearly show when the match is updated or not. To match the text up to column 17: > - /.*\%17v -< Column 17 is included, because that's where the "\%17v" matches, - even though this is a |/zero-width| match. Adding a dot to match the - next character has the same result: > - /.*\%17v. + /^.*\%17v +< Column 17 is not included, because this is a |/zero-width| match. To + include the column use: > + /^.*\%17v. < This command does the same thing, but also matches when there is no character in column 17: > - /.*\%<18v. + /^.*\%<18v. +< Note that without the "^" to anchor the match in the first column, + this will also highlight column 17: > + /.*\%17v +< Column 17 is highlighted by 'hlsearch' because there is another match + where ".*" matches zero characters. < Character classes: {not in Vi} diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index 791e7a54a..9124f79c6 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2016 May 24 +*repeat.txt* For Vim version 7.4. Last change: 2016 Jun 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -541,7 +541,7 @@ whether Vim supports a feature or a dependency is missing. You can also load an optional plugin at startup, by putting this command in your |.vimrc|: > :packadd! foodebug -The extra "!" is so that the plugin isn't loaded with Vim was started with +The extra "!" is so that the plugin isn't loaded if Vim was started with |--noplugin|. It is perfectly normal for a package to only have files in the "opt" @@ -620,7 +620,7 @@ the command after changing the plugin help: > Dependencies between plugins ~ *packload-two-steps* -Suppose you have a two plugins that depend on the same functionality. You can +Suppose you have two plugins that depend on the same functionality. You can put the common functionality in an autoload directory, so that it will be found automatically. Your package would have these files: diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index 23546d959..26aead3e3 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2016 Apr 22 +*starting.txt* For Vim version 7.4. Last change: 2016 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1413,6 +1413,29 @@ file (it's actually merged with the existing one, if one exists). The 'viminfo' option is a string containing information about what info should be stored, and contains limits on how much should be stored (see 'viminfo'). +Merging happens in two ways. Most items that have been changed or set in the +current Vim session are stored, and what was not changed is filled from what +is currently in the viminfo file. For example: +- Vim session A reads the viminfo, which contains variable START. +- Vim session B does the same +- Vim session A sets the variables AAA and BOTH and exits +- Vim session B sets the variables BBB and BOTH and exits +Now the viminfo will have: + START - it was in the viminfo and wasn't changed in session A or B + AAA - value from session A, session B kept it + BBB - value from session B + BOTH - value from session B, value from session A is lost + +For some items a timestamp is used to keep the last changed version. Here it +doesn't matter in which sequence Vim sessions exit, the newest item(s) are +always kept. This is used for: +- The command line history. +- The search string history. +- The input-line history. +- Contents of non-empty registers. +- The jump list +- File marks + Notes for Unix: - The file protection for the viminfo file will be set to prevent other users from being able to read it, because it may contain any text or commands that @@ -1535,14 +1558,14 @@ most of the information will be restored). already set (registers, marks, |v:oldfiles|, etc.) will be overwritten {not in Vi} - *:wv* *:wviminfo* *E137* *E138* *E574* *E886* + *:wv* *:wviminfo* *E137* *E138* *E574* *E886* *E929* :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above). The information in the file is first read in to make a merge between old and new info. When [!] is used, the old information is not read first, only the internal info is written. If 'viminfo' is empty, marks for up to 100 files will be written. - When you get error "E138: Can't write viminfo file" + When you get error "E929: Too many viminfo temp files" check that no old temp files were left behind (e.g. ~/.viminf*) and that you can write in the directory of the .viminfo file. diff --git a/runtime/doc/tags b/runtime/doc/tags index 83d63dbd7..0c0bcdb08 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2074,6 +2074,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :cl quickfix.txt /*:cl* :cla quickfix.txt /*:cla* :clast quickfix.txt /*:clast* +:cle motion.txt /*:cle* +:clearjumps motion.txt /*:clearjumps* :clist quickfix.txt /*:clist* :clo windows.txt /*:clo* :close windows.txt /*:close* @@ -3360,6 +3362,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* <line1> map.txt /*<line1>* <line2> map.txt /*<line2>* <lt> intro.txt /*<lt>* +<mods> map.txt /*<mods>* <nomodeline> autocmd.txt /*<nomodeline>* <q-args> map.txt /*<q-args>* <reg> map.txt /*<reg>* @@ -4451,6 +4454,7 @@ E925 quickfix.txt /*E925* E926 quickfix.txt /*E926* E927 eval.txt /*E927* E928 eval.txt /*E928* +E929 starting.txt /*E929* E93 windows.txt /*E93* E94 windows.txt /*E94* E95 message.txt /*E95* @@ -5244,6 +5248,7 @@ channel-callback channel.txt /*channel-callback* channel-close channel.txt /*channel-close* channel-commands channel.txt /*channel-commands* channel-demo channel.txt /*channel-demo* +channel-functions usr_41.txt /*channel-functions* channel-mode channel.txt /*channel-mode* channel-more channel.txt /*channel-more* channel-open channel.txt /*channel-open* @@ -6894,6 +6899,7 @@ job-control channel.txt /*job-control* job-err_cb channel.txt /*job-err_cb* job-err_io channel.txt /*job-err_io* job-exit_cb channel.txt /*job-exit_cb* +job-functions usr_41.txt /*job-functions* job-in_io channel.txt /*job-in_io* job-options channel.txt /*job-options* job-out_cb channel.txt /*job-out_cb* @@ -8622,6 +8628,7 @@ test_null_job() eval.txt /*test_null_job()* test_null_list() eval.txt /*test_null_list()* test_null_partial() eval.txt /*test_null_partial()* test_null_string() eval.txt /*test_null_string()* +test_settime() eval.txt /*test_settime()* testing-variable eval.txt /*testing-variable* tex-cchar syntax.txt /*tex-cchar* tex-cole syntax.txt /*tex-cole* @@ -8652,6 +8659,7 @@ throw-from-catch eval.txt /*throw-from-catch* throw-variables eval.txt /*throw-variables* throwpoint-variable eval.txt /*throwpoint-variable* time-functions usr_41.txt /*time-functions* +timer-functions usr_41.txt /*timer-functions* timer_start() eval.txt /*timer_start()* timer_stop() eval.txt /*timer_stop()* timestamp editing.txt /*timestamp* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 792b19410..912083c9b 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.4. Last change: 2016 Jun 04 +*todo.txt* For Vim version 7.4. Last change: 2016 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -34,7 +34,22 @@ not be repeated below, unless there is extra information. *known-bugs* -------------------- Known bugs and current work ----------------------- +Further implement 'barline' in viminfo: +- jumplist: merge with vi_jumplist. +- Use timestamp for more items: locations, marks. +- Docs: lines are copied by Vim since 7.4.1131 +- Check if debug history works. + +Problem with setqflist([]): grep 4 times, ":colder 3", setqflist([]) will +clear the next list, not the current one. Ramel Eshed, Jun 8. + +Patch: Fix drawing background with &termguicolors #805 (Jacob Niehus) + +channel: +- GUI cursor blinking interrupted when the job output goes to a buffer that is + in a window. (Ramel Eshed, 2016 Jun 9) +- GUI cursor blinking interrupted when there is a status line. (Ramel Eshed, + 2016 Jun 9) - When a message in the queue but there is no callback, drop it after a while? Add timestamp to queued messages and callbacks with ID, remove after a minute. Option to set the droptime. @@ -49,6 +64,18 @@ Later - job_start(): run job in a newly opened terminal. With xterm could use -S{pty}. +Quickfix improvements for backgroupd building and grepping: +- Move 'efm' parsing to a separate function. If 'efm' is the same as last + time re-use the fmt_first list. +- Do not clear "dir_stack", "directory" and "file_stack", "currfile" when + using ":addexpr". + Move multiline, multiignore, multiscan outside of the function. +- Add :cbottom, if quickfix window is visible scroll to make the last line + visible. Use scroll_cursor_bot(0, FALSE); +- Add a flag/property/option to quickfix commands and functions to keep a file + name as a string and not create a buffer for it? To avoid creating lots of + buffers. (Ramel Eshed) + Regexp problems: - Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6. (Manuel Ortega, 2016 Apr 24) @@ -95,12 +122,8 @@ Regexp problems: - The pattern "\1" with the old engine gives E65, with the new engine it matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24) - Search for \\~ causes error E874. - -Patch to reduce number of memory allocations for quickfix lines. -(Yegappan Lakshmanan, 2016 May 22, #831) - -User commands: add a <> item to pass on command modifiers, such as ":tab". -Patch by Yegappan Lakshmanan, 2016 May 22, #829. +- Search for /\%d0\+ causes error E363 in a file with consecutive NUL + characters. (Christian Brabandt, 2016 Jun 7) jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23) What if there is an invalid character? @@ -110,34 +133,11 @@ about /S and /D options (Ken Takata, 2016 Apr 13) Cursor positioned in the wrong place when editing src/testdir/test_viml.vim. -When using "k" at the hit-enter prompt only get the hit-enter prompt, not -scrolling up. (Ramel Eshed, 2016 May 25) -Related patches: Patch 7.4.1603, Patch 7.4.1594 -Patch by Hirohito Higashi, 2016 May 26. - -Patch to make cursor blinking work better with GTK3. (Kazunobu Kuriyama, 2016 -Apr 19) Need to check this works on Linux. -Alternative: -- add gui_restart_blink flag, set when key typed. -- in gui_mch_start_blink(): continue if possible. -- in gui_mch_stop_blink(): remember last state. - Use ADDR_OTHER instead of ADDR_LINES for many more commands. Add tests for using number larger than number of lines in buffer. -Patch to fix escaping special characters for delete(). (tc-0, 2016 Mar 20, -#700) Test fails on MS-Windows. - Invalid behavior with NULL list. (Nikolai Pavlov, #768) -Patch to fix using CTRL-] on "{address}." in help. (Hirohito Higashi, 2016 May -18, #814) - -Can we add a function to parse one line for 'errorformat'? Like ":caddexpr" -for one line. - -Patch to fix greying popup menu items. (Shane Harper, 2016 May 23, #834) - &t_ut not used with 'termguicolors' is set. (Jacob Niehus, 2016 May 14, #804) Patch to fix this, Jacob Niehus, 2016 May 14, #805) @@ -152,6 +152,11 @@ Correction for test, Ken Takata, 2016 May 27. Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807) +":caddexpr" should keep state, so that directory changes can be respected. +(Luc Hermitte, 2016 Jun 6) +Don't clear dir_stack and file_stack when returning, do it on entry when not +adding iterms. And keep them in qf_list_T. + Patch to add filtering of the quickfix list. (Yegappan Lakshmanan, 2016 Mar 13, last version) Update May 22, #830. @@ -190,6 +195,9 @@ Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806) Patch to improve map documentation. Issue #799. +Patch for restoring wide characters in the console buffer. +(Ken Takata, 2016 Jun 7) + We can use '. to go to the last change in the current buffer, but how about the last change in any buffer? Can we use ', (, is next to .)? @@ -224,7 +232,9 @@ When doing "vi buf.md" a BufNew autocommand for *.md is not triggered. Because of using the initial buffer? (Dun Peal, 2016 May 12) Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12) -Updated 2016 Feb 10 +Updated 2016 Jun 10, #858 + +Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11) Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574 No test, needs some work to include. @@ -286,6 +296,9 @@ Should use /usr/local/share/applications or /usr/share/applications. Or use $XDG_DATA_DIRS. Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4) +Patch to add getbufinfo(), gettabinfo() and getwininfo(). (Yegappan +Lakshmanan, 2016 Apr 2016) Update Jun 8. + Access to uninitialized memory in match_backref() regexp_nda.c:4882 (Dominique Pelle, 2015 Nov 6) @@ -296,7 +309,7 @@ directory exists. (Sergio Gallelli, 2013 Dec 29) when evaluating to non-zero. Add the "watchadd expr" command, stop when the value of the expression changes. ":watchdel" deletes an item, ":watchlist" lists the items. (Charles Campbell) -Patch by Christian Brabandt, 2016 Feb 1. +Patch by Christian Brabandt, 2016 Jun 10, #859 If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe, 2016 Apr 25, #780) @@ -305,6 +318,7 @@ Patch to avoid redrawing tabline when the popup menu is visible. (Christian Brabandt, 2016 Jan 28) Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24) +Update 2016 Jun 10, #861 Add value "smart" to 'tagcase': ignore case when tag is all lower case. Patch from Christian Brabandt, 2016 Mar 30, #712. @@ -397,7 +411,7 @@ Use v:none. var == v:none Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan 24) Also need a way to get the global arg list? Update later on Jan 24 -Update Mar 5. Update Apr 7. +Update Mar 5. Update Apr 7. Update Jun 5. To support Thai (and other languages) word boundaries, include the ICU library: http://userguide.icu-project.org/boundaryanalysis @@ -577,7 +591,7 @@ Patch: On MS-Windows shellescape() may have to triple double quotes. (Ingo Karkat, 2015 Jan 16) Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15) -Update 2016 Jan 31 (email). +Update 2016 Jun 10, # 857 Redo only remembers the last change. Could use "{count}g." to redo an older change. How does the user know which change? At least have a way to list @@ -828,9 +842,6 @@ May 17: with winlist() and tabpagelist(). May 19: with local variables. May 28: with options -Patch to add getbufinfo(), gettabinfo() and getwininfo(). (Yegappan -Lakshmanan, 2016 Apr 2016) - Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep 28) With tests: Oct 9. @@ -1316,12 +1327,6 @@ Gui menu edit/paste in block mode insert only inserts in one line (Bjorn Winckler, 2011 May 11) Requires a map mode for Insert mode started from blockwise Visual mode. -Use json format for new items in .viminfo: - |["info","any info"] - |["text","text text text" - |"continuation line"] - |["hist",242342342,{"arg":"value"}] - Writing nested List and Dict in viminfo gives error message and can't be read back. (Yukihiro Nakadaira, 2010 Nov 13) diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 69298e53f..66aa77136 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2016 Jun 04 +*usr_41.txt* For Vim version 7.4. Last change: 2016 Jun 11 VIM USER MANUAL - by Bram Moolenaar @@ -602,7 +602,9 @@ String manipulation: *string-functions* strdisplaywidth() size of string when displayed, deals with tabs substitute() substitute a pattern match with a string submatch() get a specific match in ":s" and substitute() - strpart() get part of a string + strpart() get part of a string using byte index + strcharpart() get part of a string using char index + strgetchar() get character from a string using char index expand() expand special keywords iconv() convert text from one encoding to another byteidx() byte index of a character in a string @@ -678,6 +680,7 @@ Floating point computation: *float-functions* sinh() hyperbolic sine cosh() hyperbolic cosine tanh() hyperbolic tangent + isnan() check for not a number Other computation: *bitwise-function* and() bitwise AND @@ -732,11 +735,14 @@ Working with text in the current buffer: *text-functions* searchpair() find the other end of a start/skip/end searchpairpos() find the other end of a start/skip/end searchdecl() search for the declaration of a name + getcharsearch() return character search information + setcharsearch() set character search information *system-functions* *file-functions* System functions and manipulation of files: glob() expand wildcards globpath() expand wildcards in a number of directories + glob2regpat() convert a glob pattern into a search pattern findfile() find a file in a list of directories finddir() find a directory in a list of directories resolve() find out where a shortcut points to @@ -748,6 +754,7 @@ System functions and manipulation of files: filereadable() check if a file can be read filewritable() check if a file can be written to getfperm() get the permissions of a file + setfperm() set the permissions of a file getftype() get the kind of a file isdirectory() check if a directory exists getfsize() get the size of a file @@ -790,6 +797,11 @@ Buffers, windows and the argument list: bufwinnr() get the window number of a specific buffer winbufnr() get the buffer number of a specific window getbufline() get a list of lines from the specified buffer + win_findbuf() find windows containing a buffer + win_getid() get window ID of a window + win_gotoid() go to window with ID + win_id2tabwin() get tab and window nr from window ID + win_id2win() get window nr from window ID Command line: *command-line-functions* getcmdline() get the current command line @@ -900,14 +912,48 @@ Testing: *test-functions* assert_true() assert that an expression is true assert_exception() assert that a command throws an exception assert_fails() assert that a function call fails - -Inter-process communication: + test_alloc_fail() make memory allocation fail + test_disable_char_avail() test without typeahead + test_garbagecollect_now() free memory right now + test_null_channel() return a null Channel + test_null_dict() return a null Dict + test_null_job() return a null Job + test_null_list() return a null List + test_null_partial() return a null Partial function + test_null_string() return a null String + +Inter-process communication: *channel-functions* ch_open() open a channel ch_close() close a channel + ch_read() read a message from a channel + ch_readraw() read a raw message from a channel ch_sendexpr() send a JSON message over a channel ch_sendraw() send a raw message over a channel + ch_evalexpr() evaluates an expression over channel + ch_evalraw() evaluates a raw string over channel + ch_status() get status of a channel + ch_getbufnr() get the buffer number of a channel + ch_getjob() get the job associated with a channel + ch_info() get channel information + ch_log() write a message in the channel log file + ch_logfile() set the channel log file + ch_setoptions() set the options for a channel jsonencode() encode an expression to a JSON string jsondecode() decode a JSON string to Vim types + js_encode() encode an expression to a JSON string + js_decode() decode a JSON string to Vim types + +Jobs: *job-functions* + job_start() start a job + job_stop() stop a job + job_status() get the status of a job + job_getchannel() get the channel used by a job + job_info() get information about a job + job_setoptions() set options for a job + +Timers: *timer-functions* + timer_start() create a timer + timer_stop() stop a timer Various: *various-functions* mode() get current editing mode @@ -1408,9 +1454,9 @@ Now we can instantiate a Dutch translation object: > And a German translator: > :let uk2de = copy(transdict) - :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} + :let uk2de.words = {'one': 'eins', 'two': 'zwei', 'three': 'drei'} :echo uk2de.translate('three one') -< drei ein ~ +< drei eins ~ You see that the copy() function is used to make a copy of the "transdict" Dictionary and then the copy is changed to add the words. The original diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index f4c9001f9..9bf096001 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.4. Last change: 2016 Feb 01 +*windows.txt* For Vim version 7.4. Last change: 2016 Jun 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -76,6 +76,16 @@ places where a Normal mode command can't be used or is inconvenient. The main Vim window can hold several split windows. There are also tab pages |tab-page|, each of which can hold multiple windows. +Each window has a unique identifier called the window ID. This identifier +will not change within a Vim session. The |win_getid()| and |win_id2tabwin()| +functions can be used to convert between the window/tab number and the +identifier. There is also the window number, which may change whenever +windows are opened or closed, see |winnr()|. + +Each buffer has a unique number and the number will not change within a Vim +session. The |bufnr()| and |bufname()| functions can be used to convert +between a buffer name and the buffer number. + ============================================================================== 2. Starting Vim *windows-starting* diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim index 19e8c51ed..5c9543845 100644 --- a/runtime/ftplugin/c.vim +++ b/runtime/ftplugin/c.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2012 Jul 10 +" Last Change: 2016 Jun 12 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -37,7 +37,7 @@ endif " When the matchit plugin is loaded, this makes the % command skip parens and " braces in comments. let b:match_words = &matchpairs . ',^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>' -let b:match_skip = 's:comment\|string\|character' +let b:match_skip = 's:comment\|string\|character\|special' " Win32 can filter files in the browse dialog if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") diff --git a/runtime/ftplugin/python.vim b/runtime/ftplugin/python.vim index 75c7e8799..9e2c5a763 100644 --- a/runtime/ftplugin/python.vim +++ b/runtime/ftplugin/python.vim @@ -1,8 +1,9 @@ " Vim filetype plugin file " Language: python -" Maintainer: Johannes Zellner <johannes@zellner.org> -" Last Change: 2014 Feb 09 -" Last Change By Johannes: Wed, 21 Apr 2004 13:13:08 CEST +" Maintainer: James Sully <sullyj3@gmail.com> +" Previous Maintainer: Johannes Zellner <johannes@zellner.org> +" Last Change: Fri, 10 June 2016 +" https://github.com/sullyj3/vim-ftplugin-python if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -21,10 +22,10 @@ setlocal omnifunc=pythoncomplete#Complete set wildignore+=*.pyc -nnoremap <silent> <buffer> ]] :call <SID>Python_jump('/^\(class\\|def\)')<cr> -nnoremap <silent> <buffer> [[ :call <SID>Python_jump('?^\(class\\|def\)')<cr> -nnoremap <silent> <buffer> ]m :call <SID>Python_jump('/^\s*\(class\\|def\)')<cr> -nnoremap <silent> <buffer> [m :call <SID>Python_jump('?^\s*\(class\\|def\)')<cr> +nnoremap <silent> <buffer> ]] :call <SID>Python_jump('/^\(class\\|def\)\>')<cr> +nnoremap <silent> <buffer> [[ :call <SID>Python_jump('?^\(class\\|def\)\>')<cr> +nnoremap <silent> <buffer> ]m :call <SID>Python_jump('/^\s*\(class\\|def\)\>')<cr> +nnoremap <silent> <buffer> [m :call <SID>Python_jump('?^\s*\(class\\|def\)\>')<cr> if !exists('*<SID>Python_jump') fun! <SID>Python_jump(motion) range diff --git a/runtime/syntax/viminfo.vim b/runtime/syntax/viminfo.vim index 7af3b89ae..667e1bab2 100644 --- a/runtime/syntax/viminfo.vim +++ b/runtime/syntax/viminfo.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim .viminfo file " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2012 Feb 03 +" Last Change: 2016 Jun 05 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -30,11 +30,15 @@ syn match viminfoOptionName "\*\a*"ms=s+1 contained " Comments syn match viminfoComment "^#.*" +" New style lines. TODO: highlight numbers and strings. +syn match viminfoNew "^|.*" + " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link viminfoComment Comment hi def link viminfoError Error hi def link viminfoStatement Statement +hi def link viminfoNew String let b:current_syntax = "viminfo" diff --git a/runtime/tools/blink.c b/runtime/tools/blink.c index 5b5b28172..a782061fd 100644 --- a/runtime/tools/blink.c +++ b/runtime/tools/blink.c @@ -6,9 +6,10 @@ */ #include <stdio.h> +#include <unistd.h> int -main() +main(void) { while (1) { |