102 Commits

Author SHA1 Message Date
Matthieu Coudron
535c2f8658 build(contrib): add zsh completion (#32617)
* build(contrib): add zsh completion

this is not part of the build system yet, so packager managers are
supposed to install the file by themselves.

bash doesn't seem to provide shell completion, zsh embeds its own
completion that is bundled with vim's.

Instead of copying zsh's completion, this generated one via
https://github.com/RobSis/zsh-completion-generator


---------

Co-authored-by: Eisuke Kawashima <e.kawaschima+github@gmail.com>
2025-03-16 18:15:00 +01:00
Daiki Noda
ac5a6d9ff5 build: fix RelWithDebInfo optimization flags #31802
Problem:
RelWithDebInfo generates redundant flags:

    Compilation: /usr/bin/cc -O2 -g -Og -g

The `CMAKE_C_FLAGS_RELWITHDEBINFO` variable is being modified in a way
that caused duplicate `-Og` and `-g` flags to be added. The resulting
flags were `-O2 -g -Og -g`.

- `-Og` (Optimize for debugging) and `-O2` (Optimize for performance)
  are different optimization levels. We can't use both at once.
- The duplicate `-g` flag is redundant and no effect.

multiple -O flags has no effect for code, just redundant.

> If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Solution:
Adjust the flags to use the more appropriate `-O2 -g`.

    Compilation: /usr/bin/cc -O2 -g

BEFORE:

```
:verbose version
NVIM v0.11.0-dev-1443+ge00cd1ab40
Build type: RelWithDebInfo
LuaJIT 2.1.1734355927
Compilation: /usr/bin/cc -O2 -g -Og -g -flto -fno-fat-lto-ob
jects -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict
...
```

AFTER:

```
:verbose version
NVIM v0.11.0-dev-e00cd1ab4-dirty
Build type: RelWithDebInfo
LuaJIT 2.1.1734355927
Compilation: /usr/bin/cc -O2 -g -flto -fno-fat-lto-objects -
Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-protot
...
```
2025-01-05 11:28:31 -08:00
Justin M. Keyes
8ef41f5902 feat(jobs): jobstart(…,{term=true}), deprecate termopen() #31343
Problem:
`termopen` has long been a superficial wrapper around `jobstart`, and
has no real purpose. Also, `vim.system` and `nvim_open_term` presumably
will replace all features of `jobstart` and `termopen`, so centralizing
the logic will help with that.

Solution:
- Introduce `eval/deprecated.c`, where all deprecated eval funcs will live.
- Introduce "term" flag of `jobstart`.
- Deprecate `termopen`.
2024-12-19 07:07:04 -08:00
Justin M. Keyes
61f1b091ea docs: dev-arch, focusable windows #30510
- 'statuscolumn' is no longer experimental
- add tags for popular searches on neovim.io
2024-10-07 08:27:38 -07:00
dundargoc
cd05a72fec docs: misc (#29719)
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Co-authored-by: Lauri Heiskanen <lauri.heiskanen@nimble.fi>
Co-authored-by: Piotr Doroszewski <5605596+Doroszewski@users.noreply.github.com>
Co-authored-by: Tobiasz Laskowski <tobil4sk@outlook.com>
Co-authored-by: ariel-lindemann <41641978+ariel-lindemann@users.noreply.github.com>
Co-authored-by: glepnir <glephunter@gmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2024-08-29 06:11:32 +08:00
Christian Clason
fa79a8ad6d build(deps): vendor libvterm at v0.3.3
Problem: Adding support for modern Nvim features (reflow, OSC 8, full
utf8/emoji support) requires coupling libvterm to Nvim internals
(e.g., utf8proc).

Solution: Vendor libvterm at v0.3.3.
2024-08-10 10:26:07 +02:00
bfredl
1247684ae1 build(deps): remove msgpack-c dependency 2024-08-05 12:22:12 +02:00
dundargoc
0e9c92a900 build: remove nix flakes (#28863)
It does not work and we don't plan on maintaining these anymore.

The flake files are being moved to
https://github.com/nix-community/neovim-nightly-overlay/pull/516
instead.
2024-05-24 01:08:36 +02:00
Riley Bruins
206475d791 build(nix): update flake to prevent build errors #28394
- Updates nixpkgs to source a necessary Tree-sitter version
- Updates to a new llvm version as the old one was removed from nixpkgs
- Properly moves `doCheck` from a regular param to an attribute option
2024-04-18 04:48:07 -07:00
zeertzjq
be2a4b52b9 docs(BUILD): mention treesitter parser dependencies (#28226)
Also add missing mention of libvterm and remove mention of libtermkey.
2024-04-08 16:04:54 +08:00
Lewis Russell
9beb40a4db feat(docs): replace lua2dox.lua
Problem:

The documentation flow (`gen_vimdoc.py`) has several issues:
- it's not very versatile
- depends on doxygen
- doesn't work well with Lua code as it requires an awkward filter script to convert it into pseudo-C.
- The intermediate XML files and filters makes it too much like a rube goldberg machine.

Solution:

Re-implement the flow using Lua, LPEG and treesitter.

- `gen_vimdoc.py` is now replaced with `gen_vimdoc.lua` and replicates a portion of the logic.
- `lua2dox.lua` is gone!
- No more XML files.
- Doxygen is now longer used and instead we now use:
  - LPEG for comment parsing (see `scripts/luacats_grammar.lua` and `scripts/cdoc_grammar.lua`).
  - LPEG for C parsing (see `scripts/cdoc_parser.lua`)
  - Lua patterns for Lua parsing (see `scripts/luacats_parser.lua`).
  - Treesitter for Markdown parsing (see `scripts/text_utils.lua`).
- The generated `runtime/doc/*.mpack` files have been removed.
   - `scripts/gen_eval_files.lua` now instead uses `scripts/cdoc_parser.lua` directly.
- Text wrapping is implemented in `scripts/text_utils.lua` and appears to produce more consistent results (the main contributer to the diff of this change).
2024-02-27 14:41:17 +00:00
dundargoc
ae3eed53d6 build: various build improvements
- remove "ran-" prefix from touch files as it's redundant since the
  they're already in the directory named `touches`.
- Include `contrib` when formatting with `make formatlua`.
- Use TARGET_FILE generator expression instead of assuming the
  executable location.
- reuse logic that determines whether to use lua or luajit.
- add translations to the `nvim` target.

Makefile improvements:
- rename variable `CMAKE_PRG` to `CMAKE` to make it more consistent with
  the builtin `MAKE` variable.
- stop propagating flags to generator. Users should use cmake for
  non-standard use cases.
- remove `+` prefix from targets. If the user for whatever reason wants
  to dry-run a target then they should be able to.
2024-01-24 12:41:09 +01:00
LamprosPitsillos
e32af31ee8 fix(flake): clang-tools moved to nativeBuildInputs (#26955)
* fix(flake): clang-tools moved to nativeBuildInputs

Buildtime binaries should go in `nativeBuildInputs`
Before `clang-tools` version was overwriten breaking the Lsp.

Relevant issues:
https://github.com/NixOS/nixpkgs/issues/76486

* remove cmake, available in the nixpkgs derivation
2024-01-12 21:12:43 +01:00
Jared Baur
0c3d2a7fd9 build(nix): update flake.lock (#26702)
updates nixpkgs version to reflect the removal of nvim-client in the build see https://github.com/NixOS/nixpkgs/pull/274865
2023-12-23 00:50:24 +01:00
dundargoc
2c96f1c4f0 docs: move minimum reproduction template from wiki to repo
Instead of a markdown file, just use a lua file instead that users can
use directly.
2023-12-12 18:32:45 +01:00
José Luis Lafuente
17f3a3ae31 build(nix): update flake.lock
Flake lock file updates:
• Updated input 'flake-utils':
    'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
  → 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a64b73e07d4aa65cfcbda29ecf78eaf9e72e44bd' (2023-06-08)
  → 'github:nixos/nixpkgs/e92039b55bcd58469325ded85d4f58dd5a4eaf58' (2023-11-29)
2023-12-02 12:50:15 +01:00
dundargoc
9f8f287c61 build: remove luarocks
Luarocks is no longer needed after
25e51d393a.
2023-09-10 15:32:47 +02:00
Lewis Russell
c0beb8173f feat: add .luarc.json (#24592) 2023-08-07 16:27:53 +01:00
figsoda
2031812348 build(nix): fix markdown parser #24225 2023-07-01 21:09:30 -07:00
Raphael
4dc86477b6 build(luarc.json): disable luadoc-miss-see-name #24108 2023-06-23 04:54:47 -07:00
figsoda
8df3381202 build(nix): use the correct versions of the bundled treesitter parsers 2023-06-09 16:51:26 -04:00
figsoda
9eef2b111d build(nix): update flake.lock
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
  → 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
• Added input 'flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/abe7316dd51a313ce528972b104f4f04f56eefc4' (2023-04-14)
  → 'github:nixos/nixpkgs/a64b73e07d4aa65cfcbda29ecf78eaf9e72e44bd' (2023-06-08)
2023-06-09 16:51:10 -04:00
ii14
4cc69f45b4 build: add ubsan default options
Use print_stacktrace=1 for UBSAN by default.
2023-05-15 16:50:58 +02:00
Will Ruggiano
eb151a9730 build(nix): upgrade nixpkgs to resolve link error (#23101)
bump nixpkgs to get the appropriate treesitter version
2023-04-15 14:54:16 +02:00
Matthieu Coudron
cbeedc52eb build(nix): fixed build (#22918)
added missing dependencies libiconv
2023-04-07 10:26:52 +02:00
ii14
17ce634b8f build!: rename sanitizer options from CLANG_* to ENABLE_* 2023-03-17 03:40:57 +01:00
bfredl
2ba224e152 refactor(log): reduce compile time LOG_LEVEL granularity 2023-03-04 15:26:17 +01:00
Will Leinweber
849f544d62 build: add git sha to version when built with nix flake (#21210) 2022-12-30 18:24:40 +01:00
zeertzjq
d7855caa18 test: add test for setting &columns from modeline with tabpages 2022-12-30 15:16:28 +08:00
dundargoc
86a75c79e1 build(nix): remove pylint as it has been removed (#21572) 2022-12-28 17:20:23 +01:00
figsoda
3d0eca6b65 build(nix): clean up nix flake (#21565) 2022-12-28 14:26:59 +01:00
Paul Schyska
b26cf45fec build(nix): update nixpkgs
Update flake and drop now superfluous libvterm-neovim override
2022-11-24 00:29:12 +01:00
Gregory Anders
16eed6e766 fix: add lfs to luarc.json (#20979)
The sumneko lua language server keeps prompting me if I want to
"configure my workspace for lfs". These changes suppress that prompt.
2022-11-06 14:31:54 -07:00
Philipp Herzog
47e60da721 build(nix): change the pkgs to final, add new version of libvterm (#20410) 2022-09-30 19:25:12 +02:00
Justin M. Keyes
ede66a0b85 fix: cleanup contrib/ #20304
- YouCompleteMe is unnecessary since Nvim LSP works well.
- vim-addon-local-vimrc is not needed since we added `.editorconfig`.
- Inline flake8 arguments. Eventually we will remove all python code,
  don't need a top-level `.flake8` file meanwhile.
2022-09-23 09:02:16 -07:00
Justin M. Keyes
3fe43917cb ci: remove contrib/doxygen/ #20303
Problem:
- The layout of the doxygen HTML "dev docs" has been broken for 1+ years.
- There is no evidence that anyone uses the doxygen HTML.
- In the meantime since we introduced the doxygen HTML pages, the Nvim
  C docstrings have been surfaced in other ways:
  - Nvim LSP client
  - Generated :help docs like ":help api" and ":help ui".

Solution:
- Remove `contrib/doxygen/` from neovim repo.
  - Note: keep `src/Doxyfile`, it is used by `scripts/gen_vimdoc.py`. ☠️
- Remove `doc/dev/` from website. https://github.com/neovim/neovim.github.io/pull/291
- Remove doxygen job from the neovim/doc repo. https://github.com/neovim/doc/pull/28
- Future/ongoing: ":help dev" and other :help docs will continue to be
  improved as the "source of truth" for developer-related docs.

ref https://github.com/neovim/neovim/pull/824
2022-09-23 08:36:36 -07:00
Matthieu Coudron
93f32bb0aa build(nix): removed the useless 'app'
the format changed depending on the nix version and it is useless
anyway.
2022-09-05 17:47:06 +02:00
Matthieu Coudron
8570a700cc build(nix): bumped flake 2022-09-05 11:31:24 +02:00
Matthieu Coudron
29cd072351 build(flake): add sumneko lsp in PATH
and reformatted the file
2022-09-05 11:31:22 +02:00
Justin M. Keyes
eab8b998e9 build: move man/ to src/man/ #19119
Problem:
man/ contains source files for manpage generation, it doesn't need to
live at the project root.

Solution:
Move it to src/man/.
2022-06-27 01:02:02 -07:00
dundargoc
f4967828f9 feat(contrib): asan debugging script #18892
Opted to use a shell script because it's simpler to manipulate
environment variables than in makefiles.
2022-06-12 10:54:14 -07:00
Daniel Kempkens
40864126d5 fix(mac): add CoreServices to flake.nix #18358
The `include` was added in e038625b87
2022-05-02 03:17:38 -07:00
Matthieu Coudron
5f3fff62a8 chore(flake): bump flake (#17632)
it was 6 months old
2022-03-07 10:57:08 +01:00
Gregory Anders
73b35ef10f chore: add default luarc.json for Lua development (#16487)
The Sumneko Lua language server has matured quite a bit and many
Neovim developers use it while working on Neovim. Having a default
configuration for Neovim development is a nice convenience (and
dovetails well with the auto-generated compile_command.json for C
development).

The file is shipped under `contrib` and users can make use of it by
symlinking to `.luarc.json` in the project root.
2021-12-01 12:09:50 -07:00
dundargoc
caa6992a10 chore: fix typos (#16361)
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
2021-11-27 11:10:48 -05:00
Justin M. Keyes
be93821647 fix: move contrib/uncrustify.cfg -> src/uncrustify.cfg #15768
If uncrustify is now the (partial) authority on code style, it is no
longer "contrib".
2021-09-23 14:56:58 -07:00
dundargoc
f4ca3a29dd refactor: reformat with uncrustify #15736
* fix function parameter comments
* remove space after star in function names
2021-09-20 09:35:41 -07:00
dundargoc
867e888599 refactor(style): switch-case formatting, "uncrustify:indent-off" #15669
* refactor: disable formatting for attribute in macro
* fixup: disable/enable uncrustify with uncrustify:indent-off/on
* fixup: stop indenting contents inside braces in case
* fixup: remove case brace if no variable declaration
2021-09-17 07:38:16 -07:00
dundargoc
0a83017fe9 refactor: format files with uncrustify #15663 2021-09-14 09:13:34 -07:00
dundargoc
0771504488 refactor: format tui.c with uncrustify (#15640) 2021-09-14 10:36:08 +02:00