Commit Graph

3110 Commits

Author SHA1 Message Date
oni-link
db3ae72d19 Prevent too early sending of delayed notifications.
Notifications for a channel will be sent directly if there are no
pending requests (for this channel). Otherwise notifications are queued
for later sending.

But in two cases a notification could be sent with pending requests:
* Broadcasting a notification
* A channel that has just finished its last pending request
  would call send_delayed_notifications() for all channels.

To prevent this, every channel can now only send its own delayed
notifications and broadcasting checks for pending requests.
2015-04-03 08:03:25 -03:00
John Szakmeister
ab02637592 Merge pull request #2318 from yshui/master
CMakeLists: fix build when there're multiple arguments in C_FLAGS
2015-04-03 04:57:44 -04:00
Thiago de Arruda
d487dc1a9a eval: Ensure all job callbacks are invoked by jobwait()
A call to `event_poll` is required to ensure the exit callback from the last job
is invoked.
2015-04-02 11:33:48 -03:00
Thiago de Arruda
2b7f460716 eval: Add internal_refcount field to dict_T
Due to the way vimscript garbage collection handles cyclic references, its not
possible to rely on incrementing `dv_refcount` to prevent dicts still used
internally from being collected: If a object with dv_refcount > 0 isn't
reachable by vimscript code, it will be freed when `garbage_collect()` is
called. Add the `internal_refcount` field to prevent this.
2015-04-02 11:33:48 -03:00
David Bürgin
b3f07b2468 vim-patch:7.4.336 #2299
Problem:    Setting 'history' to a big value causes out-of-memory errors.
Solution:   Limit the value to 10000. (Hirohito Higashi)

https://github.com/vim/vim/tree/v7-4-336
2015-04-02 01:22:02 -04:00
David Bürgin
db90dcb6fd vim-patch:7.4.515
Problem:    In a help buffer the global 'foldmethod' is used.  (Paul Marshall)
Solution:   Reset 'foldmethod' when starting to edit a help file.  Move the
            code to a separate function.

https://github.com/vim/vim/releases/tag/v7-4-515
2015-04-01 14:41:53 +02:00
Michael Reed
00e1b62ca8 Modeline cleanup
If users want folds to be automatically collapsed, then they should just
set foldmethod=marker in their vimrc.
2015-03-31 16:56:41 -04:00
Prajjwal Bhandari
d2c3592da1 Remove potential NULL dereference. #2316
This also removes the `#elseif defined(MSWIN)` clause. Due to the
enclosing `if` block, we will never get to this point when src starts with
a '%', making the whole #elseif block dead code.
2015-03-31 22:36:38 +02:00
Florian Walch
7080041465 Merge pull request #2296 from glts/vim-7.4.324
[RDY] vim-patch:7.4.324
2015-03-31 23:07:13 +03:00
Yuxuan Shui
80e80e467f CMakeLists: fix build when there're multiple arguments in C_FLAGS
Because the COMMAND arguments of custom_command takes a list, and
CMAKE_C_FLAGS is a string, it will be treated as a single long
argument, which will cause the build to fail.
2015-03-31 14:46:17 -04:00
Scott Prager
feca9624b8 CMakeLists: enable USE_FNAME_CASE on Mac 2015-03-31 11:20:24 -03:00
Scott Prager
0f4976687d os_scandir: fname_case -> path_fix_case
Use os_scandir().

fname_case() only gets used when `defined(USE_FNAME_CASE)` (on operating
systems with case-insensitive file systems), but may be useful in other
contexts, so move it to path.c. (See the TODO.)

Remove the unused parameter, len.
2015-03-31 11:20:23 -03:00
Scott Prager
24da0d49d0 os_scandir: mch/unix_expandpath() -> path_expand()
Merge unix_expandpath with dos_expandpath from upstream vim and use
os_scandir() over POSIX readdir().
2015-03-31 11:20:23 -03:00
Scott Prager
3f74067565 Un-mch mch_has_(exp_)wildcard().
Merge mch_has_wildcard() and mch_has_exp_wildcar() with their upstream
equivalents for Windows and replace the "mch_" suffix with "path_".
2015-03-31 11:20:23 -03:00
Scott Prager
99869989c8 os_scandir(), scandir_next(), and os_closedir() 2015-03-31 11:20:23 -03:00
David Bürgin
21f446ebb4 vim-patch:7.4.324
Problem:    In Ex mode, cyrillic characters are not handled. (Stas Malavin)
Solution:   Support multi-byte characters in Ex mode. (Yukihiro Nakadaira)

https://github.com/vim/vim/releases/tag/v7-4-324
2015-03-30 12:03:33 +02:00
Thiago de Arruda
88d8ca73f9 eval: Improve validation of ids passed to job functions
Use the `is_user_job` to ensure that the job was started by `jobstart` or
`termopen`.
2015-03-29 20:35:45 -03:00
Thiago de Arruda
b8b9e5ebad eval: Implement jobclose() vimscript function 2015-03-29 20:35:44 -03:00
Thiago de Arruda
028f6d7d3f eval: Implement jobwait() vimscript function 2015-03-29 20:35:44 -03:00
Thiago de Arruda
6e7757ad51 eval: Refactor vimscript job control API
- Remove JobActivity autocmd and v:job_data variable
- Simplify `jobstart` to receive:
  - An argument vector
  - An optional dictionary which may contain any of the current `jobstart`
    options plus `on_stdout`, `on_stderr` and `on_exit` callbacks.
- Refactor and add more job tests
- Update documentation
2015-03-29 20:35:44 -03:00
Thiago de Arruda
4b98ea1e80 eval: Refactor call_func and func_unref
- Make it possible to call or unref ufunc_T pointers directly.
- Keep refcount of named functions, and stop them from being deleted if the
  refcount is greater than 1.
2015-03-29 20:35:44 -03:00
David Bürgin
2c7e8c38e0 vim-patch:7.4.502 #2282
Problem:    Language mapping also applies to mapped characters.
Solution:   Add the 'langnoremap' option, when on 'langmap' does not apply to
            mapped characters. (Christian Brabandt)

https://github.com/vim/vim/releases/tag/v7-4-502
2015-03-29 09:55:59 -04:00
David Bürgin
d06b4933ed vim-patch:7.4.529 #2270
Problem:    No test for what 7.4.517 fixes.
Solution:   Adjust the tests for breakindent. (Christian Brabandt)

https://github.com/vim/vim/releases/tag/v7-4-529
2015-03-27 12:55:52 -04:00
David Bürgin
fa8ccda518 Vim patch: Add missing patch version 422 in version.c #2268
Completes #1332.
2015-03-27 12:13:07 -04:00
Harm te Hennepe
27ead64da0 Create new mode() value for terminal-mode ('t') #2287 2015-03-27 05:25:28 -04:00
Thiago de Arruda
41b05a0a3c tui: Fix reading when stdin is not a tty
Instead of selecting stderr on startup if stdin is not a tty, first try reading
from it and only switch to stderr when reading fails. With this behavior we
support commands like:

```
echo q | nvim -es
```

and

```
ls *.md | xargs nvim
```

Fixed small bugs in rstream.c to make this happen.
2015-03-26 22:06:57 -03:00
Thiago de Arruda
710002c820 job: Close the process in a queued event handler
Since all reads are queued by the event loop, we must also queue the exit event,
or else the process_close function can close the job streams before received
data is processed.
2015-03-25 18:57:35 -03:00
oni-link
727f524167 job: Fix memory errors
- Free memory allocated for job data when the job table is full.
2015-03-25 18:57:35 -03:00
Thiago de Arruda
cdedd89d22 terminal: New module that implements a terminal emulator
This commit integrates libvterm with Neovim and implements a terminal emulator
with nvim buffers as the display mechanism. Terminal buffers can be created
using any of the following methods:

- Opening a file with name following the "term://[${cwd}//[${pid}:]]${cmd}"
  URI pattern where:
  - cwd is the working directory of the process
  - pid is the process id. This is just for use in session files where a pid
    would have been assigned to the saved buffer title.
  - cmd is the command to run
- Invoking the `:terminal` ex command
- Invoking the `termopen` function which returns a job id for automating the
  terminal window.

Some extra changes were also implemented to adapt with terminal buffers. Here's
an overview:

- The `main` function now sets a BufReadCmd autocmd to intercept the term:// URI
  and spawn the terminal buffer instead of reading the file.
- terminal buffers behave as if the following local buffer options were set:
  - `nomodifiable`
  - `swapfile`
  - `undolevels=-1`
  - `bufhidden=hide`
- All commands that delete buffers(`:bun`, `:bd` and `:bw`) behave the same for
  terminal buffers, but only work when bang is passed(eg: `:bwipeout!`)
- A new "terminal" mode was added. A consequence is that a new set of mapping
  commands were implemented with the "t" prefix(tmap, tunmap, tnoremap...)
- The `edit` function(which enters insert mode) will actually enter terminal
  mode if the current buffer is a terminal
- The `put` operator was adapted to send data to the terminal instead of
  modifying the buffer directly.
- A window being resized will also trigger a terminal resize if the window
  displays the terminal.
2015-03-25 18:57:35 -03:00
Thiago de Arruda
6f471fa4fc event: Ensure the loop is stopped when a event is pushed. 2015-03-25 18:57:35 -03:00
Thiago de Arruda
b16c5bf5e6 buffer: Move b_p_ma(modifiable) checks into the MODIFIABLE macro 2015-03-25 18:57:35 -03:00
Thiago de Arruda
8b6b06c2e0 buffer: Add WITH_BUFFER macro to simplify global buffer modification
Most internal functions to modify buffers operate on the current buffer and
require temporary switchs. This macro is a temporary workaround until a cleaner
refactoring of the internal API is performed.
2015-03-25 18:57:35 -03:00
Thiago de Arruda
2b90aed831 vim.h: remove #ifndef EINTR
This ifndef causes problems when including fileio headers.
2015-03-25 18:57:35 -03:00
Thiago de Arruda
071aca9c8a api: Move switch_to_win_for_buf/restore_win_for_buf to api helpers 2015-03-25 18:57:35 -03:00
Thiago de Arruda
05d60c4812 ui: Schedule screen refreshs to run in the event loop
This is required to avoid event loop recursion due to indirect calls to
os_breakcheck by screenalloc
2015-03-25 18:57:35 -03:00
Thiago de Arruda
51c69b89a7 map: Add Map(int, int) 2015-03-25 18:57:34 -03:00
Thiago de Arruda
05c030c725 map: Add map_clear method 2015-03-25 18:57:34 -03:00
Thiago de Arruda
5cf3dec9a9 syntax: Fix possible invalid read in hl_combine_attr 2015-03-25 18:57:34 -03:00
David Bürgin
d2d99454e6 tests: Migrate legacy test 94 #2218 2015-03-25 16:33:24 -04:00
Michael Reed
d85fabc24f doc: Remove refs to 'compatible' and friends
Also remove some MS-DOS references on lines already being touched.

Based on this commit:
e4db01ca87
2015-03-24 19:33:42 -04:00
Justin M. Keyes
adfc8cf50a doc: Misc. cleanup
Add missing parentheses and whatnot, move dangling comment, etc. Some
specific items worth mentioning:

Fixed some references to non-existent tags, found via `make html`

msgpack_rpc/channel.c:
  ELOG already prefixes each line with "error @ ..."
2015-03-24 19:29:29 -04:00
Michael Reed
bb7aa04e61 Remove --nofork / -f remnants 2015-03-24 19:29:29 -04:00
bobtwinkles
03d47965c0 refactor: split some more functions from misc1.c
This commit pulls the some environment-variable handling functions out of
misc1.c and in to os/env.c. Previously submited as #1231, this is the start of
a patch series that does that work based on a more up-to-date master branch.

Major tasks accomplished:
  - move functions and fix includes
  - fix clint/clang analysis warnings
  - correct documentation comments
2015-03-24 16:13:00 -04:00
oni-link
56ef37eb59 job: Fix memory error
Fix pointer passed to the handles in the uv_close() calls when process_spawn()
fails.
2015-03-24 10:56:53 -03:00
Thiago de Arruda
a6fb511c7f job: Fix process cleanup using SIGCHLD/waitpid
Add a SIGCHLD handler for cleaning up pty processes passing the WNOHANG flag. It
may also be used to cleanup processes spawned with uv_spawn.
2015-03-24 10:56:42 -03:00
Justin M. Keyes
424c04f2c9 Merge pull request #2214 from Pyrohh/version-cleanup
Version output cleanup
2015-03-23 08:20:22 -04:00
Michael Reed
8c19152dcb version.c: Clean up --version / :version output
Despite the +/- prefix, the majority of these features have been made
non-optional at compile time, so their presence here is misleading.

Also mention `:h vim-differences` to make it clear our that many
features are non-optional.
2015-03-22 16:55:50 -04:00
Björn Linse
1257b303ac Merge pull request #2212 from bfredl/concealfix
fix missing  conceal cchar when it is the first syntax group shown
2015-03-22 21:17:35 +01:00
Michael Reed
eea804ab59 Remove *_BUILTIN_TCAPS & 'ttybuiltin'
'ttybuiltin' was removed and *_BUILTIN_TCAPS was made into dead code in
PR #1820.
2015-03-22 15:41:29 -04:00
Eliseo Martínez
44b563409e Passing-by: Add function attributes. 2015-03-22 11:32:30 +01:00