aboutsummaryrefslogtreecommitdiff
path: root/test/functional
Commit message (Collapse)AuthorAge
...
| * | ui/terminal: make terminal state redraw like any other stateBjörn Linse2019-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, ordinary redraws were missing from terminal mode. Instead, there was an async callback that invoked update_screen() on terminal data regardless of mode (as if :redraw! was invoked by a timer). This created some issues: - async changes to an unrelated ordinary buffer were not always redrawn in terminal mode - screen cursor position was not properly updated in terminal mode (partial fix, will be properly fixed in a follow up PR) - ad-hoc logic was needed for interaction with special states such as inccommand or horizontal wildmenu. Instead redraw terminal mode just like any other state. This disables forced redraws in cmdline mode, which were inconisent which async changes to normal buffers (which are not redrawn in cmdline mode).
* | | Merge pull request #9985 from bfredl/shenanigansBjörn Linse2019-05-13
|\ \ \ | | | | | | | | Fix aucmd_win issues: crashes and redrawing errors.
| * | | autocmd: fixes and tests for autocmd window issuesBjörn Linse2019-05-13
| | | | | | | | | | | | | | | | | | | | | | | | - redraw! in an invisible buffer rendered the screen unusable. - storing the autocmd window handle and using it in API function could lead to crashes. Unregister the handle when the window is not active.
* | | | API/nvim_set_keymap: remove mode-shortname aliasesJustin M. Keyes2019-05-12
| | | | | | | | | | | | | | | | | | | | Reduce the API surface-area a bit. No need to have aliases for a mode. ref #9924
* | | | API/nvim_set_keymap: minor cleanupJustin M. Keyes2019-05-12
|/ / / | | | | | | | | | ref #9924
* | | API: nvim_set_keymap, nvim_del_keymap #9924Yilin Yang2019-05-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | closes #9136 - Treat empty {rhs} like <Nop> - getchar.c: Pull "repl. MapArg termcodes" into func The "preprocessing code" surrounding the replace_termcodes calls needs to invoke replace_termcodes, and also check if RHS is equal to "<Nop>". To reduce code duplication, factor this out into a helper function. Also add an rhs_is_noop flag to MapArguments; buf_do_map_explicit expects an empty {rhs} string for "<Nop>", but also needs to distinguish that from something like ":map lhs<cr>" where no {rhs} was provided. - getchar.c: Use allocated buffer for rhs in MapArgs Since the MAXMAPLEN limit does not apply to the RHS of a mapping (or else an RHS that calls a really long autoload function from a plugin would be incorrectly rejected as being too long), use an allocated buffer for RHS rather than a static buffer of length MAXMAPLEN + 1. - Mappings LHS and RHS can contain literal space characters, newlines, etc. - getchar.c: replace_termcodes in str_to_mapargs It makes sense to do this; str_to_mapargs is, intuitively, supposed to take a "raw" command string and parse it into a totally "do_map-ready" struct. - api/vim.c: Update lhs, rhs len after replace_termcodes Fixes a bug in which replace_termcodes changes the length of lhs or rhs, but the later search through the mappings/abbreviations hashtables still uses the old length value. This would cause the search to fail erroneously and throw 'E31: No such mapping' errors or 'E24: No such abbreviation' errors. - getchar: Create new map_arguments struct So that a string of map arguments can be parsed into a more useful, more portable data structure. - getchar.c: Add buf_do_map function Exactly the same as the old do_map, but replace the hardcoded references to the global `buf_T* curbuf` with a function parameter so that we can invoke it from nvim_buf_set_keymap. - Remove gettext calls in do_map error handling
* | | test/channels_spec: cleanupJustin M. Keyes2019-05-12
| | | | | | | | | | | | | | | - Remove stray print() - Use uname() instead of system('uname')
* | | UI/ext_messages: learn more message kindsJustin M. Keyes2019-05-11
| | | | | | | | | | | | ref #6201
* | | UI/nvim_ui_attach(): add `override` optionJustin M. Keyes2019-05-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before now, Nvim always degrades UI capabilities to the lowest-common denominator. For example, if any connected UI has `ext_messages=false` then `ext_messages=true` requested by any other connected UI is ignored. Now `nvim_ui_attach()` supports `override=true`, which flips the behavior: if any UI requests an `ext_*` UI capability then the capability is enabled (and the legacy behavior is disabled). Legacy UIs will be broken while a `override=true` UI is connected, but it's useful for debugging: you can type into the TUI and observe the UI events from another connected (UI) client. And the legacy UI will "recover" after the `override=true` UI disconnects. Example using pynvim: >>> n.ui_attach(2048, 2048, rgb=True, override=True, ext_multigrid=True, ext_messages=True, ext_popupmenu=True) >>> while True: n.next_message();
* | | API: fix cursor position when lines are added #9961hashinclude2019-05-07
| | | | | | | | | | | | Restore code removed in #9674.
* | | test: cleanupJustin M. Keyes2019-05-05
| | | | | | | | | | | | | | | Avoid hyper-granularity. Don't need subdirectories for every little thing.
* | | tests: adjust to latest Vim patchesMarco Hinz2019-05-05
| | |
* | | vim-patch:8.0.1782: no simple way to label quickfix entriesMarco Hinz2019-05-05
| | | | | | | | | | | | | | | | | | | | | | | | Problem: No simple way to label quickfix entries. Solution: Add the "module" item, to be used instead of the file name for display purposes. (Martin Szamotulski) https://github.com/vim/vim/commit/d76ce852668635d81778cedacc2d3f021ed4e475
* | | terminal: swap priority of terminal, editor highlightsJustin M. Keyes2019-05-02
| | | | | | | | | | | | closes #9964
* | | ex_getln: fix statusline redraw logic #9967Carlo Abelli2019-05-02
| | | | | | | | | fixes #9908
* | | clipboard: setreg("*") with clipboard=unnamed #9954Justin M. Keyes2019-04-28
| | | | | | | | | | | | Helped-by: Björn Linse <bjorn.linse@gmail.com> fix #5646
* | | win/defaults: Use "…/nvim-data/site" in 'runtimepath'Justin M. Keyes2019-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows we store non-config data in "$XDG_DATA_HOME/nvim-data". But the "…/site" items in 'runtimepath' did not correctly point to that location, they used "…/nvim/site". Fix the init logic to use "…/nvim-data/site". closes #9910
* | | test: clear(): remove `opts.headless` parameterJustin M. Keyes2019-04-27
| | | | | | | | | | | | | | | | | | | | | Callers can instead specify `args_rm={'--headless'}`. TODO: should `nvim_argv` have "--headless" by default? Need to inspect some uses of spawn(nvim_argv) ...
* | | test: clear(): `args_rm` parameterJustin M. Keyes2019-04-27
| | |
* | | test: 'shadafile' defaultJustin M. Keyes2019-04-27
| | | | | | | | | | | | ref 773bdd41ec19
* | | vim-patch:8.0.1510: cannot assert beep #9938Jan Edmund Lazo2019-04-25
| | | | | | | | | | | | | | | Problem: Cannot test if a command causes a beep. Solution: Add assert_beeps(). https://github.com/vim/vim/commit/b48e96f61c87a64e38e3ac50732c92a84a4833b8
* | | Spurious quote mark in command line when typing <C-R> (#9934)Gabriel Cruz2019-04-24
| | | | | | | | | Remove <C-R> special char after reading following chars
* | | Reset stop_insert_mode in terminal_enter rather than terminal_checkglacambre2019-04-20
|/ / | | | | | | | | | | | | | | | | | | | | Problem: Using `:stopinsert` while in normal mode in a terminal buffer prevents neovim from entering insert mode. Solution: Move `stop_insert_mode = false` from terminal_check to terminal_enter to be consistent with edit.c, as suggested by bfredl in #9889. Closes https://github.com/neovim/neovim/issues/9889.
* | Merge pull request #9898 from bfredl/floatwidthBjörn Linse2019-04-14
|\ \ | | | | | | windows: float config changes
| * | windows: float config changesBjörn Linse2019-04-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Allow floating windows of width 1. #9846 - For a new floating window the size must be specified. Later on we might try to calculate a reasonable size by buffer contents - Remember the configured size of a window, just like its position. - Make get_config and set_config more consistent. Handle relative='' properly in set_config. get_config doesn't return keys that don't make sense for a non-floating window. - Don't use width=0 for non-changed width, just omit the key.
* | | inccommand: Ignore :redraw during previewJustin M. Keyes2019-04-14
| | | | | | | | | | | | closes #9777
* | | Merge pull request #9896 from justinmk/api-async-errorJustin M. Keyes2019-04-13
|\ \ \ | | | | | | | | API: emit nvim_error_event on failed async request
| * | | API: emit nvim_error_event on failed async requestJustin M. Keyes2019-04-13
| |/ / | | | | | | | | | | | | We already do this for _invalid_ async requests #9300. Now we also do it for failed invocation of valid requests.
* / / options: properly reset directories on 'autochdir' (#9894)Marco Hinz2019-04-13
|/ / | | | | Fixes https://github.com/neovim/neovim/issues/9892
* | vim-patch:8.0.0714: cmdline redraw during timer #9835Gabriel Cruz2019-04-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:8.0.0714: when a timer causes a command line redraw " goes missing Problem: When a timer causes a command line redraw the " that is displayed for CTRL-R goes missing. Solution: Remember an extra character to display. https://github.com/vim/vim/commit/a92522fbf3a49d06e08caf010f7d7b0f58d2e131 vim-patch:8.0.0720: unfinished mapping not displayed when running timer Problem: Unfinished mapping not displayed when running timer. Solution: Also use the extra_char while waiting for a mapping and digraph. (closes vim/vim#1844) https://github.com/vim/vim/commit/6a77d2667e982655f6adacee774ee7aa2581bd8a close #9835
* | float: always change to valid windows (#9878)Marco Hinz2019-04-11
| | | | | | | | | | | | | | | | Using `:wincmd j` and friends doesn't make much sense to a floating window. For convenience though, any direction will simply change to the previous window. Make sure the previous window is valid, not the current window, and not another floating window. Change to the first window (which is never a floating window) otherwise.
* | startup: -es/-Es (silent/batch mode): skip swapfile #8540Justin M. Keyes2019-04-10
| | | | | | | | To use Nvim as a scripting engine the side-effects of swapfiles and user config should be avoided by default.
* | Merge pull request #9866 from bfredl/setbufcursorBjörn Linse2019-04-08
|\ \ | | | | | | api/window: validate cursor in nvim_win_set_buf
| * | api/window: validate cursor in nvim_win_set_bufBjörn Linse2019-04-08
| | | | | | | | | | | | | | | | | | validate_cursor() is called regularly, but only for the current window. When changing the buffer for a non-current window, we need to invoke it in the context of that window.
* | | :stopinsert should leave terminal-mode #9856glacambre2019-04-08
|/ / | | | | | | | | | | | | | | | | Problem: Calling :stopinsert from RPC while in terminal-mode does not go back to normal-mode. Solution: Implement a check() handler for state_enter(), adapted from insert_check(). Fix #7807
* | event-loop: do not set CA_COMMAND_BUSY #9853Justin M. Keyes2019-04-08
| | | | | | | | | | | | | | | | CA_COMMAND_BUSY in nv_event() was carried over from Vim nv_cursorhold() (ref: e5165bae1139). It prevents :startinsert from working during a RPC call, so remove it. Helped-by: glacambre <me@r4> closes #7254
* | CI/AppVeyor: per-compiler deps cache #9852Justin M. Keyes2019-04-07
| | | | | | | | The deps cache does not work for MSVC builds because the MINGW builds ovewrite it. Cache saves 10+ minutes on the build.
* | vim-patch:8.1.1072: extending sign and foldcolumn below the text is ↵Marco Hinz2019-04-03
| | | | | | | | | | | | | | | | | | | | | | | | confusing (#9816) Problem: Extending sign and foldcolumn below the text is confusing. Solution: Let the sign and foldcolumn stop at the last text line, just like the line number column. Also stop the command line window leader. (Christian Brabandt) https://github.com/vim/vim/commit/8ee4c01b8c79a29065c1af05e5d9c0721069765f Closes https://github.com/neovim/neovim/issues/9613
* | Merge #9516 from erw7/improve-executable-on-windowsJustin M. Keyes2019-04-02
|\ \ | | | | | | Improve executable() and exepath() on windows
| * | test: "$PATHEXT=::"Justin M. Keyes2019-04-02
| | |
| * | test/win: Remove unnecessary set shellerw72019-04-01
| | |
| * | test/win: executable(), exepath() #9516erw72019-04-01
| | |
* | | jumplist: avoid extra tail entry #9805Abdelhakeem Osama2019-04-02
|/ / | | | | fixes #9775
* | keymap, terminal: more keycodes #9810Olivier G-R2019-03-31
| | | | | | | | | | | | | | | | | | - input: recognize <kEqual>, <kComma> - terminal.c: If we need to support function key, a change must be made in libvtermkey. Currently, it emulates strictly VT220 terminal, and returning numeric value in 'normal' mode is the expected behaviour. closes #9810
* | Merge #9807 from mhinz/window-local-last-cursormovedMarco Hinz2019-03-31
|\ \
| * | cursormoved: add tests for CursorMovedMarco Hinz2019-03-29
| | |
* | | autocmd: rename MenuPopupChanged to CompleteChanged #9819Qiming zhao2019-03-31
|/ /
* | keymap: add more (keypad) keycodes #9793Olivier G-R2019-03-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - K_KORIGIN instead of K_KCENTER: This name is similar to what is used by xev. Alternative could be K_KBEGIN as hinted here: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-PC-Style-Function-Keys But I find Begin and Home too similar, and it might induced some confusion. The naming looked related to some old keyboard configuration. - keymap.c: alias KPPeriod to kDel instead of kPoint. This might seems weird, but this is actually the behaviour that should be expected. libtermkey produces "KPPeriod" when num lock is off. To fix this would need to change this name in termkey. closes #9780 closes #9793
* | doc [ci skip]Justin M. Keyes2019-03-26
| | | | | | | | closes #9719
* | signs: support multiple columns #9295Dan Aloni2019-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | closes #990 closes #9295 - Support for multiple auto-adjusted sign columns. With this change, having more than one sign on a line, and with the 'auto' setting on 'signcolumn', extra columns will shown automatically to accomodate all the existing signs. For example, suppose we have this view: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } 5152 return 0; 5153 } 5154 We have GitGutter installed, so it tells us about modified lines that are not commmited. So let's change line 5152: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } ~ 5152 return 0; 5153 } 5154 Now we add a mark over line 5152 using 'ma' in normal mode: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } a ~ 5152 return 0; 5153 } 5154 Previously, Vim/Nvim would have picked only one of the signs, because there was no support for having multiple signs in a line. - Remove signs from deleted lines. Suppose we have highlights on a group of lines and we delete them: + 6 use std::ops::Deref; --+ 7 use std::borrow::Cow; --+ 8 use std::io::{Cursor}; 9 use proc_macro2::TokenStream; 10 use syn::export::ToTokens; --+ 11 use std::io::Write; >> 12 use std::ops::Deref; Without this change, these signs will momentarily accumulate in the sign column until the plugins wake up to refresh them. + --+ --+ --+ >> 6 Discussion: It may be better to extend the API a bit and allow this to happen for only certain types of signs. For example, VIM marks and vim-gitgutter removal signs may want to be presreved, unlike line additions and linter highlights. - 'signcolumn': support 'auto:NUM' and 'yes:NUM' settings - sort signs according to id, from lowest to highest. If you have git-gutter, vim-signature, and ALE, it would appear in this order: git-gutter - vim-signature - ALE. - recalculate size before screen update - If no space for all signs, prefer the higher ids (while keeping the rendering order from low to high). - Prevent duplicate signs. Duplicate signs were invisible to the user, before using our extended non-standard signcolumn settings. - multi signcols: fix bug related to wrapped lines. In wrapped lines, the wrapped parts of a line did not include the extra columns if they existed. The result was a misdrawing of the wrapped parts. Fix the issue by: 1. initializing the signcol counter to 0 when we are on a wrap boundary 2. allowing for the draw of spaces in that case.