neovim-harmonyos:基于 Neovim 的 HarmonyOS PC 移植项目

为harmonyos移植neovim

分支2Tags2
文件最后提交记录最后更新时间
ci(lintdocurls): use sed -e flag to mark argument as command #36776 Problem: Sed thinks the argument starting with 1i (and triple backticks) is the suffix for the backup file because it comes right after the -i flag. See for example https://github.com/neovim/neovim/actions/runs/19774967693/job/56665991723. Solution: Explicitly mark it as command using the -e flag.5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
build: haiku os support #36639 Initial support for compiling on haiku os. Some deps can be pulled from haiku repos, some need to be compiled with nvim's dep build system: cmake -DUSE_BUNDLED_LIBUV=OFF -DUSE_BUNDLED_UNIBILIUM=OFF -DUSE_BUNDLED_LUAJIT=OFF -B .deps ./cmake.deps make -C .deps6 个月前
build(deps): bump luajit to 6f21cb8ac 5 个月前
ci: Windows arm64 packages #35345 Problem: Neovim binaries are not provided for Windows ARM64. GitHub Actions now offer native CI runners for Windows on ARM devices (windows-11-arm), enabling automated builds and testing. Solution: - Modified CMake packaging to include packaging windows on arm binaries. - Modified env script to install and initialize vs setup for arm64 arch. Co-authored-by: Justin M. Keyes <justinkz@gmail.com>8 个月前
feat(harmonyos): switch to LuaJIT and fix ShaDa file issues - Modify src/nvim/CMakeLists.txt to force use LuaJIT on HarmonyOS - Update cmake/FindLuajit.cmake to support libluajit.a static library - Fix build-ohos-with-log.sh CMake options for LuaJIT linking - Update README.md with LuaJIT documentation and ShaDa fix instructions - Add vim.opt.shada = "" to disable ShaDa on HarmonyOS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
build(contrib): add bash completion for nvim #35843 Two versions of the completion function are provided: 1. Uses bash-completion@2, which is the community standard for Bash completions; version >= 2.12 offers a more user-friendly experience. 2. Uses only bash built-in syntax and completes options only.8 个月前
build(deps): bump utf8proc to v2.11.2 6 个月前
test: skip noisy "terminal mode unavailable" logs #36794 Problem: Every CI log has a lot of noise at the end, which makes it harder to find relevant test failures: Running tests from test/functional/terminal/tui_spec.lua ... T5831 TUI bg color queries the terminal for background color: T5832 TUI bg color triggers OptionSet from automatic background processing: T5833 TUI bg color sends theme update notifications when background changes #31652: ... Running tests from test/functional/ui/output_spec.lua ... WRN 2025-12-02T03:36:47.304 ui/c/T5831.28003.0 tui_handle_term_mode:223: TUI: terminal mode 2026 unavailable, state 0 WRN 2025-12-02T03:36:47.359 ui/c/T5832.28006.0 tui_handle_term_mode:223: TUI: terminal mode 2048 unavailable, state 0 WRN 2025-12-02T03:36:47.414 ui/c/T5833.28009.0 tui_handle_term_mode:223: TUI: terminal mode 2048 unavailable, state 0 Solution: - Skip logging in test-mode. - This can be reverted later, when these logs are changed to "INFO" level, per this TODO comment: ``` // TODO(bfredl): This is really ILOG but we want it in all builds. // add to show_verbose_terminfo() without being too racy ???? WLOG("TUI: terminal mode %d unavailable, state %d", mode, state); ```5 个月前
feat(version): support multiple Vim versions Group up to 15 vimpatch numbers in 1 line to guard against 'make formatc'. 1-liner for vim_versions, num_patches. Automate '*Version' to remove version.h macros. '-V1 -v' lists merged Vim versions. 5 个月前
feat(harmonyos): switch to LuaJIT and fix ShaDa file issues - Modify src/nvim/CMakeLists.txt to force use LuaJIT on HarmonyOS - Update cmake/FindLuajit.cmake to support libluajit.a static library - Fix build-ohos-with-log.sh CMake options for LuaJIT linking - Update README.md with LuaJIT documentation and ShaDa fix instructions - Add vim.opt.shada = "" to disable ShaDa on HarmonyOS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
test: skip noisy "terminal mode unavailable" logs #36794 Problem: Every CI log has a lot of noise at the end, which makes it harder to find relevant test failures: Running tests from test/functional/terminal/tui_spec.lua ... T5831 TUI bg color queries the terminal for background color: T5832 TUI bg color triggers OptionSet from automatic background processing: T5833 TUI bg color sends theme update notifications when background changes #31652: ... Running tests from test/functional/ui/output_spec.lua ... WRN 2025-12-02T03:36:47.304 ui/c/T5831.28003.0 tui_handle_term_mode:223: TUI: terminal mode 2026 unavailable, state 0 WRN 2025-12-02T03:36:47.359 ui/c/T5832.28006.0 tui_handle_term_mode:223: TUI: terminal mode 2048 unavailable, state 0 WRN 2025-12-02T03:36:47.414 ui/c/T5833.28009.0 tui_handle_term_mode:223: TUI: terminal mode 2048 unavailable, state 0 Solution: - Skip logging in test-mode. - This can be reverted later, when these logs are changed to "INFO" level, per this TODO comment: ``` // TODO(bfredl): This is really ILOG but we want it in all builds. // add to show_verbose_terminfo() without being too racy ???? WLOG("TUI: terminal mode %d unavailable, state %d", mode, state); ```5 个月前
ci(cirrus): update to FreeBSD 14.3 (#36813) 5 个月前
build: align .clang-format rules with uncrustify config Difference can be seen e.g. in qf_add_entry(), where clang-format previously would want to place each parameter declaration on its own line (BinPackParameter: false), while uncrustify behaves if as BinPackParameters was set to true. Same goes for BinPackArguments. See https://clang.llvm.org/docs/ClangFormatStyleOptions.html#BinPackParameters and https://clang.llvm.org/docs/ClangFormatStyleOptions.html#binpackarguments2 年前
build: slience new clang-tidy warnings #34539 Problem: The new cert-arr39-c and bugprone-tagged-union-member-count checks introduced in clang-tidy 20 fail on Neovim's codebase, even though the code is correct. Solution: Disable these two checks by modifying the .clang-tidy configuration file.11 个月前
build: disable UnusedIncludes from clangd Include Cleaner is enabled by default since clangd 17 and gives incorrect suggestions. 2 年前
docs: misc 1 年前
build(emmyrc.json): use StyLua formatter in .emmyrc.json #35196 9 个月前
docs: .git-blame-ignore-revs #26397 2 年前
fix: remove exec permission from .gitattributes #33140 Problem: .gitattributes was marked as executable, which isn’t needed for a config file and goes against the principle of least privilege. Solution: Set file mode to 100644 to reflect its intended use.1 年前
fix(build): use relative paths in CMake configuration Replace hardcoded /storage/Users/currentUser/IDEProjects/neovim/ paths with $ROOT_DIR relative paths so the build script works on any machine. Add harmonyos-deps/ to .gitignore (managed as separate repo). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 15 天前
docs(luv): replace bundled LuaCATS meta files with upstream Synced from https://github.com/luvit/luv/blob/master/meta.lua 1 年前
Lua: vim.validate() We often want to do type checking of public function arguments. - test: Rename utility_function_spec.lua to vim_spec.lua - .luacov: Map lua module names 6 年前
docs(luv): replace bundled LuaCATS meta files with upstream Synced from https://github.com/luvit/luv/blob/master/meta.lua 1 年前
docs: misc (#28837) Co-authored-by: Danymat <d.danymat@gmail.com> Co-authored-by: Gregory Anders <greg@gpanders.com> Co-authored-by: Jakub Okoński <jakub@okonski.org> Co-authored-by: John L. Villalovos <john@sodarock.com> Co-authored-by: Maria José Solano <majosolano99@gmail.com> Co-authored-by: Michaili K <git@michaili.dev> Co-authored-by: TheLeoP <eugenio2305@hotmail.com> Co-authored-by: Tobias Schmitz <tobiasschmitz2001@gmail.com> Co-authored-by: W20MC <157727813+W20MC@users.noreply.github.com> Co-authored-by: Will Hopkins <willothyh@gmail.com> Co-authored-by: Yifan Hu <141280278+b0ae989c@users.noreply.github.com> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: prljav <74116121+prljav@users.noreply.github.com>1 年前
build: enable lintlua for scripts/ dir #26391 Problem: We don't enable stylua for many Lua scripts. Automating code-style is an important tool for reducing time spent on accidental (non-essential) complexity. Solution: - Enable lintlua for scripts/ directory. - Specify call_parentheses = "Input", we should allow kwargs-style function invocations.2 年前
refactor(tests): lint decorations_spec, float_spec, multigrid_spec #33274 Problem: decorations_spec.lua, float_spec.lua, multigrid_spec.lua are not auto-formatted. Solution: Add a special formatlua2 cmake target, which invokes stylua with an alternative .stylua2.toml config.1 年前
refactor(tests): lint decorations_spec, float_spec, multigrid_spec #33274 Problem: decorations_spec.lua, float_spec.lua, multigrid_spec.lua are not auto-formatted. Solution: Add a special formatlua2 cmake target, which invokes stylua with an alternative .stylua2.toml config.1 年前
feat(lua)!: register_keystroke_callback => on_key Analogous to nodejs's on('data', …) interface, here on_key is the "add listener" interface. ref 3ccdbc570d85 #12536 BREAKING_CHANGE: vim.register_keystroke_callback() is now an error. 4 年前
docs: misc Close #36441 Close #36631 Close #36656 Co-authored-by: Maria José Solano <majosolano99@gmail.com> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: "Mike J. McGuirk" <mike.j.mcguirk@gmail.com> 6 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
docs: misc Co-authored-by: Axel <axelhjq@gmail.com> Co-authored-by: Colin Kennedy <colinvfx@gmail.com> Co-authored-by: Daiki Noda <sys9kdr@users.noreply.github.com> Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: Jean-Jacq du Plessis <1030058+jj-du-plessis@users.noreply.github.com> Co-authored-by: Juan Giordana <juangiordana@gmail.com> Co-authored-by: Lincoln Wallace <locnnil0@gmail.com> Co-authored-by: Matti Hellström <hellstrom@scm.com> Co-authored-by: Steven Locorotondo <steven.locorotondo@justeattakeaway.com> Co-authored-by: Yochem van Rosmalen <git@yochem.nl> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: ifish <fishioon@live.com> 1 年前
docs: misc Close #36441 Close #36631 Close #36656 Co-authored-by: Maria José Solano <majosolano99@gmail.com> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: "Mike J. McGuirk" <mike.j.mcguirk@gmail.com> 6 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
docs: small fixes (#35791) Close #34938 Close #35030 Close #35233 Close #35259 Close #35290 Close #35433 Close #35541 Close #35766 Close #35792 Co-authored-by: huylg <45591413+huylg@users.noreply.github.com> Co-authored-by: Jason Del Ponte <961963+jasdel@users.noreply.github.com> Co-authored-by: sooriya <74165167+thuvasooriya@users.noreply.github.com> Co-authored-by: Andrew Braxton <andrewcbraxton@gmail.com> Co-authored-by: Enric Calabuig <enric.calabuig@gmail.com> Co-authored-by: Augusto César Dias <augusto.c.dias@gmail.com> Co-authored-by: David Sierra DiazGranados <davidsierradz@gmail.com> Co-authored-by: Stepan Nikitin <90522882+vectravox@users.noreply.github.com> Co-authored-by: Emilien Breton <bricktech2000@gmail.com>8 个月前
vim-patch:69c3493: runtime(doc): clarify license conditions for distributed runtime files related: vim/vim#17372 https://github.com/vim/vim/commit/69c3493adc4db162447893ca5b7f224f9432a19a Co-authored-by: Christian Brabandt <cb@256bit.org> 1 年前
docs: misc Co-authored-by: Jan Weinkauff <jan@weinkauff.cloud> Co-authored-by: MeanderingProgrammer <meanderingprogrammer@gmail.com> Co-authored-by: Yochem van Rosmalen <git@yochem.nl> Co-authored-by: phanium <91544758+phanen@users.noreply.github.com> 11 个月前
build: drop BUNDLED_CMAKE_FLAG, BUNDLED_LUA_CMAKE_FLAG Problem: We have too many build flags. Solution: Prepend to DEPS_CMAKE_FLAGS instead of defining a bunch of extra flags. 6 个月前
update: 更新文件 README.md Signed-off-by: ystyle <lxy5266@live.com>5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
fix(build): use relative paths in CMake configuration Replace hardcoded /storage/Users/currentUser/IDEProjects/neovim/ paths with $ROOT_DIR relative paths so the build script works on any machine. Add harmonyos-deps/ to .gitignore (managed as separate repo). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 15 天前
build(windows): vendor xxd.c #36746 Problem: Currently we fetch a prebuilt xxd.exe from neovim/deps for Windows, which is not ideal in terms of obviousness, misses updates, and is clumsy to update. Solution: Similar to tee.c (#36363), vendor xxd.c from Vim and build it as part of the Neovim build process. This makes the source obvious, enables analyzer checks, and simplifies updates. Fixes #366645 个月前
build(deps): bump tree-sitter-query to v0.8.0 6 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): optimize build script with dependency checking - Update build-ohos-with-log.sh to check dependency status and avoid rebuild - Add dependency validation for core libraries (liblua.a, libluajit.a, etc.) - Fix permission issues for built executables - Update run-nvim.sh with improvements 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前
feat(harmonyos): complete Neovim port to HarmonyOS PC This commit completes the Neovim port to HarmonyOS PC (HongMeng Kernel 1.11.0, aarch64). Key changes: 1. **CMake configuration**: Added HarmonyOS detection and compatibility setup 2. **Static linking scheme**: Bypass HarmonyOS dynamic loading restrictions 3. **TTY/SELinux fixes**: Modified libuv to skip fd copying, avoid permission issues 4. **MessagePack compatibility**: Implemented dynamic data size detection 5. **Lua environment**: Static Lua interpreter for code generation 6. **Build system**: Complete build scripts with logging 7. **Documentation**: Comprehensive README with CodeArts IDE signing instructions 8. **Manual signing**: Added binary-sign-tool commands for self-signing Build process: - Clone neovim-harmonyos and harmonyos-deps repositories - Build dependencies with build-deps-harmonyos.sh - Build Neovim with build-ohos-with-log.sh - Manual signing if needed: binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1 - Run with run-nvim.sh The port supports all core Neovim functionality with static linking to avoid HarmonyOS dynamic loading restrictions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> 5 个月前

Neovim

Documentation | Chat

HarmonyOS 移植版本

项目仓库: https://gitcode.com/ystyle/neovim-harmonyos

本项目是将 Neovim 移植到 HarmonyOS PC(鸿蒙PC)的完整解决方案,支持 HarmonyOS HongMeng Kernel 1.11.0(aarch64 架构)。移植使用独立的依赖构建系统 harmonyos-deps 编译所有必要的依赖库。

核心特性

  • 完整依赖构建 - Lua、libuv、lpeg、libiconv、luv、lua_compat53 等
  • HarmonyOS适配 - 特定补丁和兼容性修复
  • 静态链接方案 - 绕过 HarmonyOS 动态加载限制
  • 自动化工具 - 补丁生成、构建脚本、环境配置

Lua 版本支持

本项目提供两个版本分支以满足不同需求:

1. 主分支 (harmonyos-port) - 推荐使用

  • Lua 版本: LuaJIT 2.1.ROLLING(禁用JIT版本)
  • 特点: 使用LuaJIT,性能最佳,保持Lua 5.1 API兼容性
  • 适用场景: 生产环境,需要最高性能和稳定性
  • 注意: 在HarmonyOS上JIT编译被禁用(mmap(PROT_EXEC)失败),但仍提供其他优化
  • 状态: ✅ 稳定可用

2. Lua 5.4 分支 (harmonyos-lua54) - 实验性

  • Lua 版本: 5.4(实验版)
  • 特点: 支持现代Lua特性,包含Lua 5.1兼容层
  • 适用场景: 需要使用Lua 5.2+特性的插件,实验性环境
  • 注意: 可能存在兼容性问题,不建议生产环境使用
  • 状态: ⚠️ 实验性,可能存在兼容性问题

Lua 5.1 兼容层

Lua 5.4分支包含完整的Lua 5.1兼容层,重新实现了在Lua 5.2+中被移除的API:

  • table.maxn, loadstring, table.unpack, module函数
  • package.loaders, getfenv/setfenv
  • math.log10, math.pow, bit32库等

兼容性测试结果:✅ 所有Lua 5.1 API在Lua 5.4中可用,第三方插件无需修改即可工作。

快速开始

# 1. 克隆项目
git clone https://gitcode.com/ystyle/neovim-harmonyos.git
cd neovim-harmonyos

# 2. 克隆依赖仓库
git clone https://gitcode.com/ystyle/neovim-harmonyos-deps.git harmonyos-deps

# 3. 构建依赖
cd harmonyos-deps && ./build-deps-harmonyos.sh && cd ..

# 4. 构建 Neovim
./build-ohos-with-log.sh

# 5. 运行测试
./run-nvim.sh

运行建议

  • 推荐使用./run-nvim.sh脚本启动,该脚本已正确配置环境变量
  • 如果直接运行nvim遇到终端控制问题,可使用sh -c 'nvim'方式
  • 在zsh中直接运行可能遇到终端检测问题,建议使用脚本或sh方式

切换到不同 Lua 版本分支

1. 切换到 LuaJIT 分支(主分支)- 推荐

# 切换到主分支(LuaJIT)
git checkout harmonyos-port

# 重新构建依赖(需要LuaJIT版本)
cd harmonyos-deps && ./build-deps-harmonyos.sh && cd ..

# 重新构建 Neovim
./build-ohos-with-log.sh

2. 切换到 Lua 5.4 分支 - 实验性

# 切换到 Lua 5.4 分支(实验性)
git checkout harmonyos-lua54

# 重新构建依赖(需要Lua 5.4版本)
cd harmonyos-deps && ./build-deps-harmonyos.sh && cd ..

# 重新构建 Neovim
./build-ohos-with-log.sh

技术实现细节

静态链接方案

由于 HarmonyOS 对动态加载的限制,本项目采用完全静态链接方案:

  • 所有 Lua 模块预编译并嵌入二进制
  • 依赖库编译为静态库(.a 文件)
  • 使用静态 Lua 解释器进行代码生成

HarmonyOS 特定适配

  1. TTY 权限修复:修改 libuv 跳过文件描述符复制,避免 SELinux 权限问题
  2. MessagePack 兼容性:实现动态数据大小检测,解决 sizeof() 计算错误
  3. Lua 环境初始化:使用 preload_minimal.lua 确保模块加载顺序正确

LuaJIT 在 HarmonyOS 上的实现

主分支使用 LuaJIT 2.1.ROLLING,但在 HarmonyOS 上 JIT 编译被禁用:

技术细节

  • JIT 禁用: 由于 HarmonyOS 上 mmap(PROT_EXEC) 失败,构建时使用 -DLUAJIT_DISABLE_JIT
  • 性能影响: 虽然 JIT 被禁用,但 LuaJIT 仍提供比标准 Lua 5.1 更好的性能
  • API 兼容性: 完全兼容 Lua 5.1 API,所有 Lua 5.1 插件可用
  • 构建配置: 通过修改 src/nvim/CMakeLists.txt 确保优先使用 LuaJIT

Lua 5.4 兼容层(harmonyos-lua54 分支)

Lua 5.4 分支包含完整的 Lua 5.1 兼容层,确保第三方插件无需修改即可工作:

核心特性

  • 重新实现 Lua 5.2+ 中移除的 API:table.maxnloadstringmodule
  • 提供 bit32 库完整实现
  • 自动加载兼容层模块 (vim.compat)
  • 支持 Lua 5.2+ 的 goto 语句等现代特性

兼容性保证:✅ 所有 Lua 5.1 API 在 Lua 5.4 中可用,第三方插件无需修改即可工作。

构建脚本说明

  • build-ohos-with-log.sh - 主构建脚本,包含完整日志记录
  • harmonyos.toolchain.cmake - HarmonyOS 工具链配置
  • src/gen/static_bridge.sh - 静态 Lua 解释器桥接脚本

已知问题和解决方案

问题 症状 解决方案
TTY 权限被拒绝 uv_tty_set_mode 返回 UV_EACCES 修改 libuv 跳过 fd 复制
MessagePack 解析失败 unpack() 返回 "trailing data" 错误 实现动态数据大小检测
Lua 模块加载失败 vim.gvim.F 等字段为 nil 使用静态解释器和预加载机制
帮助文档生成失败 "Operation not permitted" 错误 手动生成或跳过此步骤
二进制文件执行失败 "Operation not permitted" 错误 使用 binary-sign-tool 手动签名
ShaDa文件写入错误 E137: ShaDa file is not writable 禁用ShaDa功能或清理临时文件
LuaJIT JIT编译失败 mmap(PROT_EXEC) 失败 构建时禁用JIT(-DLUAJIT_DISABLE_JIT

详细文档


详细构建说明

环境要求

  • 操作系统: HarmonyOS HongMeng Kernel 1.11.0 或更高版本
  • IDE: CodeArts IDE
  • 架构: aarch64 (ARM64)
  • 编译器: BiSheng Clang 15.0.4(鸿蒙官方编译器, CodeArts IDE自带)
  • 构建工具:
    • CMake ≥ 3.16
    • Ninja 构建系统
    • Git、Curl、Tar 等基础工具

构建过程说明

  1. 依赖构建 (harmonyos-deps/build-deps-harmonyos.sh)

    • 下载所有依赖源码
    • 应用 HarmonyOS 特定补丁
    • 编译为静态库(避免动态加载限制)
    • 安装到 harmonyos-deps/build/ 目录
  2. Neovim构建 (build-ohos-with-log.sh)

    • 检测 HarmonyOS 系统并设置编译选项
    • 使用静态 Lua 解释器进行代码生成
    • 链接所有依赖静态库
    • 生成签名的可执行文件

手动签名说明(可选)

如果构建过程中自动签名失败,或需要在CodeArts IDE中手动签名,可以使用以下命令:

# 手动签名二进制文件(自签名)
binary-sign-tool sign -inFile build/bin/nvim -outFile build/bin/nvim -selfSign 1

# 验证签名
binary-sign-tool verify -inFile build/bin/nvim

CodeArts IDE中手动签名步骤

  1. 在CodeArts IDE中打开终端
  2. 导航到项目目录:cd /path/to/neovim-harmonyos
  3. 执行签名命令
  4. 签名后即可在本机执行已签名的二进制命令

注意事项

  • 自签名仅用于开发和测试环境
  • 生产环境建议使用正式签名证书
  • 签名失败可能导致"Operation not permitted"错误

运行说明

项目提供 run-nvim.sh 脚本自动配置环境变量:

推荐使用脚本运行

# 使用脚本运行(推荐)- 已正确配置环境变量和终端兼容性
./run-nvim.sh

备用运行方式: 如果直接运行遇到终端控制问题(如光标无法控制),建议使用以下方式:

# 使用sh方式运行(解决zsh终端检测问题)
sh -c './build/bin/nvim'

# 或手动设置环境变量后使用sh方式
export VIMRUNTIME=$(pwd)/runtime
export LUA_PATH="$(pwd)/runtime/lua/?.lua;$(pwd)/runtime/lua/?/init.lua;;"
export LUA_CPATH=";;"
sh -c './build/bin/nvim'

终端兼容性说明

  • 在HarmonyOS上,zsh的终端检测可能与Neovim不完全兼容
  • 使用sh方式可以避免终端检测问题
  • run-nvim.sh脚本已处理这些兼容性问题

构建产物:

  • build/bin/nvim - HarmonyOS 版本的 Neovim 二进制文件
  • harmonyos-deps/build/ - 所有依赖库和头文件
  • logs/ - 构建日志文件
  • run-nvim.sh - 运行脚本(已包含环境配置)

在鸿蒙PC上长期使用

为了在鸿蒙PC上长期使用Neovim,建议将构建产物安装到用户目录~/.local中,这样可以在任何终端中直接使用nvim命令。

1. 查看当前~/.local目录结构

ls -l ~/.local

典型输出:

drwxrws--x - 20001006 19 Dec 02:15 bin
drwxrws--x - 20001006 17 Dec 22:45 opt
drwxrws--x - 20001006 18 Dec 01:36 share
drwxrws--x - 20001006  9 Dec 22:46 state

2. 安装到~/.local目录

# 创建必要的目录(如果不存在)
mkdir -p ~/.local/bin
mkdir -p ~/.local/share/nvim
mkdir -p ~/.local/state/nvim
mkdir -p ~/.local/opt/nvim

# 复制nvim二进制文件到bin目录
cp build/bin/nvim ~/.local/bin/

# 如果需要,对复制的二进制文件进行手动签名
# binary-sign-tool sign -inFile ~/.local/bin/nvim -outFile ~/.local/bin/nvim -selfSign 1

# 复制runtime文件到share目录
cp -r runtime ~/.local/share/nvim/

# 复制依赖库到opt目录(如果需要)
cp -r harmonyos-deps/build ~/.local/opt/nvim/deps

# 设置可执行权限
chmod +x ~/.local/bin/nvim

3. 配置环境变量

将以下内容添加到~/.zshrc中:

# Neovim HarmonyOS 环境配置
export XDG_CONFIG_HOME="$HOME/.config"
export PATH="$HOME/.local/bin:$PATH"
export VIMRUNTIME="$HOME/.local/share/nvim/runtime"
export NVIM_LOG_FILE="$HOME/.local/state/nvim/nvim.log"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.local/state"

# Lua模块搜索路径(如果环境变量没展开的话,可以改成绝对路径, 可能是lua兼容性问题)
export LUA_PATH="$HOME/.local/share/nvim/runtime/lua/?.lua;$HOME/.local/share/nvim/runtime/lua/?/init.lua;;"
export LUA_CPATH=";;"

# 依赖库路径(如果需要)
export LD_LIBRARY_PATH="$HOME/.local/opt/nvim/deps/lib:$LD_LIBRARY_PATH"

4. 应用配置并测试

# 重新加载shell配置
source  ~/.zshrc

# 测试安装
which nvim        # 应该显示 ~/.local/bin/nvim
nvim --version    # 应该显示HarmonyOS版本信息

# 创建运行脚本
cat > ~/.local/bin/run-nvim << 'EOF'
#!/bin/sh
export VIMRUNTIME="$HOME/.local/share/nvim/runtime"
export LUA_PATH="$VIMRUNTIME/lua/?.lua;$VIMRUNTIME/lua/?/init.lua;;"
export LUA_CPATH=";;"
exec nvim "$@"
EOF
chmod +x ~/.local/bin/run-nvim

5. 创建配置文件(可选)

# 创建配置目录
mkdir -p ~/.config/nvim

# 创建基本init.lua配置
cat > ~/.config/nvim/init.lua << 'EOF'
-- HarmonyOS Neovim 基本配置
vim.opt.number = true          -- 显示行号
vim.opt.relativenumber = true  -- 相对行号
vim.opt.tabstop = 4           -- Tab宽度
vim.opt.shiftwidth = 4        -- 缩进宽度
vim.opt.expandtab = true      -- 使用空格代替Tab
vim.opt.shada = ""            -- 禁用ShaDa功能,避免HarmonyOS上文件写入错误

-- 插件管理器配置(如果需要)
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable",
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

-- 更多配置...
EOF

6. 使用说明

安装完成后,您可以在任何终端中:

  • 直接运行nvim命令启动编辑器
  • 使用run-nvim脚本(包含环境变量配置)
  • 配置文件位于~/.config/nvim/init.lua

重要提示

  • 主分支使用 LuaJIT(JIT禁用版本),性能优于标准Lua 5.1
  • 配置文件中的vim.opt.shada = ""用于禁用ShaDa功能,避免HarmonyOS上文件写入错误
  • 如果遇到ShaDa错误,请检查配置文件是否正确设置了shada选项
  • 终端兼容性建议
    • 推荐使用提供的run-nvim.sh脚本启动Neovim,该脚本已正确配置环境变量
    • 如果直接运行nvim命令遇到终端控制问题(如光标无法控制),建议使用以下方式:
      # 使用sh方式运行
      sh -c 'nvim'
      
      # 或使用脚本
      ./run-nvim.sh
      
    • 在zsh中直接运行nvim可能遇到终端检测问题,这是因为HarmonyOS上zsh的终端检测与Neovim不完全兼容

7. 更新和卸载

更新

cd /path/to/neovim-harmonyos
git pull
./build-ohos-with-log.sh
cp build/bin/nvim ~/.local/bin/

卸载

rm ~/.local/bin/nvim
rm ~/.local/bin/run-nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.local/opt/nvim/deps
# 从.bashrc/.zshrc中移除相关环境变量

Coverity Scan analysis Packages Debian CI Downloads

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the Introduction wiki page and Roadmap for more information.

Features

See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!

Install from package

Pre-built packages for Windows, macOS, and Linux are found on the Releases page.

Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!

Install from source

See BUILD.md and supported platforms for details.

The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.

make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

To install to a non-default location:

make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install

CMake hints for inspecting the build:

  • cmake --build build --target help lists all build targets.
  • build/CMakeCache.txt (or cmake -LAH build/) contains the resolved values of all CMake variables.
  • build/compile_commands.json shows the full compiler invocations for each translation unit.

Transitioning from Vim

See :help nvim-from-vim for instructions.

Project layout

├─ cmake/           CMake utils
├─ cmake.config/    CMake defines
├─ cmake.deps/      subproject to fetch and build dependencies (optional)
├─ runtime/         plugins and docs
├─ src/nvim/        application source code (see src/nvim/README.md)
│  ├─ api/          API subsystem
│  ├─ eval/         Vimscript subsystem
│  ├─ event/        event-loop subsystem
│  ├─ generators/   code generation (pre-compilation)
│  ├─ lib/          generic data structures
│  ├─ lua/          Lua subsystem
│  ├─ msgpack_rpc/  RPC subsystem
│  ├─ os/           low-level platform code
│  └─ tui/          built-in UI
└─ test/            tests (see test/README.md)

License

Neovim contributions since b17d96 are licensed under the Apache 2.0 license, except for contributions copied from Vim (identified by the vim-patch token). See LICENSE for details.

Vim is Charityware.  You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda.  Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:

        https://iccf-holland.org/
        https://www.vim.org/iccf/
        https://www.iccf.nl/

You can also sponsor the development of Vim.  Vim sponsors can vote for
features.  The money goes to Uganda anyway.