Commit Graph

172 Commits

Author SHA1 Message Date
ZyX
e18a578308 *: Move some dictionary functions to typval.h and use char*
Also fixes buffer reusage in setmatches() and complete().
2017-03-29 10:07:42 +03:00
ZyX
fb146e80aa eval: Split eval.c into smaller files 2017-03-29 10:05:06 +03:00
lonerover
85ba14af6a vim-patch:7.4.2330
Problem:    Coverity complains about not checking curwin to be NULL.
Solution:   Use firstwin to avoid the warning.

030cddc7ec
2017-03-27 12:19:14 +08:00
Justin M. Keyes
53ccd07fa1 lint 2017-03-22 18:42:58 +01:00
Justin M. Keyes
10f6624f65 vim-patch:7.4.2328
Problem:    Crash when BufWinLeave autocmd goes to another tab page.
            (Hirohito Higashi)
Solution:   Make close_buffer() go back to the right window.
2017-03-22 18:42:56 +01:00
Justin M. Keyes
165ba3e636 vim-patch:7.4.2324
Problem:    Crash when editing a new buffer and BufUnload autocommand wipes
            out the new buffer. (Norio Takagi)
Solution:   Don't allow wiping out this buffer. (partly by Hirohito Higashi)
            Move old style test13 into test_autocmd. Avoid ml_get error when
            editing a file.

e0ab94e712
2017-03-22 18:42:16 +01:00
raichoo
db128974fc vim-patch:7.4.2348
Problem:    Crash on exit when EXITFREE is defined. (Dominique Pelle)
Solution:   Don't access curwin when exiting.

9a27c7fde6
2017-03-19 21:14:11 +01:00
raichoo
99f2dc1341 vim-patch:8.0.0229
Problem:    When freeing a buffer the local value of the 'formatprg' option is
            not cleared.
Solution:   Add missing change.

24a2d416ec
2017-03-19 21:14:11 +01:00
raichoo
86b1e7f583 vim-patch:7.4.2362
Problem:    Illegal memory access with ":1@". (Dominique Pelle)
Solution:   Correct cursor column after setting the line number.  Also avoid
            calling end_visual_mode() when not in Visual mode.

4930a76a03
2017-03-19 21:14:11 +01:00
raichoo
ae828982ce vim-patch:7.4.2347
Problem:    Crash when closing a buffer while Visual mode is active.
            (Dominique Pelle)
Solution:   Adjust the position before computing the number of lines.
            When closing the current buffer stop Visual mode.

c4a908e836
2017-03-19 21:14:11 +01:00
Jack Bracewell
09583a791c Replace hashtab with handle buffer functions 2017-03-16 18:26:46 +00:00
Justin M. Keyes
8bbdef1fd8 buffer.c: enable -Wconversion #3744 2017-03-03 00:15:42 +01:00
Adam-K-P
165d525abd buffer.c: enable -Wconversion #3744
Closes #3744
2017-03-02 22:46:11 +01:00
ZyX
5f7d8f889c buffer: Provide an initializer for di_key 2017-02-24 20:14:01 +03:00
ZyX
dfb28c524c buffer: Remove b:changedtick from b: before freeing b:
Avoids loosing b:changedtick value at `:bdelete`.
2017-02-24 05:10:31 +03:00
ZyX
cd8f07cb75 eval: Do not allocate b:changedtick dictionary item 2017-02-24 02:47:43 +03:00
ZyX
9668d26a43 eval: Make sure islocked('b:.changedtick') does not error out
Port of vim-patch:8.0.0345
2017-02-23 19:48:41 +03:00
ZyX
3277eff31a buffer: Forbid unletting b:changedtick 2017-02-23 19:46:45 +03:00
ZyX
4f10d42f82 buffer: Bind b:changedtick to b:['changedtick'], remove special cases 2017-02-23 19:46:44 +03:00
Justin M. Keyes
770d60d904 coverity/13728: Null pointer dereference (#6100)
coverity claims that `valid_tabpage(NULL)` can return true...
2017-02-12 21:09:52 +01:00
James McCoy
11efbc80e3 Merge pull request #5913 from mhinz/buf-lookup-patches
vim-patch:7.4.2017,7.4.2018,7.4.2021,7.4.2022,7.4.2023,7.4.2024
2017-02-06 10:20:49 -05:00
Marco Hinz
b0cf071d43 Fix clint issues 2017-02-04 17:55:46 -05:00
Marco Hinz
c05e7f0fdd vim-patch:7.4.2024
Problem:  More buf_valid() calls can be optimized.
Solution: Use bufref_valid() instead.

NOTE: Some changes related to channels and the Python and Netbeans interfaces
were obviously left out.

7c0a2f367f
2017-02-04 17:55:46 -05:00
Marco Hinz
e3b92c77da vim-patch:7.4.2023
Problem:  buflist_findname_stat() may find a dummy buffer.
Solution: Set the BF_DUMMY flag after loading a dummy buffer. Start
          finding buffers from the end of the list.

NOTE: In Neovim, buflist_findname_stat() was replaced by
buflist_findname_file_id() in c41535d69.

ea3f2e7be4
2017-02-04 17:55:45 -05:00
Marco Hinz
1836f3cb9b vim-patch:7.4.2021
Problem:  Still too many buf_valid() calls.
Solution: Make au_new_curbuf a bufref.  Use bufref_valid() in more places.

19ff9bf454
2017-02-04 17:55:45 -05:00
Marco Hinz
e177226d51 vim-patch:7.4.2018
Problem:  buf_valid() can be slow when there are many buffers.
Solution: Add bufref_valid(), only go through the buffer list
          when a buffer was freed.

b25f9a97e9
2017-02-04 17:55:29 -05:00
Marco Hinz
951dd1571c vim-patch:7.4.2017
Problem:  When there are many errors adding them to the quickfix list takes
          a long time.
Solution: Add BLN_NOOPT.  Don't call buf_valid() in buf_copy_options().
          Remember the last file name used.  When going through the buffer
          list start from the end of the list.  Only call buf_valid() when
          autocommands were executed.

8240433f48
2017-02-04 17:15:11 -05:00
Justin M. Keyes
ea449b16b9 refactor: fix warnings 2017-02-04 11:07:50 +01:00
Justin M. Keyes
5db30dcc19 Merge #5865 from lonerover/vim-7.4.2036
vim-patch:7.4.2036
2017-01-19 10:56:19 +01:00
rover
d204cbc0ce buffer.c: use a map instead of hashtab 2017-01-19 12:08:08 +08:00
Justin M. Keyes
3ba5e43d2e Merge #5918 'vim-patch: 7.4.2006, 7.4.2075, 7.4.2077, 7.4.2117, 7.4.2300, 7.4.2313, 7.4.2314'. 2017-01-16 00:59:50 +01:00
Shougo
3fd7be6d3e vim-patch:7.4.2099 (#5951)
Problem:    When a keymap is active only "(lang)" is displayed. (Ilya
            Dogolazky)
Solution:   Show the keymap name. (Dmitri Vereshchagin, closes vim/vim#933)

73ac0c4281
2017-01-15 22:24:12 +01:00
Justin M. Keyes
b5e8e2f20d lint 2017-01-13 01:17:11 +01:00
Justin M. Keyes
42c922b32c open_buffer(): Do BufEnter for directories.
Abuse NOTDONE to give some nuance to the return value of readfile(), so
that open_buffer() can distinguish between "failed, lol" and "failed
because the path is a directory".

Before this change, Vim *already* creates a new buffer when a directory
is edited. So there is no reason it should not raise BufEnter, that was
an implementation detail of ye olde readfile().

Most of the changes in this commit merely preserve the old semantics.
The "implicit" change that we actually are interested in, is this line
in `open_buffer()`, where `retval` being non-FAIL allows EVENT_BUFENTER
to be applied:

    apply_autocmds_retval(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf, &retval);

References https://github.com/vim/vim/issues/1353
2017-01-12 23:10:38 +01:00
rover
888cdce3aa vim-patch:7.4.2006
Problem:    Crash when using tabnext in BufUnload autocmd. (Norio Takagi)
Solution:   First check that the current buffer is the right one. (Hirohito
            Higashi)

30445cb6e9
2017-01-08 21:00:48 +08:00
lonerover
1984e784fb fix lint error 2017-01-04 08:53:38 +08:00
lonerover
a5f36e24bb vim-patch:7.4.2036
Problem:    Looking up a buffer by number is slow if there are many.
Solution:   Use a hashtab.

480778b805
2017-01-03 15:26:32 +08:00
lonerover
1928b79e0c vim-patch:7.4.1837 (#5834)
Problem:    The BufUnload event is triggered twice, when :bunload is used with
             set to  or .
Solution:   Do not trigger the event when ml_mfp is NULL. (Hirohito Higashi)

c67e892134
2016-12-27 17:39:21 -05:00
Justin M. Keyes
b025474258 vim-patch:8.0.0110 (#5700)
Closes #5616

Problem:    Drop command doesn't use existing window.
Solution:   Check the window width properly. (Hirohito Higashi)

5a030a540f
2016-12-03 22:38:13 +01:00
Justin M. Keyes
2e1217da46 'inccommand': buftype=nofile, restore cursor/view
- Use a standard scratch buffer instead of a new 'buftype', functions
  like curbufIsChanged() already have special handling for scratch bufs.
- Cleanup some stuff from the previous merge.
- Add support for :smagic, :snomagic. Closes #5578
2016-11-10 15:48:00 +01:00
Justin M. Keyes
e4e7b2d239 lint 2016-11-08 21:21:00 +01:00
Justin M. Keyes
c04ffe866d 'inccommand': rework
- Eliminate/isolate static/global variables
- Remove special-case parameter from buflist_new()
- Remove special-case ECMD_RESERVED_BUFNR
- To determine when u_undo_and_forget() should be done, check
  b_changedtick instead of a heuristic.
- use mb_string2cells() instead of strlen() to measure the :sub patterns
- call ml_close() before buf_clear_file(). Avoids leaks caught by ASan.

Original patch by:
  Robin Elrharbi-Fleury (Robinhola)
  Audrey Rayé (Adrey06)
  Philémon Hullot (DesbyP)
  Aymeric Collange (aym7)
  Clément Guyomard (Clement0)
2016-11-08 21:20:08 +01:00
KillTheMule
e8c0f90962 Linted 2016-10-30 10:52:05 +01:00
KillTheMule
13841a56b4 Incsubsitution feature
Originally implemented by

* Clement0
* DesbyP
* aym7
* Adrey06
* Robinhola

in #4811. Major reworkings and bug
fixes by

* bfredl

Most tests suggested by ZyX-l, suggestions for improvements by oni-link.
2016-10-30 10:21:18 +01:00
Justin M. Keyes
90bf31c742 Merge #5500
Closes #5246
2016-10-26 14:01:49 +02:00
Florian Larysch
2a6c5bb0c4 modeline: Handle version number overflow. #5450
Closes #5449

A file containing the string "vim" followed by a very large number in a modeline
location will trigger an overflow in getdigits() which is called by
chk_modeline() when trying to parse the version number.

Add getdigits_safe(), which does not assert overflows, but reports them to the
caller.
2016-10-26 13:05:25 +02:00
Grzegorz Milka
d357a42389 Fix lint errors. 2016-10-23 01:17:39 +02:00
Grzegorz Milka
9755a2ffd5 vim-patch:7.4.2312
Problem:    Crash when autocommand moves to another tab. (Dominique Pelle)
Solution:   When navigating to another window halfway the :edit command go
            back to the right window.

5a49789a9b
2016-10-23 00:41:45 +02:00
Grzegorz Milka
9ca90fdb9f vim-patch:7.4.2212
Problem:    Mark " is not set when closing a window in another tab. (Guraga)
Solution:   Check all tabs for the window to be valid. (based on patch by
            Hirohito Higashi, closes vim/vim#974)

e59215c7dc
2016-10-22 23:43:14 +02:00
Justin M. Keyes
6b7faf22f4 main.c: "BufReadCmd term://": Skip existing terminal.
Check `exists('b:term_title')` to avoid the BufReadCmd for already-initialized
:terminal buffers.

Move the test for `:argadd`.
Add a test for `:edit<CR>`.
Tweak comments and code style.
2016-10-12 21:37:08 +02:00