Commit Graph

50 Commits

Author SHA1 Message Date
Michael Reed
d86ebc7afb Macro cleanup: PROTO
Regarding dict_lookup() in eval.c: both definitions are the same, the
only difference being the spacing between the indirection operator and
the indentation level.
2015-01-14 15:07:16 -05:00
Justin M. Keyes
d7e18b5c95 Revert "[WIP] "abstract_ui" fixes and improvements" 2015-01-12 10:14:52 -05:00
Thiago de Arruda
748920d505 ui: Test for abstract_ui whenever a minimal t_colors value is required
t_colors should not be checked when abstract_ui is active, because nvim UI is
not limited to a terminal.
2015-01-10 21:41:32 -03:00
Felipe Oliveira Carvalho
77135447e0 Reduce indentation level by early returning or continuing loop
Replace code like this

```c
func() {
    if (cond) {
	...
	...
	...
    }
    return ret;
}
```

```c
for (...) {
    if (cond) {
	...
	...
	...
    }
}
```

with

```c
func() {
    if (!cond) {
	return ret;
    }
    ...
    ...
    ...
}
```

```c
for (...) {
    if (!cond) {
	continue;
    }
    ...
    ...
    ...
}
```
2014-12-13 23:36:11 -03:00
Eliseo Martínez
a71c5e9eb9 Fix warnings: edit.c: ins_compl_next_buf(): Np dereference: MI.
Problem    : Dereference of null pointer @ 3247.
Diagnostic : Multithreading issue.
Rationale  : Problem only occurs if global `ctrl_x_mode` is modified
             while calling function is executing.
Solution   : Use local copy instead of global.
2014-12-06 17:40:12 +01:00
Justin M. Keyes
49b65b0fcd Merge pull request #1516 from fmoralesc/new-patches
vim-patch:7.4.425,435,467,472,473,478
2014-11-27 20:58:39 -05:00
Thiago de Arruda
6f7fe5d1b9 Remove code defined under USE_IM_CONTROL #ifdefs
This is not being used and should not be part of the core anyway.
2014-11-27 20:26:10 -03:00
Felipe Morales
cfa8b4a186 vim-patch:7.4.435: Disable linebreak temporarily when formatting lines.
vim-patch:7.4.435

Problem:    Line formatting behaves differently when 'linebreak' is set.
            (mvxxc)
Solution:   Disable 'linebreak' temporarily. (Christian Brabandt)

https://code.google.com/p/vim/source/detail?r=v7-4-435
2014-11-27 19:40:51 -03:00
Thiago de Arruda
a3534138a8 ui: Extract mouse.c/mouse.h 2014-11-27 14:48:30 -03:00
Thiago de Arruda
1865b8c1c1 ui: Remove ui_delay, ui_breakcheck and ui_set_shellsize
These functions only used to call another os_* function, so remove them and
replace all occurences in the project.
2014-11-27 14:27:18 -03:00
Thiago de Arruda
f09a33bbc1 event: No longer process K_EVENT automatically
Two new functions, `event_enable_deferred()`/`event_disable_deferred()` have to
be called by code that is capable of handling asynchronicity. User-dialog states
like "press ENTER to continue" or the swap file confirmation no longer will
generate K_EVENT.
2014-11-21 15:41:02 -03:00
Wayne Rowcliffe
63e2558870 Convert some values from buffer_defs.h to bools 2014-11-12 00:38:34 -06:00
Eliseo Martínez
74817b546e Fix warnings: edit.c: ins_bs(): Garbage result: MI.
Problem    : Result of operation is garbage or undefined @ 7460.
Diagnostic : Multithreading issue.
Rationale  : Problem occurs if any of globals `enc_utf8`, `p_deco is
             modified while function is executing.
Resolution : Use local copy of globals.
2014-11-06 09:51:59 +01:00
Eliseo Martínez
d0a0efaf32 Fix warnings: edit.c: replace_do_bs(): Garbage value: MI.
Problem    : Assigned value is garbage or undefined @ 6359.
Diagnostic : Multithreading issue.
Rationale  : Problem only occurs if global `State` changes while
             function is executing.
Resolution : Use local copy of global in function.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
cefc26ab63 Fix warnings: edit.c: mb_replace_pop_ins(): Unitilialized arg: FP.
Problem    : Uninitialized argument value @ 6296.
Diagnostic : False positive.
Rationale  : Error occurs if n <= 1. That's not possible because
             n >= 1 due to `MB_BYTE2LEN` postcondition and n != 1
             because we are in the else branch.
Resolution : Assert n > 1.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
da4c9447a4 Fix warnings: edit.c: ins_compl_get_exp(): Np dereference (2): FP.
Problems   : Dereference of null pointer @ 3615.
             Dereference of null pointer @ 3764.
Diagnostic : False positives.
Rationale  : `ins_buf` is local static, so maintains value between calls.
             This function will be called first when `compl_started` is
             false, and in that case it initializes `ins_buf`. After
             that, it can be called multiple times with `compl_started`
             true, where `ins_buf` will be updated but not to null.
             So, when arriving to both points, `ins_buf` should never be
             null.
Resolution : Assert `ins_buf` at both points.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
0bda79a847 Fix warnings: edit.c: ins_compl_next_buf(): Np dereference: FP.
Problem    : Dereference of null pointer @ 3234.
Diagnostic : False positive.
Rationale  : `wp` is local static, so maintains value between calls.
             First time function is called for a given flag will have
             `buf == curbuf`, implying `wp` initialization.
Resolution : Assert variable always having been initialized.
2014-11-06 09:51:58 +01:00
Naveen Kumar Molleti
0a2d9fa8c8 vim-patch:7.4.440 #1244
Problem:  Omni complete popup drawn incorrectly.
Solution: Call validate_cursor() instead of check_cursor(). (Hirohito
          Higashi)

https://code.google.com/p/vim/source/detail?r=v7-4-440
2014-10-16 04:18:18 +00:00
André Twupack
ea492696cf vim-patch:7.4.407
Problem:    Inserting text for Visual block mode, with cursor movement,
            repeats the wrong text. (Aleksandar Ivanov)
Solution:   Reset the update_Insstart_orig flag. (Christian Brabandt)

https://code.google.com/p/vim/source/detail?r=v7-4-407
2014-09-19 21:12:47 +02:00
Shougo Matsushita
3b9a44fbea vim-patch: 7.4.381
Problem:    Get u_undo error when backspacing in Insert mode deletes more than
            one line break. (Ayberk Ozgur)
Solution:   Also decrement Insstart.lnum.

https://code.google.com/p/vim/source/detail?r=v7-4-381
2014-09-18 20:08:42 +09:00
Naveen Kumar Molleti
4f3d49d921 vim-patch:7.4.387
Problem:    "4gro" replaces one character then executes "ooo". (Urtica
Dioica)
Solution:   Write the ESC in the second stuff buffer.

https://code.google.com/p/vim/source/detail?r=v7-4-387
2014-09-15 15:35:49 +05:30
André Twupack
ae33dc0d5a vim-patch:7.4.376
Problem:    Popup menu flickers too much.
Solution:   Remove the forced redraw. (Hirohito Higashi)

https://code.google.com/p/vim/source/detail?r=v7-4-376

Includes: vim-patch:7.4.357 vim-patch:7.4.367 vim-patch:7.4.376
2014-09-12 21:02:50 +02:00
Felipe Morales
47391b18e2 Port vim's patch 7.4.338 ('breakindent') 2014-08-20 05:19:49 -04:00
Justin M. Keyes
e1c330a486 Merge pull request #1024 from war1025/dev/for_all_buffers
Add FOR_ALL_BUFFERS helper
2014-08-19 23:49:25 -04:00
Wayne Rowcliffe
888a31ba45 FOR_ALL_BUFFERS use locally declared buffer pointer 2014-08-17 11:13:42 -05:00
Damián Silvani
fc93536a90 vim-patch:7.4.314
Problem:    Completion messages can get in the way of a plugin.
Solution:   Add 'c' flag to 'shortmess' option. (Shougo Matsu)

https://code.google.com/p/vim/source/detail?r=4d7af1962d6ce61df65fdc5c86544a61951f9517
2014-08-14 23:20:08 -03:00
Wayne Rowcliffe
8cf45786b1 Add FOR_ALL_BUFFERS helper 2014-08-02 20:19:33 -05:00
Pavel Platto
77cb6551a6 Remove EBCDIC: Remove IF_EB macros 2014-08-02 09:16:59 +03:00
Thiago de Arruda
2e4ea29d2c events: Refactor how event deferral is handled
- Remove all *_set_defer methods and the 'defer' flag from rstream/jobs
- Added {signal,rstream,job}_event_source functions. Each return a pointer that
  represent the event source for the object in question(For signals, a static
  pointer is returned)
- Added a 'source' field to the Event struct, which is set to the appropriate
  value by the code that created the event.
- Added a 'sources' parameter to `event_poll`. It should point to a
  NULL-terminated array of event sources that will be used to decide which
  events should be processed immediately
- Added a 'source_override' parameter to `rstream_new`. This was required to use
  jobs as event sources of RStream instances(When "focusing" on a job, for
  example).
- Extracted `process_from` static function from `event_process`.
- Remove 'defer' parameter from `event_process`, which now operates only on
  deferred events.
- Refactor `channel_send_call` to use the new lock mechanism

What changed in a single sentence: Code that calls `event_poll` have to specify
which event sources should NOT be deferred. This change was necessary for a
number of reasons:

- To fix a bug where due to race conditions, a client request
  could end in the deferred queue in the middle of a `channel_send_call`
  invocation, resulting in a deadlock since the client process would never
  receive a response, and channel_send_call would never return because
  the client would still be waiting for the response.
- To handle "event locking" correctly in recursive `channel_send_call`
  invocations when the frames are waiting for responses from different
  clients. Not much of an issue now since there's only a python client, but
  could break things later.
- To simplify the process of implementing synchronous functions that depend on
  asynchronous events.
2014-07-17 11:37:42 -03:00
Brandon Coleman
0fff487690 move errno.h include out of vim.h 2014-07-09 00:18:20 +02:00
Brandon Coleman
e69cfa6c15 move assert.h include out of vim.h 2014-07-09 00:18:19 +02:00
Brandon Coleman
bf219e1442 move <inttypes.h> include out of vim.h 2014-07-09 00:18:19 +02:00
Brandon Coleman
82b71a3056 move ascii.h include out of vim.h 2014-07-09 00:18:18 +02:00
Brandon Coleman
a4f441e547 remove stdbool.h include from vim.h and globals.h 2014-07-09 00:18:17 +02:00
Klemen Košir
a568e8b644 Replaced most TRUE/FALSE macros in arabic, mbyte and spell. #645 2014-07-08 17:34:08 +00:00
Klemen Košir
ef34a0ab13 Replace int with bool in some files. #654 2014-07-08 17:25:48 +00:00
Thiago de Arruda
0621a6eaa5 events: Refactor how events are queued for processing
To make it possible reuse `event_poll` recursively and in other blocking
function calls, this changes how deferred/immediate events are processed:

- There are two queues in event.c, one for immediate events and another for
  deferred events. The queue used when pushing/processing events is determined
  with boolean arguments passed to `event_push`/`event_process` respectively.
- Events pushed to the immediate queue are processed inside `event_poll` but
  after the `uv_run` call. This is required because libuv event loop does not
  support recursion, and processing events may result in other `event_poll`
  calls.
- Events pushed to the deferred queue are processed later by calling
  `event_process(true)`. This is required to "trick" vim into treating all
  asynchronous events as special keypresses, which is the least obtrusive
  way of introducing asynchronicity into the editor.
- RStream instances will now forward the `defer` flag to the `event_push` call.
2014-06-18 11:36:07 -03:00
Felipe Oliveira Carvalho
3cb3c20b74 Fix some "out of memory" comments and few cosmetics 2014-06-16 01:40:28 -03:00
Felipe Oliveira Carvalho
8234f2839f No OOM in vim_strsave_escaped[_ext]() 2014-06-16 01:36:31 -03:00
Brandon Coleman
7f21665673 move/remove W_* macros
move W_ENDCOL to screen.c
remove the rest of the W_* macros
2014-06-12 01:20:36 -05:00
ZyX
70929f7e16 Add automatic generation of headers
- The 'stripdecls.py' script replaces declarations in all headers by includes to
  generated headers.
  `ag '#\s*if(?!ndef NEOVIM_).*((?!#\s*endif).*\n)*#ifdef INCLUDE_GENERATED'`
  was used for this.
- Add and integrate gendeclarations.lua into the build system to generate the
  required includes.
- Add -Wno-unused-function
- Made a bunch of old-style definitions ANSI

This adds a requirement: all type and structure definitions must be present
before INCLUDE_GENERATED_DECLARATIONS-protected include.

Warning: mch_expandpath (path.h.generated.h) was moved manually. So far it is
the only exception.
2014-06-02 11:04:17 -03:00
Hinidu
8fb4c551f4 Remove FEAT_COMMENTS
Special comments formatting, see 'comments' option.
2014-05-28 13:08:54 -04:00
Pavel Platto
baaa428785 Remove ml_ prefix from cursor.h functions
s/ml_get_curline/get_cursor_line_ptr
s/ml_get_cursor/get_cursor_pos_ptr
2014-05-28 10:42:06 -04:00
Hinidu
e62722922b Extract cursor.h from misc{1,2}.h and memline.h 2014-05-28 10:42:06 -04:00
oni-link
753401ab4c vim-patch:7.4.267
Problem:    The '[ mark is in the wrong position after "gq". (Ingo Karkat)
Solution:   Add the setmark argument to do_join(). (Christian Brabandt)

https://code.google.com/p/vim/source/detail?r=75f222d67cea335efbe0274de6340dba174c1e7e
2014-05-27 16:51:10 -04:00
oni-link
49306cfa02 Simplify edit.c functions replace_{push,pop}.
* Replace xmalloc (+memmove) with xrealloc
* Code style adjustments.
* Remove obsolete TODO comment
2014-05-24 04:55:10 -04:00
Felipe Oliveira Carvalho
a80d7e86c1 Remove NULL/non-NULL tests after calls to vim_str(n)save() 2014-05-19 14:50:23 -03:00
Eliseo Martínez
762a8ad0f3 Introduce nvim namespace: Fix unmasked strings.h issue.
Problem:  Now that nvim/strings.h is correctly namespaced, an issue
          that had been masked until now arises:

          When compiling, we get a lot of errors because of everywhere
          the functions in nvim/strings.h are used, there's no include
          to import them.

          But, how could this compile and work previously, then? It
          turns out that:
          - In every such case, we are also including vim.h, which in
            turn includes os_unix_defs.h.
          - os_unix_defs.h includes <string.h> and also <strings.h> in
            some systems (e.g. OSX).
          - Build had been modified previously to (even when importing
            system headers), prefer equally-named local ones. That was
            in fact done as a previous attempt to solve the same issue
            we are trying to solve another way now.

          So, we were including our "strings.h" as a side-effect of
          including <strings.h> through "vim.h" --> "os_unix_defs.h".

Solution: Correctly include "nvim/strings.h" in every file needing it.
2014-05-15 20:46:02 +02:00
Eliseo Martínez
409cc138f2 Introduce nvim namespace: Fix project-local includes.
Prepend 'nvim/' in all project-local (non-system) includes.
2014-05-15 20:46:01 +02:00
Eliseo Martínez
da51dc9cf2 Introduce nvim namespace: Move files.
Move files from src/ to src/nvim/.
- src/nvim/ becomes the new root dir for nvim executable sources.
- src/libnvim/ is planned to become root dir of the neovim library.
2014-05-15 20:46:01 +02:00