aboutsummaryrefslogtreecommitdiff
path: root/runtime
Commit message (Collapse)AuthorAge
* terminal: Leave 'relativenumber' alone (#8360)raichoo2018-05-05
| | | ref #6796
* Merge #4486 'refactor: Remove maxmem, maxmemtot options'Justin M. Keyes2018-05-02
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After this change we never release blocks from memory (in practice it never happened because the memory limits are never reached). Let the OS take care of that. --- On today's systems the 'maxmem' and 'maxmemtot' values are huge (4+ GB) so the limits are never reached in practice, but Vim wastes a lot of time checking if the limit was reached. If the limit is reached Vim starts saving pieces of the swap file that were in memory to the disk. Said in a different way: Vim implements its own memory-paging mechanism. This is unnecessary and inefficient since the operating system already has virtual memory and will swap to the disk if programs start using too much memory. This change does... 1. Reduce the number of config options and need for documentation. 2. Make the code more efficient as we don't have to keep track of memory usage nor check if the memory limits were reached to start swapping to disk every time we need memory for buffers. 3. Simplify the code. Once memfile.c is simple enough it could be replaced by actual operating system memory mapping (mmap, MemoryViewOfFile...). This change does not prevent Vim to recover changes from swap files since the swapping code is never triggered with the huge limits set by default.
| * Remove maxmem and maxmemtot optionsFelipe Oliveira Carvalho2017-04-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > The option 'maxmem' ('mm') is used to set the maximum memory used for one > buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for > all buffers (in kilobytes). The defaults depend on the system used. These > are not hard limits, but tell Vim when to move text into a swap file. If you > don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a very large > value. The swap file will then only be used for recovery. If you don't want > a swap file at all, set 'updatecount' to 0, or use the "-n" argument when > starting Vim. On today's systems these values are huge (4GB in my machine with 8GB of RAM since it's set as half the available memory by default) so the limits are never reached in practice, but Vim wastes a lot of time checking if the limit was reached. If the limit is reached Vim starts saving pieces of the swap file that were in memory to the disk. Said in a different way: Vim implements its own memory swapping mechanism. This is unnecessary and inefficient since the operating system already virtualized the memory and will swap to the disk if programs start using too much memory. This change does... 1. Reduce the number of config options and need for documentation. 2. Make the code more efficient as we don't have to keep track of memory usage nor check if the memory limits were reached to start swapping to disk every time we need memory for buffers. 3. Simplify the code. Once `memfile.c` is simple enough it could be replaced by actual operating system memory mapping (`mmap`, `MemoryViewOfFile`...). This change does not prevent Vim to recover changes from swap files since the swapping code is never triggered with the huge limits set by default.
* | health#provider: fix sys.path for PythonDaniel Hahler2018-04-30
| | | | | | | | | | | | | | Remove "" from sys.path (typically the first entry), which could cause e.g. "logging" to be added from the current directory. This gets done already for loading the host in runtime/autoload/provider/pythonx.vim.
* | health#provider: improve error reportingDaniel Hahler2018-04-30
| | | | | | | | | | - quote command, so that e.g. markdown handling is not applied to `__init__.py` - include cwd
* | health#provider: fix logic with s:shellifyDaniel Hahler2018-04-30
| | | | | | | | | | It should be quoted if there is any character that needs escaping, but not if there is a character that does not need escaping.
* | doc: clarify `stdout_buffered` docs (#8299)Andy Russell2018-04-28
| | | | | | Fixes #8150
* | defaults: disable 'fsync'Justin M. Keyes2018-04-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ref #6725 fsync() is very slow on some systems. And since the parent commit, Nvim is smarter about flushing files at certain times (e.g. CursorHold), regardless of whether 'fsync' is enabled. So it's less risky to disable 'fsync'. Profiling showed slow (2-4s) :write and :quit caused by fsync(): :quit shada_write_file(NULL, false); :write + fsync 0 0x00007f72da567b2d in fsync () at ../sysdeps/unix/syscall-template.S:84 1 0x0000000000638970 in uv__fs_fsync (req=<optimized out>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:150 2 uv__fs_work (w=<optimized out>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:953 3 0x0000000000639a70 in uv_fs_fsync (loop=<optimized out>, req=<optimized out>, file=41, cb=0x7f72da567b2d <fsync+45>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:1094 4 0x0000000000573694 in os_fsync (fd=41) at ../src/nvim/os/fs.c:631 5 0x00000000004ec9dc in buf_write (buf=<optimized out>, fname=<optimized out>, sfname=<optimized out>, start=1, end=1997, eap=0x7fffc864c570, append=<optimized out>, forceit=<optimized out>, reset_changed=<optimized out>, filtering=<optimized out>) at ../src/nvim/fileio.c:3387 6 0x00000000004b44ff in do_write (eap=0x7fffc864c570) at ../src/nvim/ex_cmds.c:1745 ... :write + nofsync 0 0x00007f72da567b2d in fsync () at ../sysdeps/unix/syscall-template.S:84 1 0x0000000000638970 in uv__fs_fsync (req=<optimized out>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:150 2 uv__fs_work (w=<optimized out>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:953 3 0x0000000000639a70 in uv_fs_fsync (loop=<optimized out>, req=<optimized out>, file=36, cb=0x7f72da567b2d <fsync+45>) at /home/vagrant/neovim/.deps/build/src/libuv/src/unix/fs.c:1094 4 0x0000000000573694 in os_fsync (fd=36) at ../src/nvim/os/fs.c:631 5 0x0000000000528f5a in mf_sync (mfp=0x7f72d8968d00, flags=5) at ../src/nvim/memfile.c:466 6 0x000000000052d569 in ml_preserve (buf=0x7f72d890f000, message=0) at ../src/nvim/memline.c:1659 7 0x00000000004ebadf in buf_write (buf=<optimized out>, fname=<optimized out>, sfname=<optimized out>, start=1, end=1997, eap=0x7fffc864c570, append=<optimized out>, forceit=<optimized out>, reset_changed=<optimized out>, filtering=<optimized out>) at ../src/nvim/fileio.c:3071 8 0x00000000004b44ff in do_write (eap=0x7fffc864c570) at ../src/nvim/ex_cmds.c:1745 ...
* | doc: platform-specific config locations (#8297)Andy Russell2018-04-20
| | | | | | Fixes #7374.
* | job-control: mitigate process-kill raceJustin M. Keyes2018-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | children_kill_cb() is racey. One obvious problem is that process_close_handles() is *queued* by on_process_exit(), so when children_kill_cb() is invoked, the dead process might still be in the `loop->children` list. If the OS already reclaimed the dead PID, Nvim may try to SIGKILL it. Avoid that by checking `proc->status`. Vim doesn't have this problem because it doesn't attempt to kill processes that ignored SIGTERM after a timeout. closes #8269
* | events: VimSuspend, VimResume #8280geekodour2018-04-15
| | | | | | | | | | closes #3648 ref #5959
* | Merge #6272 'stdpath()'Justin M. Keyes2018-04-15
|\ \
| * | eval: Add stdpath() method (#5297)Christian Höltje2018-03-29
| | | | | | | | | | | | | | | | | | Adds the :stdpath method for fetching XDG standard directories. Fixes #5297
* | | win: getftype(symlink) returns 'link'Jan Edmund Lazo2018-04-12
| | | | | | | | | | | | Vim doesn't detect symlinks correctly so stick with Neovim's behaviour.
* | | test/util: expect_err() (#8257)Justin M. Keyes2018-04-11
| | | | | | | | | other cleanup, ref #8245
* | | server: introduce --listen, deprecate $NVIM_LISTEN_ADDRESSJustin M. Keyes2018-04-11
| | |
* | | serverstop(): return FALSE for invalid addressJustin M. Keyes2018-04-11
| | |
* | | Merge #8226 from justinmk/insert-mode-metaJustin M. Keyes2018-04-04
|\ \ \
| * | | insert-mode: interpret unmapped META as ESCJustin M. Keyes2018-04-04
| | | | | | | | | | | | | | | | | | | | | | | | closes #2454 closes #8213 ref #7972
* | | | vim-patch:8.0.0564: cannot detect Bazel BUILD files on some systemsJustin M. Keyes2018-04-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Cannot detect Bazel BUILD files on some systems. Solution: Check for BUILD after script checks. (Issue vim/vim#1340) https://github.com/vim/vim/commit/39170e2d9761345df4be67d4d3928ac1094b9adf vim-patch:8.0.1283: test 86 fails under ASAN
* | | | vim-patch:8.0.1285Justin M. Keyes2018-04-02
| | | | | | | | | | | | | | | | | | | | | | | | https://github.com/vim/vim/commit/d09a206ee94ccb653707ce9b6e536d4d58886e04 vim-patch:8.0.0564: cannot detect Bazel BUILD files on some systems
* | | | vim-patch:8.0.1282Justin M. Keyes2018-04-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: script-local variable defined in the wrong script Solution: Move variable to autoload/filetype.vim. https://github.com/vim/vim/commit/cef7322d8a902b4655ed861489c4e798672074f0
* | | | vim-patch:8.0.1281Justin M. Keyes2018-04-02
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Loading file type detection slows down startup. Solution: Move functions to an autoload script. https://github.com/vim/vim/commit/851ee6c3da5fd726d92e1e3300d7e5e2e8b907c5 --- vim-patch:8.0.0635 Problem: When 'ignorecase' is set script detection is inaccurate. Solution: Enforce matching case for text. (closes #1753)
* / / msg: do not scroll entire screen (#8088)Björn Linse2018-03-31
|/ /
* | runtime/dircolors.vim: support termguicolors (#8175)Vadim A. Misbakh-Soloviov2018-03-25
| |
* | win: defaults: 'shellcmdflag', 'shellxquote' #7343Jan Edmund Lazo2018-03-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | closes #7698 Wrapping a command in double-quotes allows cmd.exe to safely dequote the entire command as if the user entered the entire command in an interactive prompt. This reduces the need to escape nested and uneven double quotes. The `/s` flag of cmd.exe makes the behaviour more reliable: :set shellcmdflag=/s\ /c Before this patch, cmd.exe cannot use cygwin echo.exe (as opposed to cmd.exe `echo` builtin) even if it is wrapped in double quotes. Example: :: internal echo > cmd /s /c " echo foo\:bar" " foo\:bar" :: cygwin echo.exe > cmd /s /c " "echo" foo\:bar" " foo:bar
* | getchar: implement <Cmd> key to invoke command in any modeBjörn Linse2018-03-23
| |
* | build: Fix CMake target dependency problemb-r-o-c-k2018-03-18
| | | | | | | | nvim was being ran before its runtime dependencies were copied.
* | doc: nodejsJustin M. Keyes2018-03-15
| |
* | node/provider: support g:node_host_prog #8135chemzqm2018-03-15
| |
* | health/provider: python: warning with correct host prog (#8049)Daniel Hahler2018-03-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have `g:python3_host_prog` set to the system Python, where a package is also installed to provide the "neovim" module. `:checkhealth provider` however displays a warning for this: > Your virtualenv is not set up optimally. This is because /usr/bin/python is not in /home/user/.pyenv. I think this warning should not get displayed if host_prog_var exists. It goes back to the initial commit (20447ba09), and is maybe only missing the `!` there as with the previous commit. Full output: ``` - INFO: pyenv: /home/user/.pyenv/libexec/pyenv - INFO: pyenv root: /home/user/.pyenv - INFO: Using: g:python3_host_prog = "/usr/bin/python" - WARNING: Your virtualenv is not set up optimally (/usr/bin/python is not in /home/user/.pyenv). - ADVICE: - Create a virtualenv specifically for Neovim and use `g:python3_host_prog`. This will avoid the need to install Neovim's Python module in each virtualenv. - WARNING: $VIRTUAL_ENV exists but appears to be inactive. This could lead to unexpected results. - ADVICE: - If you are using Zsh, see: http://vi.stackexchange.com/a/7654 - INFO: Executable: /usr/bin/python - INFO: Python3 version: 3.6.4 - INFO: python-neovim version: 0.2.1 - OK: Latest python-neovim is installed: 0.2.1 ```
* | screen.c: make negative 'writedelay' show all redrawsBjörn Linse2018-02-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently writedelay shows the sequence of characters that are sent to the UI/TUI module. Here nvim has already applied an optimization: when attempting to put a char in a screen cell, if the same char already was there with the same attributes, UI output is disabled. When debugging redrawing it it sometimes more useful to inspect the redraw stream one step earlier, what region of the screen nvim actually is recomputing from buffer contents (win_line) and from evaluating statusline expressions. Take the popupmenu as an example. When closing the popupmenu (in the TUI), currently 'writedelay' looks like vim only is redrawing the region which the pum covered. This is not what happens internally: vim redraws the entire screen, even if only outputs the changed region. This commit allows negative values of 'writedelay', which causes a delay for all redrawn characters, even if the character already was displayed by the UI before.
* | 'fillchars': fix defaults logic; handle ambiwidth=double #7986Matthieu Coudron2018-02-23
| | | | | | | | Update tests.
* | defaults: 'fillchars'Justin M. Keyes2018-02-23
| | | | | | | | | | | | | | | | | | | | | | Most fonts should have these by now. Both are a significant visual improvement. - Vertical connecting bar `│` is used by tmux, pstree, Windows 7 cmd.exe and nvim-qt.exe. - Middle dot `·` works on Windows 7 cmd.exe, nvim-qt.exe. For reference: tmux uses these chars to draw lines: │ ├ ─
* | health.vim: minor cleanup (#8046)Daniel Hahler2018-02-22
| |
* | health/provider: check Python also with loaded_var (#8047)Daniel Hahler2018-02-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `g:loaded_python3_provider` gets set when the autoload file is sourced, but this might error out, e.g. with deoplete: [deoplete] Failed to load python3 host. You can try to see what happened by starting nvim with $NVIM_PYTHON_LOG_FILE set and opening the generated log file. Also, the host stderr is available in messages. [deoplete] function remote#define#FunctionBootstrap[1]..remote#host#Require[10]..provider#pythonx#Require[13]..provider#Poll, line 14 [deoplete] deoplete requires Python3 support("+python3"). [deoplete] deoplete failed to load. Try the :UpdateRemotePlugins command and restart Neovim. See also :checkhealth. It refers to `:checkhealth` from there explicitly, which would then (without this patch) say that Python 3 is disabled. This patch changes the reported info to include that it might have been disabled due to some error, and keeps on going.
* | checkhealth: python: do not report pythonx_errs twice (#8045)Daniel Hahler2018-02-22
| | | | | | They get reported unconditionally as errors below.
* | runtime/autoload/health/*.vim: fix vint warning (#8048)Daniel Hahler2018-02-22
| |
* | Merge pull request #8019 from jamessan/invalid-provider-stderrJames McCoy2018-02-19
|\ \ | | | | | | Improve error handling and reduce duplication of providers' #Require()
| * | Add provider#Poll() to handle starting and polling the providerJames McCoy2018-02-16
| | |
| * | provider: Safely access job.stderr in #RequireJames McCoy2018-02-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If `jobstart()` fails, then the subsequent `rpcrequest()` will throw due to an invalid channel id. This causes `job.stderr` not to exist, so we throw another exception when trying to dump the job's stderr. Error detected while processing function remote#define#AutocmdBootstrap[1]..remote#host#Require[10]..provider#pythonx#Require: line 22: E716: Key not present in Dictionary: stderr This obfuscates the actual problem.
| * | provider: ruby: Use stderr_buffered to collect stderrJames McCoy2018-02-16
| | |
* | | build: remove contents of build/runtime/doc/* surgically (#8024)Justin M. Keyes2018-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only remove the directory contents. If the directory itself is removed, then `sudo make install` creates a root-owned …/doc/ directory. That breaks the next non-root build. This was an accident of 0b1904d835a2. Note: the following does not work, because it misses renamed help files (which would no longer be in the build-tree definition) COMMAND ${CMAKE_COMMAND} -E remove ${BUILDDOCFILES} ${GENERATED_HELP_TAGS}
* | | vim-patch:8.0.1493: completion items cannot be annotated (#8003)Shougo2018-02-18
| | | | | | | | | | | | | | | | | | | | | Problem: Completion items cannot be annotated. Solution: Add a "user_data" entry to the completion item. (Ben Jackson, coses vim/vim#2608, closes vim/vim#2508) https://github.com/vim/vim/commit/9b56a57cdae31f7a2c85d440392bf63d3253a158
* | | runtime/doc: modeline is mandatory in help docsJustin M. Keyes2018-02-18
| | | | | | | | | | | | see Vim 8.0.0650 e9134421ab8f
* | | vim-patch-8.0.0649 and vim-patch-8.0.0650: autocmd open help 2 timesNimit Bhardwaj2018-02-17
|/ /
* | ui: refactor ui optionsBjörn Linse2018-02-13
| |
* | vim-patch:8.0.0906: don't recognize Couchbase filesJustin M. Keyes2018-02-11
| | | | | | | | | | | | | | Problem: Don't recognize Couchbase files. Solution: Add filetype detection. (Eugene Ciurana, closes vim/vim#1951) https://github.com/vim/vim/commit/d9bc8a801aeaffa77d4094d43bf97f0ced3db92b
* | vim-patch:8.0.0894: there is no test for runtime filetype detectionJustin M. Keyes2018-02-11
| | | | | | | | | | | | | | Problem: There is no test for runtime filetype detection. Solution: Test a list of filetypes from patterns. https://github.com/vim/vim/commit/0a0217abfabcee8b0779df2e18a186a4b41e18ce
* | vim-patch:8.0.0613: the conf filetype is used before ftdetect from packagesJustin M. Keyes2018-02-11
| | | | | | | | | | | | | | | | | | Problem: The conf filetype detection is done before ftdetect scripts from packages that are added later. Solution: Add the FALLBACK argument to :setfiletype. (closes vim/vim#1679, closes vim/vim#1693) https://github.com/vim/vim/commit/3e54569b17683318e0cb6693ab0024c2ad1e3e8f