aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* | fix(runtime): don't set gx mapping if already mapped (#24262)zeertzjq2023-07-05
| | | | | | This matches netrw's use of maparg().
* | fix(plines): don't return very large height on very long line (#24260)zeertzjq2023-07-05
| |
* | Merge #23401 vim.ui.open: "gx" without netrwJustin M. Keyes2023-07-05
|\ \ | |/ |/|
| * fix(vim.ui.open): return (don't show) error messageJustin M. Keyes2023-07-05
| | | | | | | | | | | | | | | | | | | | Problem: Showing an error via vim.notify() makes it awkward for callers such as lsp/handlers.lua to avoid showing redundant errors. Solution: Return the message instead of showing it. Let the caller decide whether and when to show the message.
| * fix(gx): visual selection, expand env varsJustin M. Keyes2023-07-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- Rejected experiment: move vim.ui.open() to vim.env.open() Problem: `vim.ui` is where user-interface "providers" live, which can be overridden. It would also be useful to have a "providers" namespace for platform-specific features such as "open", clipboard, python, and the other providers listed in `:help providers`. We could overload `vim.ui` to serve that purpose as the single "providers" namespace, but `vim.ui.nodejs()` for example seems awkward. Solution: `vim.env` currently has too narrow of a purpose. Overload it to also be a namespace for `vim.env.open`. diff --git a/runtime/lua/vim/_meta.lua b/runtime/lua/vim/_meta.lua index 913f1fe20348..17d05ff37595 100644 --- a/runtime/lua/vim/_meta.lua +++ b/runtime/lua/vim/_meta.lua @@ -37,8 +37,28 @@ local options_info = setmetatable({}, { end, }) -vim.env = setmetatable({}, { - __index = function(_, k) +vim.env = setmetatable({ + open = setmetatable({}, { + __call = function(_, uri) + print('xxxxx'..uri) + return true + end, + __tostring = function() + local v = vim.fn.getenv('open') + if v == vim.NIL then + return nil + end + return v + end, + }) + }, + { + __index = function(t, k, ...) + if k == 'open' then + error() + -- vim.print({...}) + -- return rawget(t, k) + end local v = vim.fn.getenv(k) if v == vim.NIL then return nil
| * feat(vim.ui): vim.ui.open, "gx" without netrwmarshmallow2023-07-04
| | | | | | | | | | | | Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com> Co-authored-by: Justin M. Keyes <justinkz@gmail.com> Co-authored-by: ii14 <59243201+ii14@users.noreply.github.com>
* | fix(edit): fix K_EVENT interfering with 'digraph' (#24258)zeertzjq2023-07-05
|/
* fix(api): allow negative column arguments for nvim_buf_set_text (#23501)notomo2023-07-04
|
* fix(lsp): revert change to buf.clear_references() #24238Raphael2023-07-04
| | | | | | | Problem: in #24046 the signature of buf.clear_references() changed, which indirectly breaks callers that were passing "ignored" args. Solution: because util.buf_clear_references() already defaulted to "current buffer", the change to buf.clear_references() isn't actually needed, so just revert it.
* feat(l10n): update Turkish translations #24246Emir SARI2023-07-04
|
* perf(ui-ext): approximate scroll_delta when scrolling too much (#24234)zeertzjq2023-07-04
|
* fix(ui-ext): "scroll_delta" handle topfill and skipcol (#24249)zeertzjq2023-07-04
|
* fix(api, lua): make blank lines in a message work properly (#24244)zeertzjq2023-07-04
|
* fix(plines): handle inline virtual text after last char (#24241)zeertzjq2023-07-03
| | | Also remove dead code in win_lbr_chartabsize().
* docs(gen_help_html): accept "~/" in file/dir params #24240Justin M. Keyes2023-07-03
|
* Merge pull request #23167 from dundargoc/refactor/longbfredl2023-07-03
|\ | | | | refactor: remove long
| * refactor: remove longdundargoc2023-07-03
|/ | | | | long is 32-bits even on 64-bit windows which makes the type suboptimal for a codebase meant to be cross-platform.
* Merge pull request #23891 from rickyz/grid_line_flagsbfredl2023-07-03
|\ | | | | fix(ui): propagate line flags on grid_line events
| * fix(ui): propagate line wrapping state on grid_line eventsRicky Zhou2023-06-05
| | | | | | | | | | | | This fixes the TUI's line-wrapping behavior, which was broken with the migration to the msgpack-based UI protocol (see https://github.com/neovim/neovim/issues/7369#issuecomment-1571812273).
* | perf(treesitter): cache fold query (#24222)Jaehwang Jung2023-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | perf(treesitter): cache vim.treesitter.query.get Problem: vim.treesitter.query.get searches and reads query files every time it's called, if user hasn't overridden the query. So this can incur slowdown when called frequently. This can happen when using treesitter foldexpr. For example, when using `:h :range!` in markdown file to format fenced codeblock, on_changedtree in _fold.lua is triggered many times despite that the tree doesn't have syntactic changes (might be a bug in LanguageTree). (Incidentally, the resulting fold is incorrect due to a bug in `:h range!`.) on_changedtree calls vim.treesitter.query.get for each tree changes. In addition, it may request folds queries for injected languages without fold queries, such as markdown_inline. Solution: * Cache the result of vim.treesitter.query.get. * If query file was not found, fail quickly at later calls.
* | build(deps): bump luv to 1.45.0-0 (#24228)Christian Clason2023-07-02
| | | | | | https://github.com/luvit/luv/releases/tag/1.45.0-0
* | build(nix): fix markdown parser #24225figsoda2023-07-01
| |
* | test: check for ASAN properly (#24224)zeertzjq2023-07-02
| | | | | | Follow-up to #24195.
* | vim-patch:9.0.1672: tabline highlight wrong after truncated double width ↵zeertzjq2023-07-02
| | | | | | | | | | | | | | | | label (#24223) Problem: Tabline highlight wrong after truncated double width label. Solution: Fill up half a double width character later. (closes vim/vim#12614) https://github.com/vim/vim/commit/d392a74c5a8af8271a33a20d37ae1a8ea422cb4b
* | fix(startup)!: "nvim -l" message does not end with newline #24215zeertzjq2023-07-01
| | | | | | Close #24180
* | Merge pull request #24219 from clason/ts-hoonChristian Clason2023-07-01
|\ \ | | | | | | feat(treesitter): add python, bash parser and queries
| * | feat(treesitter): add bash parser and queriesChristian Clason2023-07-01
| | |
| * | feat(treesitter): add python parser and queriesChristian Clason2023-07-01
| | |
* | | fix(api): nvim_parse_cmd error message in pcall() #23297Alexandre Teoi2023-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: nvim_parse_cmd() in pcall() may show an error message (side-effect): :lua pcall(vim.api.nvim_parse_cmd, vim.fn.getcmdline(), {}) E16: Invalid range Solution: Avoid emsg() in the nvim_parse_cmd() codepath. - refactor(api): add error message output parameter to get_address() - fix: null check emsg() parameter - refactor: remove emsg_off workaround from do_incsearch_highlighting() - refactor: remove emsg_off workaround from cmdpreview_may_show() - refactor: remove remaining calls to emsg() from parse_cmd_address() and get_address() - (refactor): lint set_cmd_dflall_range() - refactor: addr_error() - move output parameter to return value Fix #20339 TODO: These are the functions called by `get_address()`: ``` nvim_parse_cmd() -> parse_cmdline() -> parse_cmd_address() -> get_address() skipwhite() addr_error() qf_get_cur_idx() qf_get_cur_valid_idx() qf_get_size() qf_get_valid_size() mark_get() mark_check() assert() skip_regexp() magic_isset() > do_search() > searchit() ascii_isdigit() getdigits() getdigits_int32() compute_buffer_local_count() hasFolding() ``` From these functions, I found at least two that call emsg directly: - do_search() - seems to be simple to refactor - searchit() - will be more challenging because it may generate multiple error messages, which can't be handled by the current `errormsg` out-parameter. For example, it makes multiple calls to `vim_regexec_multi()` in a loop that possibly generate error messages, and later `searchit()` itself may generate another one: - https://github.com/neovim/neovim/blob/c194acbfc479d8e5839fa629363f93f6550d035c/src/nvim/search.c#L631-L647 - https://github.com/neovim/neovim/blob/c194acbfc479d8e5839fa629363f93f6550d035c/src/nvim/search.c#L939-L954 --------- Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* | | feat(version): unverbose ":version", ":verbose version" #24195Justin M. Keyes2023-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: `nvim -v` and `:version` prints system vimrc, fallback files, and compilation info by default, which most people don't care about and just clutters up the output. Solution: Omit extra info unless 'verbose' is set.
* | | fix(lsp): lint warnings, default offset_encoding #24046Raphael2023-07-01
|/ / | | | | | | | | - fix lint / analysis warnings - locations_to_items(): get default offset_encoding from active client - character_offset(): get default offset_encoding from active client
* | feat(treesitter): bundle markdown parser and queries (#22481)Christian Clason2023-07-01
| | | | | | | | | | | | | | * bundle split Markdown parser from https://github.com/MDeiml/tree-sitter-markdown * add queries from https://github.com/nvim-treesitter/nvim-treesitter/tree/main * upstream `#trim!` and `#inject-language!` directives Co-authored-by: dundargoc <gocdundar@gmail.com>
* | build(deps): bump libuv to v1.46.0 (#24218)Christian Clason2023-07-01
| | | | | | https://github.com/libuv/libuv/releases/tag/v1.46.0
* | fix(startup): don't truncate when printing with -l (#24216)zeertzjq2023-07-01
| |
* | refactor: fix clang/PVS warnings (#24213)zeertzjq2023-06-30
| |
* | fix(lsp): fix attempt to call non existent function (#24212)Sanchayan Maity2023-06-30
| | | | | | | | | | | | | | | | | | | | | | | | Commit 37079fc moved inlay_hint to vim.lsp() but in the process did missed converting a call to disable/enable which are now local. Fixes the below error when trying to toggle inlay hints. E5108: Error executing lua /usr/local/share/nvim/runtime/lua/vim/lsp/inlay_hint.lua:248: attempt to call field 'disable' (a nil value) stack traceback: /usr/local/share/nvim/runtime/lua/vim/lsp/inlay_hint.lua:248: in function 'toggle' /usr/local/share/nvim/runtime/lua/vim/lsp/inlay_hint.lua:310: in function 'inlay_hint' [string ":lua"]:1: in main chunk
* | Merge pull request #24147 from clason/fix/ftpluginzeertzjq2023-06-30
|\ \ | | | | | | fix(ftplugin): respect runtimepath ordering
| * | test(lua/runtime_spec): add test for ftplugin orderingzeertzjq2023-06-30
| | |
| * | fix(ftplugin): respect runtimepath orderingChristian Clason2023-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: bundled `ftplugin/foo/*.vim` are sourced before user `ftplugin/foo.vim`. Solution: call `runtime!` once on all patterns to be sourced. Followup to #23801. Fixes #24003.
* | | feat(lsp): move inlay_hint() to vim.lsp (#24130)Mathias Fußenegger2023-06-30
| | | | | | | | | | | | | | | | | | Allows to keep more functions hidden and gives a path forward for further inlay_hint related functions - like applying textEdits. See https://github.com/neovim/neovim/pull/23984#pullrequestreview-1486624668
* | | docs(luaref): fix tags for constants (#24203)NAKAI Tsuyoshi2023-06-30
| | |
* | | fix(statusline): fill for double-width char after moving items (#24207)zeertzjq2023-06-30
| | |
* | | feat(defaults): set g:netrw_use_errorwindow = 0 #24179Frede2023-06-29
| | | | | | | | | | | | | | | | | | | | | Problem: netrw uses a bespoke window to show messages. Solution: change the default so that netrw uses normal vim :echoerr
* | | fix(lsp): inlay_hint nil reference error #24202Chinmay Dalal2023-06-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: vim_lsp_inlayhint: Error executing lua: .../lsp/_inlay_hint.lua:249: attempt to index field 'applied' (a nil value) Solution: Assign {} to bufstates.applied in on_reload fixes #24172
* | | refactor: remove some casts to char * (#24200)zeertzjq2023-06-29
| | |
* | | fix(column): handle unprintable chars in 'statuscolumn' (#24198)zeertzjq2023-06-29
| | |
* | | test(statusline): add test with control characters (#24197)zeertzjq2023-06-29
| | |
* | | vim-patch:9.0.1671: Termdebug: error with more than 99 breakpoints (#24194)zeertzjq2023-06-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Termdebug: error with more than 99 breakpoints. Solution: Use a different sign for breakpoint 100 and over. (closes vim/vim#12589, closes vim/vim#12588) https://github.com/vim/vim/commit/e7d9ca2b3bf99b0b759be8952e02c77110a354c1 Co-authored-by: skywind3000 <skywind3000@163.com>
* | | fix(column): use maxwidth to allocate/fill 'statuscolumn' click defs #24190luukvbaal2023-06-28
| | | | | | | | | | | | Use the actual width of the 'statuscolumn' to allocate and fill its click definition array. The returned width of the built statuscolumn string may be shorter (and is padded later).
* | | fix(api): nvim_cmd{cmd="win_getid"} parsed as :winsize #24181Justin M. Keyes2023-06-28
| | | | | | | | | | | | | | | | | | | | | | | | Problem: `:lua vim.cmd.win_getid(30,10)` is interpreted as `:win[size] 30 10`. User intention was to call `vim.fn.win_getid(30,10)`. Solution: Check that the `cmd` actually matches the resolved command.