Commit Graph

687 Commits

Author SHA1 Message Date
zeertzjq
189e21ae50 vim-patch:9.0.1554: code for handling 'switchbuf' is repeated (#23632)
Problem:    Code for handling 'switchbuf' is repeated.
Solution:   Add a function to handle 'switchbuf'. (Yegappan Lakshmanan,
            closes vim/vim#12397)

e42c27d9e8

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-05-15 08:13:33 +08:00
zeertzjq
cd9ca700e5 vim-patch:9.0.0598: using negative array index with negative width window
Problem:    Using negative array index with negative width window.
Solution:   Make sure the window width does not become negative.

8279af514c

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-13 22:45:59 +08:00
zeertzjq
f76e1ac92e vim-patch:9.0.1546: some commands for opening a file don't use 'switchbuf' (#23600)
Problem:    Some commands for opening a file don't use 'switchbuf'.
Solution:   Use 'switchbuf' for more commands. (Yegappan Lakshmanan,
            closes vim/vim#12383, closes vim/vim#12381)

54be5fb382

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-05-13 08:40:06 +08:00
Luuk van Baal
8e74569d7e vim-patch:9.0.1513: text scrolls unnecessarily when splitting
Problem:    Text scrolls unnecessarily when splitting and 'splitkeep' is not
            "cursor".
Solution:   Avoid resetting w_skipcol. (Luuk van Baal, closes vim/vim#12334)

b926bf47d6
2023-05-07 00:38:45 +02:00
zeertzjq
22205f36a6 fix(api): don't change title when setting buffer in a window (#23492) 2023-05-06 07:46:07 +08:00
Lewis Russell
ff34c91194 vim-patch:9.0.1330: handling new value of an option has a long "else if" chain
Problem:    Handling new value of an option has a long "else if" chain.
Solution:   Use a function pointer. (Yegappan Lakshmanan, closes vim/vim#12015)

af93691b53
2023-04-28 23:04:09 +08:00
zeertzjq
1fc468aed2 vim-patch:9.0.1491: wrong scrolling with ls=0 and :botright split (#23333)
Problem:    Wrong scrolling with ls=0 and :botright split.
Solution:   Add statusline before calling frame_new_height(). (closes vim/vim#12299)

fbf2071ac9
2023-04-27 09:07:30 +08:00
dundargoc
3b0df1780e refactor: uncrustify
Notable changes: replace all infinite loops to `while(true)` and remove
`int` from `unsigned int`.
2023-04-26 23:23:44 +02:00
zeertzjq
2e8410b7be refactor: remove unnecessary height change in frame_add_hsep() (#23305)
This height change is wrong, and the height will be overwritten later by
another height change.
2023-04-25 18:52:58 +08:00
Lewis Russell
df4013cfc7 vim-patch:9.0.1293: the set_num_option() is too long
Problem:    The set_num_option() is too long.
Solution:   Move code to separate functions. (Yegappan Lakshmanan,
            closes vim/vim#11954)

0caaf1e465
2023-04-22 09:11:24 +01:00
zeertzjq
b28683d252 vim-patch:9.0.0947: invalid memory access in substitute with function (#23126)
Problem:    Invalid memory access in substitute with function that goes to
            another file.
Solution:   Check for text locked in CTRL-W gf.

cc762a48d4

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 17:44:14 +08:00
ii14
9408f2dcf7 refactor: remove redundant const char * casts 2023-04-07 19:40:57 +02:00
ii14
371823d407 refactor: make error message definitions const
message.c functions now take const char * as a format. Error message
definitions can be made const.
2023-04-05 21:13:53 +02:00
zeertzjq
10baf89712 vim-patch:9.0.1439: start Insert mode when accessing a hidden prompt buffer (#22867)
Problem:    Start Insert mode when accessing a hidden prompt buffer.
Solution:   Call leaving_window() in aucmd_restbuf(). (Thorben Tröbst,
            closes vim/vim#12148, closes vim/vim#12147)

cde8de0345

Cherry-pick test_prompt_buffer.vim changes from patch 9.0.0631.

Co-authored-by: orbital <orbital@holgerines.de>
2023-04-03 08:36:14 +08:00
Patrick McFarland
3b28fb4cd9 fix(float): remove -1 in height clamp
Problem: Clamp for height in floating windows enforced no more than
editor height - 1, disallowing full editor height floating windows when
using cmdheight=0

Solution: Clamp to full height, removing the -1. Tested to give the
intended results with cmdheight=0, 1, or more than 1. This also
inadvertently fixes a rendering error with cmdheight >1 where the
bottom border would be overlapped by the cmdline.
2023-03-19 08:15:04 -04:00
bfredl
d6ecead364 refactor(screen): screen.c delenda est
drawscreen.c vs screen.c makes absolutely no sense.
The screen exists only to draw upon it, therefore helper functions
are distributed randomly between screen.c and the file that
does the redrawing. In addition screen.c does a lot of drawing on the
screen.

It made more sense for vim/vim as our grid.c is their screen.c

Not sure if we want to dump all the code for option chars into
optionstr.c, so keep these in a optionchar.c for now.
2023-03-14 13:37:43 +01:00
Matthias Deiml
fd2ece278b feat(ui): add scroll_delta to win_viewport event #19270
scroll_delta contains how much the top line of a window moved since the
last time win_viewport was emitted. It is expected to be used to
implement smooth scrolling. For this purpose it only counts "virtual" or
"displayed" so folds should count as one line. Because of this it
adds extra information that cannot be computed from the topline
parameter.

Fixes #19227
2023-03-12 15:58:46 -07:00
zeertzjq
1b632e99f2 vim-patch:9.0.1362: ml_get error when going to another tab (#22443)
Problem:    ml_get error when going to another tab. (Daniel J. Perry)
Solution:   Do not call update_topline() if "curwin" is invalid.
            (closes vim/vim#11907)

99ad3a8bb9

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-02-28 08:26:00 +08:00
Lewis Russell
8ecd129f1e fix: address -Wmaybe-uninitialized warnings (#22436) 2023-02-27 22:16:12 +00:00
zeertzjq
47bc297d81 vim-patch:8.2.4318: various comment and indent mistakes, returning wrong zero (#22385)
Problem:    Various comment and indent mistakes, returning wrong zero.
Solution:   Fix the mistakes.  Return NULL instead of FAIL.

54969f4ef5

N/A patches for version.c:

vim-patch:8.2.3781: the option window script is outdated

Problem:    The option window script is outdated.
Solution:   Add several changes.

a416861c64

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-02-24 12:35:06 +08:00
zeertzjq
0bb3a373d3 vim-patch:9.0.1312: Cursor position wrong when splitting window in insert mode
Problem:    Cursor position wrong when splitting window in insert mode.
Solution:   Pass the actual mode to win_fix_cursor(). (Luuk van Baal,
            closes vim/vim#11999,

bc3dc298b3

Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
2023-02-16 08:09:41 +08:00
dundargoc
c8c930ea78 refactor: reduce scope of locals as per the style guide (#22206) 2023-02-11 10:24:46 +01:00
zeertzjq
41aa5ce3eb vim-patch:9.0.1246: code is indented more than necessary (#22006)
Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes vim/vim#11887)

142ed77898

Omit function_using_block_scopes(): only affects Vim9 script.

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-01-26 21:05:34 +08:00
zeertzjq
c6ab8dfc15 revert: "refactor(win_close): remove "force", don't pass on "free_buf" (#21921)" (#21979)
This reverts commit 0371d0f7af.

> 'bufhidden' option exists. I don't think we should assume autoclosing
windows are fine just because 'hidden' is set.
2023-01-24 18:31:07 +08:00
zeertzjq
7126d9b8c7 refactor(window): remove aucmd_win check from one_window() (#21972)
In most places where one_window() or last_window() is called, aucmd_win
has already been checked, so there is no need to check for it again.

The only place where this isn't checked is when using `:wincmd T`.
Before this PR using `:wincmd T` in an aucmd_win will give a warning
when there is only one non-floating window, but E813 error if there are
multiple. Now it consistently gives E813 error.
2023-01-24 11:29:37 +08:00
zeertzjq
0371d0f7af refactor(win_close): remove "force", don't pass on "free_buf" (#21921)
Problem:
The "force" flag of win_close() complicates the code and adds edge cases
where it is not clear what the correct behavior should be.
The "free_buf" flag of win_close() is passed on to float windows when
closing the last window of a tabpage, which doesn't make much sense.

Solution:
Remove the "force" flag and always close float windows as if :close! is
used when closing the last window of a tabpage, and set the "free_buf"
flag for a float window based on whether its buffer can be freed.
As 'hidden' is on by default, this change shouldn't affect many people.
2023-01-23 18:55:11 +08:00
dundargoc
4c531714ff refactor: replace char_u with char 25 (#21838)
refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-01-19 22:25:56 +08:00
dundargoc
8a4285d563 refactor: replace char_u with char 24 (#21823)
refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-01-18 21:17:11 +08:00
dundargoc
0344bfad0f refactor: replace char_u with char 22 (#21786)
Work on https://github.com/neovim/neovim/issues/459
2023-01-17 21:17:40 +08:00
dundargoc
3269902a13 refactor: fix IWYU mapping file and use IWYU (#21802)
Also add the EXITFREE definition to main_lib rather than the nvim target, as the header generation needs the EXITFREE flag to work properly.
2023-01-15 14:16:33 +01:00
luukvbaal
1097d239c3 fix(ui): command line issues with external messages (#21709)
* fix: don't truncate external messages
* fix: avoid resizing command line with external messages
2023-01-13 11:47:55 +08:00
Sebastian Lyng Johansen
870ca1de52 feat(float): open float relative to mouse #21531
Problem:
No easy way to position a LSP hover window relative to mouse.

Solution:
Introduce another option to the `relative` key in `nvim_open_win()`.

With this PR it should be possible to override the handler and do something
similar to this https://github.com/neovim/neovim/pull/19481#issuecomment-1193248674
to have hover information displayed from the mouse.

Test case:

    ```lua
    local util = require('vim.lsp.util')

    local function make_position_param(window, offset_encoding)
        window = window or 0
        local buf = vim.api.nvim_win_get_buf(window)
        local row, col

        local mouse = vim.fn.getmousepos()
        row = mouse.line
        col = mouse.column

        offset_encoding = offset_encoding or util._get_offset_encoding(buf)
        row = row - 1
        local line = vim.api.nvim_buf_get_lines(buf, row, row + 1, true)[1]
        if not line then
            return { line = 0, character = 0 }
        end
        if #line < col then
            return { line = 0, character = 0 }
        end

        col = util._str_utfindex_enc(line, col, offset_encoding)

        return { line = row, character = col }
    end

    local make_params = function(window, offset_encoding)
        window = window or 0
        local buf = vim.api.nvim_win_get_buf(window)
        offset_encoding = offset_encoding or util._get_offset_encoding(buf)
        return {
            textDocument = util.make_text_document_params(buf),
            position = make_position_param(window, offset_encoding),
        }
    end

    local hover_timer = nil
    vim.o.mousemoveevent = true

    vim.keymap.set({ '', 'i' }, '<MouseMove>', function()
        if hover_timer then
            hover_timer:close()
        end
        hover_timer = vim.defer_fn(function()
            hover_timer = nil
            local params = make_params()
            vim.lsp.buf_request(
                0,
                'textDocument/hover',
                params,
                vim.lsp.with(vim.lsp.handlers.hover, {
                    silent = true,
                    focusable = false,
                    relative = 'mouse',
                })
            )
        end, 500)
        return '<MouseMove>'
    end, { expr = true })
    ```
2023-01-10 02:22:41 -08:00
Raphael
87cfe50944 fix(ui): set stc to empty in floatwin with minimal style (#21720)
fix(ui): set stc to emtpy in floatwin with minimal style
2023-01-10 10:36:48 +01:00
luukvbaal
364b131f42 feat(ui): add 'statuscolumn' option
Problem:    Unable to customize the column next to a window ('gutter').
Solution:   Add 'statuscolumn' option that follows the 'statusline' syntax,
	    allowing to customize the status column. Also supporting the %@
	    click execute function label. Adds new items @C and @s which
	    will print the fold and sign columns. Line numbers and signs
	    can be clicked, highlighted, aligned, transformed, margined etc.
2023-01-09 17:12:06 +00:00
dundargoc
1492094003 refactor: replace char_u with char 17 - remove STRLCPY (#21235)
refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-01-09 21:13:06 +08:00
dundargoc
936e191fef docs: fix typos (#21427)
Co-authored-by: Gustavo Sampaio <gbritosampaio@gmail.com>
Co-authored-by: C.D. MacEachern <craig.daniel.maceachern@gmail.com>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
Co-authored-by: Tomas Nemec <nemi@skaut.cz>
2023-01-04 07:38:48 +08:00
Justin M. Keyes
5e9508c702 Merge #21580 cmdline issues with cmdheight=0 2023-01-03 11:02:32 -05:00
Luuk van Baal
b102bf22c0 fix(ui): allow resize commands to set 'cmdheight' to 0
Resolve https://github.com/neovim/neovim/issues/21558
2022-12-31 00:30:53 +01:00
zeertzjq
83472b3808 vim-patch:8.2.{3773,3774}
vim-patch:8.2.3773: wrong window size when a modeline changes 'columns'

Problem:    Wrong window size when a modeline changes 'columns' and there is
            more than one tabpage. (Michael Soyka)
Solution:   Adjust the frames of all tabpages. (closes vim/vim#9315)

8a7374f8c4

vim-patch:8.2.3774: test for command line height fails

Problem:    Test for command line height fails.
Solution:   Use another way to handle window size change.

b711814cb6

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2022-12-30 14:45:28 +08:00
zeertzjq
cd6ec1db06 fix(win_close): remove float grid after closing buffer (#21551)
It is not safe to remove the float grid when autocommands can still be
triggered, as autocommands may use the float grid.
2022-12-27 17:29:05 +08:00
zeertzjq
090048bec9 vim-patch:9.0.1051: after a failed CTRL-W ] next command splits window (#21400)
Problem:    After a failed CTRL-W ] next command splits window.
Solution:   Reset postponed_split. (Rob Pilling, closes vim/vim#11698)

cb94c91070

Co-authored-by: Rob Pilling <robpilling@gmail.com>
2022-12-13 22:43:54 +08:00
zeertzjq
7faf8a45e8 fix(events): skip WinScrolled for newly-created float windows (#21333)
Unlike split windows, creating a new floating window does not cause
other windows to resize, so it doesn't make much sense to trigger
WinScrolled or WinResized when creating a new floating window.
2022-12-10 06:50:03 +08:00
zeertzjq
f92aab5f70 vim-patch:9.0.1025: WinScrolled is not triggered when filler lines change (#21325)
Problem:    WinScrolled is not triggered when filler lines change.
Solution:   Add "topfill" to the values that WinScrolled triggers on.
            (closes vim/vim#11668)

3fc84dc2c7

Cherry-pick StopVimInTerminal() from patch 9.0.1010.
2022-12-07 18:34:39 +08:00
zeertzjq
ed23cd3e50 fix(float): fix crash with bufpos and non-existent window (#21319) 2022-12-07 11:36:34 +08:00
zeertzjq
e120a049f0 fix(float): fix ml_get error with bufpos 2022-12-06 07:40:16 +08:00
zeertzjq
1145a9b248 feat(aucmd_win): allow crazy things with hidden buffers (#21250)
Problem:    Crash when doing crazy things with hidden buffers.
Solution:   Dynamically allocate the list of autocommand windows.
2022-12-02 20:39:24 +08:00
zeertzjq
47d3d0102f vim-patch:8.2.1748: closing split window in other tab may cause a crash
Problem:    Closing split window in other tab may cause a crash.
Solution:   Set tp_curwin properly. (Rob Pilling, closes vim/vim#7018)

f3c51bbff1

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2022-12-02 10:51:50 +08:00
zeertzjq
982c0053f4 fix(float): make closing float in another tab return to correct window 2022-12-02 10:51:50 +08:00
zeertzjq
bd2d0edcbf fix: clang warnings (#21247) 2022-12-01 09:05:25 +08:00
zeertzjq
95f5cf9691 vim-patch:9.0.0967: leaking memory from autocmd windows
Problem:    Leaking memory from autocmd windows.
Solution:   Free window when auc_win is not NULL.

84497cd06f

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2022-11-29 20:36:31 +08:00