aboutsummaryrefslogtreecommitdiff
path: root/src/nvim
Commit message (Collapse)AuthorAge
...
| * | | | | docs: also change "vimL" and "viml" to "Vimscript" (#24414)zeertzjq2023-07-21
| | | | | |
| * | | | | fix(folds): update folds in Insert mode with fdm=indent (#24402)Brandon Simmons2023-07-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when using foldmethod=indent, inserting an unindented line would inadvertently open closed folds below it. As a performance improvement, folds were only updated once, across all lines, after Insert mode was exited. Now, the performance improvement is no longer being used when foldmethod=indent, so folds are updated multiple times during Insert mode, but only across the lines that are changing, which preserves the folds (and their open/close states) instead of recreating them.
| * | | | | fix(decoration_provider): don't leak memory on error (#24410)zeertzjq2023-07-21
| | | | | |
| * | | | | feat(lsp): implement textDocument/diagnostic (#24128)Chris AtLee2023-07-20
| | | | | |
| * | | | | feat(decoration_provider): log errors as error messagesThomas Vigouroux2023-07-19
| | | | | |
| * | | | | test(startup_spec): add a test for #18315 (#24391)zeertzjq2023-07-19
| | | | | |
| * | | | | Merge pull request #24363 from lewis6991/docs/luatypesLewis Russell2023-07-17
| |\ \ \ \ \ | | | | | | | | | | | | | | docs(lua): move some function docs to lua files
| | * | | | | refactor: rename _meta.lua to _options.luaLewis Russell2023-07-17
| | | | | | |
| * | | | | | fix(terminal): don't send unknown special keys to terminal (#24378)zeertzjq2023-07-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Special keys are negative integers, so sending them to terminal leads to strange behavior.
| * | | | | | feat(options)!: remove compatible behaviours for vim 5.0 and earlierLewis Russell2023-07-17
| | | | | | |
| * | | | | | fix(inccommand): block errors when parsing command line again (#24374)zeertzjq2023-07-17
| | | | | | | | | | | | | | | | | | | | | Revert the change to ex_getln.c from a741c7fd0465c949a0016fcbee5f4526b65f8c02
| * | | | | | feat(api)!: change return type of nvim_win_text_height to Dict (#24365)zeertzjq2023-07-16
| |/ / / / /
| * | | | | feat(tui): support Super and Meta modifiers (#24357)zeertzjq2023-07-15
| | | | | |
| * | | | | fix(runtime): respect 'fileignorecase' when sourcing (#24344)zeertzjq2023-07-14
| | | | | |
| * | | | | fix(runtime): respect 'rtp' order for all runtime files (#24335)zeertzjq2023-07-14
| | | | | |
| * | | | | perf(rtp): reduce rtp scans (#24191)Lewis Russell2023-07-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * perf(rtp): reduce rtp scans Problem: Scanning the filesystem is expensive and particularly affects startuptime. Solution: Reduce the amount of redundant directory scans by relying less on glob patterns and handle vim and lua sourcing lower down.
| * | | | | fix(ui): cursor pos with left gravity inline virt_text at eol (#24329)zeertzjq2023-07-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Cursor is not after inline virtual text with left gravity when inserting after the end of the line. Solution: Add width of inline virtual text with left gravity to cursor virtcol in Insert mode even if on a NUL.
| * | | | | test(extmarks): add test for virt_text_win_col with cpo+=n (#24328)zeertzjq2023-07-13
| | | | | |
| * | | | | perf(extmarks): don't handle inline virt_text if there is none (#24322)zeertzjq2023-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extreme testcase: ```lua vim.fn.setline(1, 'foobar') local ns = vim.api.nvim_create_namespace('') for _ = 1, 100000 do vim.api.nvim_buf_set_extmark(0, ns, 0, 3, {}) end local start_time = vim.loop.hrtime() vim.fn.virtcol('$') local stop_time = vim.loop.hrtime() print(stop_time - start_time) ``` Before #20130: 31696 On master branch: 26191344 After this PR: 37692
| * | | | | fix(mouse): copy the line before syntax matching (#24320)zeertzjq2023-07-12
| | | | | |
| * | | | | fix(drawline): fix missing Visual hl on double-width fold char (#24308)zeertzjq2023-07-11
| | | | | |
| * | | | | perf(extmarks): avoid unnecessary marktree traversal with folds (#24306)zeertzjq2023-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extreme testcase: ```lua vim.cmd([[ call setline(1, ['', '', '']) 2,3fold ]]) local ns = vim.api.nvim_create_namespace('') for _ = 1, 100000 do vim.api.nvim_buf_set_extmark(0, ns, 1, 0, { virt_lines = {{{ '' }}} }) end local start_time = vim.uv.hrtime() vim.api.nvim_win_text_height(0, {}) local stop_time = vim.uv.hrtime() print(stop_time - start_time) ``` Before this PR: 21542011 After this PR: 43874
| * | | | | feat(api): add nvim_win_text_height (#24236)zeertzjq2023-07-11
| | | | | | | | | | | | | | | | | | | | | | | | It uses the same code as "scroll_delta" of "win_viewport" UI event to calculate text height, but is more flexible.
| * | | | | fix(completion): don't add backslashes to runtime pattern (#24296)zeertzjq2023-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Bashslashes added as regexp in runtime completion may be treated as path separator with some 'isfname' value. Solution: Make curly braces work for runtime completion and use it.
| * | | | | docs: gather @notes items into one sectionJustin M. Keyes2023-07-08
| | | | | | | | | | | | | | | | | | | | | | | | related: 21eacbfef399
| * | | | | docs: "Return (multiple)" headingJustin M. Keyes2023-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Lua functions that return multiple results are declared by using multiple `@return` docstring directives. But the generated docs don't make it obvious what this represents. Solution: - Generate a "Return (multiple)" heading for multiple-value functions. - Fix `@note` directives randomly placed after `@return`.
| * | | | | docs: MAINTAIN.md, nvim_get_markJustin M. Keyes2023-07-08
| | | | | |
| * | | | | fix(extmarks): fix wrong highlight after "combine" virt_text (#24281)Ibby2023-07-08
| | | | | |
| * | | | | fix(startup): run embedded Nvim with real path (#24282)zeertzjq2023-07-08
| | | | | | | | | | | | | | | | | | fix(startup): run embedded process with real path
| * | | | | fix(folds): fix missing virt_lines above when fold is hidden (#24274)zeertzjq2023-07-07
| | | | | |
| * | | | | fix(drawline): inline virt_text hl_mode inside syntax/extmark hl (#24273)zeertzjq2023-07-07
| | | | | |
| * | | | | fix(column): fix wrong cursor with 'statuscolumn' and cpo+=n (#24268)zeertzjq2023-07-06
| | | | | |
| * | | | | refactor(plines.c): update outdated comments (#24264)zeertzjq2023-07-06
| | | | | |
| * | | | | fix(ui): delay win_viewport until screen update #24182fredizzimo2023-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Sometimes, when nvim sends the `win_viewport` event, for example when scrolling with visible folds on the screen, it reports the `scroll_delta` value one batch into "future". So when the client application is trying to show the new viewport it's not yet updated, resulting in temporary corruption / screen flickering. For more details see #23609, and starting from [this comment]( https://github.com/neovide/neovide/pull/1790#issuecomment-1518697747) in https://github.com/neovide/neovide/pull/1790,, where the issue was first detected. Note that some of the conclusions in those are not fully accurate, but the general observations are. Solution: When there are pending updates to a Window, delay the `win_viewport` UI event until the updates are sent. This ensures that there's no flush between sending the viewport and updating of the lines corresponding to the new viewport. Document the existing viewport behaviour (for cases where there are no extra flushes), give a hint about how applications can deal with the slightly surprising behaviour of the viewport event being sent after the updates. Fixes https://github.com/neovim/neovim/issues/23609
| * | | | | Merge pull request #23228 from seandewar/cmdwin-jailzeertzjq2023-07-05
| |\ \ \ \ \ | | | | | | | | | | | | | | fix(api): use `text_locked()` to check for textlock
| | * | | | | fix(api): disallow some more functions during textlockSean Dewar2023-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: nvim_buf_set_text(), nvim_open_term() and termopen() all change buffer text, which is forbidden during textlock. Additionally, nvim_open_term() and termopen() may be used to convert the cmdwin buffer into a terminal buffer, which is weird. Solution: Allow nvim_buf_set_text() and nvim_open_term() in the cmdwin, but disallow nvim_open_term() from converting the cmdwin buffer into a terminal buffer. termopen() is not allowed in the cmdwin (as it always operates on curbuf), so just check text_locked(). Also happens to improve the error in #21055: nvim_buf_set_text() was callable during textlock, but happened to check textlock indirectly via u_save(); however, this caused the error to be overwritten by an unhelpful "Failed to save undo information" message when msg_list == NULL (e.g: an `<expr>` mapping invoked outside of do_cmdline()).
| | * | | | | fix(api): use text_locked() to check textlockSean Dewar2023-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: some API functions that check textlock (usually those that can change curwin or curbuf) can break the cmdwin. Solution: make FUNC_API_CHECK_TEXTLOCK call text_locked() instead, which already checks for textlock, cmdwin and `<expr>` status. Add FUNC_API_TEXTLOCK_ALLOW_CMDWIN to allow such functions to be usable in the cmdwin if they can work properly there; the opt-in nature of this attribute should hopefully help mitigate future bugs. Also fix a regression in #22634 that made functions checking textlock usable in `<expr>` mappings, and rename FUNC_API_CHECK_TEXTLOCK to FUNC_API_TEXTLOCK.
| * | | | | | fix(plines): don't return very large height on very long line (#24260)zeertzjq2023-07-05
| |/ / / / /
| * | | | | 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
| | | | | |
| * | | | | 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().
| * | | | | 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).
| * | | | | | 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