Commit Graph

15726 Commits

Author SHA1 Message Date
Amaan Qureshi
ea2658e1f7 vim-patch:9.0.1174: smali files are not recognized (#21734)
Problem: Smali files are not recognized.
Solution: Add a pattern for Smali files. (Amaan Qureshi, closes vim/vim#11801)
2023-01-10 22:29:25 +01:00
dundargoc
438b4361cc build: use modern cmake (#21589)
Replace old-school cmake with the so-called "Modern CMake", meaning
preferring using targets and properties over directory settings and
variables. This allows greater flexibility, robustness and clarity over
how the code works.

The following deprecated commands will be replaced with their modern
alternatives that operates on a specific target, rather than all targets
in the current directory:

- add_compile_options -> target_compile_options
- include_directories -> target_include_directories
- link_libraries -> target_link_libraries
- add_definitions -> target_compile_definitions

There are mainly four main targets that we currently use: nvim, libnvim,
nvim-test (used by unittests) and ${texe} (used by
check-single-includes). The goal is to explicitly define the
dependencies of each target fully, rather than having everything be
dependent on everything else.
2023-01-10 18:49:57 +01:00
zeertzjq
9b1112cf48 fix(statuscolumn): fix crashes and clang/PVS warnings (#21725) 2023-01-10 21:18:12 +08:00
bfredl
38140a63fb refactor(pty): remove old logic for inheriting termios from host terminal 2023-01-10 14:04:58 +01: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
zeertzjq
1df2db0bc4 test(statuscolumn): add more tests for wrapped lines (#21718)
test(statuscolumn): add more tests more wrapped lines

Also initialize a "relnum" variable to suppress a Coverity warning.
The uninitialized value wasn't actually used by build_statuscol_str().
2023-01-10 11:30:45 +08:00
dundargoc
ef67503320 refactor: replace char_u with char 19 (#21241)
* refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-01-10 10:28:01 +08:00
luukvbaal
f62da7381e docs: add 'statuscolumn' docstrings (#21717) 2023-01-10 09:00:21 +08:00
zeertzjq
dc7edce650 vim-patch:partial:9.0.1166: code is indented more than necessary (#21716)
Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes vim/vim#11792)

1cfb14aa97

Partial port as some highlight.c changes depend on previous patches.
Cherry-pick fname_match() change from patch 8.2.4959.
Omit internal_func_check_arg_types(): only used for Vim9 script.

N/A patches for version.c:

vim-patch:9.0.1167: EditorConfig files do not have their own filetype

Problem:    EditorConfig files do not have their own filetype.
Solution:   Add the "editorconfig" filetype. (Gregory Anders, closes vim/vim#11779)

d41262ed06

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-01-10 08:46:42 +08: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
50f03773f4 refactor: replace char_u with char 18 (#21237)
refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-01-09 22:37:34 +08:00
bfredl
9cd7edc6ad Merge pull request #21704 from bfredl/nofree
fix(rpc): don't free args on error in rpc_send_event
2023-01-09 14:52:02 +01: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
bfredl
bb7033a033 fix(rpc): don't free args on error in rpc_send_event
fixup #21631
fixes #21690
2023-01-09 13:59:35 +01:00
bfredl
fc2cd28547 Merge pull request #21702 from glepnir/fix_2
fix(api): convert title_pos string in nvim_win_get_config
2023-01-09 12:33:08 +01:00
bfredl
df60ac9767 Merge pull request #21675 from bfredl/nonstdio
fix(embed): handle stdio in server properly
2023-01-09 12:28:10 +01:00
bfredl
1d16bba4d8 fix(embed): handle stdio in server properly
Rename stdin/stdout in the server, so that RPC data won't get corrupted.
This also restores the use of stderr to write directly to the terminal.
2023-01-09 11:17:11 +01:00
dundargoc
08c2c74806 refactor: replace char_u with char
Work on https://github.com/neovim/neovim/issues/459
2023-01-09 17:03:40 +08:00
Raphael
3a8be82175 fix: use enum type 2023-01-09 17:00:32 +08:00
Raphael
ad34ab38db fix: format 2023-01-09 14:22:10 +08:00
Raphael
1f18c27404 fix(ui): convert title_pos string in nvim_win_get_config 2023-01-09 13:57:46 +08:00
zeertzjq
a174f4e53f vim-patch:9.0.1158: code is indented more than necessary (#21697)
Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes vim/vim#11787)

7f8b2559a3

Omit reset_last_used_map(): only used in Vim9 script.

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-01-09 07:16:36 +08:00
dundargoc
50687e60ae build: remove workaround for ancient clang versions
We don't need to support this as it's only required when using
AddressSanitizer, meaning it only affects developers.
2023-01-08 11:00:16 +01:00
Justin M. Keyes
e17430c1cd feat(lua): store "nvim -l" scriptname in _G.arg[0] 2023-01-07 03:03:38 +01:00
zeertzjq
1c6be5e5e6 fix(coverity/433537): don't call kv_concat_len() when read_size is 0 (#21664)
fix(coverity): don't call kv_concat_len() when read_size is 0
2023-01-07 07:50:48 +08:00
bfredl
b303ab9a7d fix(tui): do not invoke loop recursively for pad()
fixes #21610
2023-01-06 11:01:02 +01:00
Justin M. Keyes
628b717022 refactor: extract code to open stdin for reading 2023-01-05 17:44:12 +01:00
Justin M. Keyes
7089f33144 refactor(lua): move _G.arg init to nlua_init() 2023-01-05 17:10:02 +01:00
Justin M. Keyes
e8ab218716 feat(message): avoid spam on failed os_msg
also de-dupe the code
2023-01-05 17:10:02 +01:00
Justin M. Keyes
f43de742e8 feat(lua): execute stdin ("-") as Lua 2023-01-05 17:10:02 +01:00
Justin M. Keyes
adef308a59 feat(lua): exit 1 on Lua "-l" script error 2023-01-05 17:10:02 +01:00
Justin M. Keyes
45549f031e feat(lua): send "--" literally to Lua "-l" script
Problem:
When "-l" is followed by "--", we stop sending args to the Lua script
and treat "--" in the usual way. This was for flexibility but didn't
have a strong use-case, and has these problems:
- prevents Lua "-l" scripts from handling "--" in their own way.
- complicates the startup logic (must call nlua_init before command_line_scan)

Solution:
Don't treat "--" specially if it follows "-l".
2023-01-05 17:10:02 +01:00
Justin M. Keyes
7c94bcd2d7 feat(lua)!: execute Lua with "nvim -l"
Problem:
Nvim has Lua but the "nvim" CLI can't easily be used to execute Lua
scripts, especially scripts that take arguments or produce output.

Solution:
- support "nvim -l [args...]" for running scripts. closes #15749
- exit without +q
- remove lua2dox_filter
- remove Doxyfile. This wasn't used anyway, because the doxygen config
  is inlined in gen_vimdoc.py (`Doxyfile` variable).
- use "nvim -l" in docs-gen CI job

Examples:

    $ nvim -l scripts/lua2dox.lua --help
    Lua2DoX (0.2 20130128)
    ...

    $ echo "print(vim.inspect(_G.arg))" | nvim -l - --arg1 --arg2
    $ echo 'print(vim.inspect(vim.api.nvim_buf_get_text(1,0,0,-1,-1,{})))' | nvim +"put ='text'" -l -

TODO?
  -e executes Lua code
  -l loads a module
  -i enters REPL _after running the other arguments_.
2023-01-05 17:10:02 +01:00
bfredl
19591e9918 fix(ui): fix fragile UI_CALL macro invocation (#21656)
Fixup #21605

Depending on the phase of the moon, UI_CALL expanding UI_LOG expanding the default value of entered_free_all_mem might or might not work.
2023-01-05 13:31:47 +01:00
bfredl
47ba78f89a refactor(ui): devirtualize the ui layer
- The defined interface for the UI is only the RPC protocol. The original
  UI interface as an array of function pointers fill no function.
- On the server, all the UI:s are all RPC channels.
  - ui.c is only used on the server.
  - The compositor is a preprocessing step for single-grid UI:s
- on the client, ui_client and tui talk directly to each other
  - we still do module separation, as ui_client.c could form the basis
    of a libnvim client module later.

Items for later PR:s
- vim.ui_attach is still an unhappy child, reconsider based on plugin experience.
- the flags in ui_events.in.h are still a mess. Can be simplified now.
- UX for remote attachment needs more work.
- startup for client can be simplified further (think of the millisecs we can save)
2023-01-05 09:48:26 +01:00
zeertzjq
ae64772a88 fix(diff): avoid restoring invalid 'foldcolumn' value (#21650)
Use "0" for 'foldcolumn' when w_p_fdc_save is empty, like how
"manual" is used for 'foldmethod' when w_p_fdm_save is empty.
2023-01-05 07:12:02 +08:00
zeertzjq
89232b8b48 fix(tui): make a copy of data->params before unibi_format() (#21643)
Problem:    When unibi_format() modifies params and data->buf overflows,
            unibi_format() is called again, causing the params to be
            modified twice. This can happen for escapes sequences that
            use the %i terminfo format specifier (e.g. cursor_address),
            which makes unibi_format() increase the param by 1.
Solution:   Make a copy of data->params before calling unibi_format().
2023-01-05 00:25:25 +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
zeertzjq
5529b07316 fix(clipboard): show provider warning when not during batch changes #21451
It is strange that Ex commands that explicitly interact with the
clipboard show provider warning, but Normal mode commands do not.
2023-01-03 15:17:54 -08:00
Gregory Anders
d56c603caf Merge pull request #21633 from gpanders/editorconfig
Builtin EditorConfig support
2023-01-03 11:38:20 -07:00
bfredl
eb702273c4 Merge pull request #21631 from bfredl/request_memory
refactor(api): do not allocate temporaries for internal events
2023-01-03 18:57:55 +01:00
Gregory Anders
d6510eec4f feat(editorconfig): add editorconfig syntax file
This is intentionally _not_ copied from Vim because our syntax file
makes use of Lua to dynamically generate a list of valid EditorConfig
properties. This requires the builtin editorconfig module, which Vim
does not have.
2023-01-03 10:28:55 -07:00
bfredl
b2295ac4ec refactor(api): do not allocate temporaries for internal events 2023-01-03 17:31:54 +01:00
Justin M. Keyes
5e9508c702 Merge #21580 cmdline issues with cmdheight=0 2023-01-03 11:02:32 -05:00
zeertzjq
a3c92f6b6c vim-patch:9.0.1137: some conditions are always false (#21628)
Problem:    Some conditions are always false.
Solution:   Remove the useless conditions. (closes vim/vim#11776)

ea720aea85
2023-01-03 19:22:32 +08:00
Lewis Russell
5841a97500 feat!: remove hardcopy
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2023-01-03 10:07:43 +00:00
zeertzjq
c3d8665851 fix(exit): the TUI should not ui_flush() itself (#21625) 2023-01-03 17:21:42 +08:00
zeertzjq
4dd793a256 vim-patch:9.0.1132: code is indented more than needed (#21626)
Problem:    Code is indented more than needed.
Solution:   Use an early return to reduce indentation. (Yegappan Lakshmanan,
            closes vim/vim#11769)

dc4daa3a39

Omit expand_autoload_callback(): only applies to Vim9 script.

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-01-03 14:55:00 +08:00
Justin M. Keyes
a283a99165 refactor: eliminate os_unix.c #21621 2023-01-02 14:56:17 -08:00